Các Android Game SDK (https://android-developers.googleblog.com/2019/12/android-game-sdk.html) là một bộ mới của thư viện từ Google, được thiết kế để giúp đỡ tạo điều kiện cho phát triển trò chơi tốt hơn. Hoặc ít nhất, đó là những gì nó hứa hẹn sẽ có trong tương lai không xa. Ngay bây giờ, SDK trò chơi Android trên thực tế chỉ là một thư viện: Thư viện tạo khung Android , rõ ràng còn được gọi là Thư Swappy.
Thông báo được đưa ra vào đầu tháng 12 năm 2019 và có thể được coi là bao gồm quá hạn dài. Hy vọng, các lần lặp lại trong tương lai sẽ giúp hợp lý hóa quy trình phát triển trò chơi, cho phép các nhà phát triển nhanh chóng thiết kế và phát hành các trò chơi giải đố, platformer hoặc thậm chí các tựa game 3D mà không cần dựa vào các công cụ của bên thứ ba như Unity và Unreal.
Bài đăng này sẽ được cập nhật thường xuyên khi các yếu tố mới được thêm vào SDK trò chơi Android, vì vậy hãy đánh dấu trang này và kiểm tra lại. Hiện tại, chúng tôi sẽ xem Thư viện tạo nhịp.
Thư viện tạo nhịp độ hoạt động như thế nào
Thư viện này được thiết kế để giúp các trò chơi duy trì tốc độ khung hình ổn định với độ trễ đầu vào tối thiểu. Nó thực hiện điều này bằng cách đồng bộ hóa vòng lặp kết xuất của trò chơi với hệ thống con và phần cứng hiển thị của hệ điều hành. Hệ thống con hiển thị nhằm giảm sự xé rách đôi khi có thể xảy ra khi phần cứng chuyển từ khung hình này sang khung hình khác giữa chừng thông qua một bản cập nhật. Nó thực hiện điều này bằng cách đệm các khung trước đó, phát hiện các lần gửi muộn và lặp lại hiển thị các khung trước đó để phát hiện khung muộn.
Từ Google
Tuy nhiên, điều này có thể cho phép không đồng bộ hóa dẫn đến thời gian hiển thị khung không nhất quán. Ví dụ: nếu một khung hình được hiển thị nhanh hơn, điều này có thể rút ngắn thời gian mà khung hình trước đó dành cho màn hình. Tuy nhiên, các khung hình sẽ mất quá nhiều thời gian để hiển thị, sau đó nó có thể được hiển thị cho một khung bổ sung.
Thư viện Tốc độ Khung giải quyết các vấn đề này bằng API Biên đạo múa của Android để đồng bộ hóa trò chơi với hệ thống con hiển thị. Nó đạt được điều này bằng cách sử dụng tiện ích mở rộng dấu thời gian trình bày trên API OpenGL và Vulkan, đảm bảo các khung được trình bày đúng thời điểm. Nó cũng sử dụng hàng rào đồng bộ hóa để ngăn chặn nhồi đệm. Nhiều tốc độ làm mới cũng được hỗ trợ, cho phép các nhà phát triển nhắm mục tiêu các loại thiết bị khác nhau – bao gồm màn hình 90Hz và 120Hz – và các tùy chọn tùy chỉnh. Thời gian trình bày khung được tự động điều chỉnh để chiếm phần cứng của thiết bị.
Cách sử dụng Thư viện tạo khung của SDK trò chơi Android
Nếu trò chơi của bạn sử dụng Vulkan trên OpenGL, thì bạn sẽ có thể sử dụng thư viện này. Để làm như vậy, trước tiên bạn sẽ cần tải xuống SDK trò chơi https://developer.android.com/games/sdk/ Android tại đây .
Để xem cách thức hoạt động của nó, bạn cũng có thể tải xuống mẫu Bouncy Ball tại đây https://android.googlesource.com/platform/frameworks/opt/gamesdk/+/refs/heads/master/samples/bouncyball để kiểm tra với OpenGL. Bạn có thể tìm thấy hướng dẫn cho Vulkan ở đây https://developer.android.com/games/sdk/frame-pacing/vulkan/ . Mở dự án, sau đó chạy ứng dụng để đảm bảo nó hoạt động.
Tiếp theo, liên kết dự án với thư viện. Đối với các thư viện tĩnh, hãy thực hiện việc này bằng cách thêm gamesdk / include vào trình biên dịch bao gồm các đường dẫn và swappy / swappyGL.h để tích hợp với OpenGL ES. Trong hầu hết các trường hợp, tệp tiêu đề sẽ chứa tất cả các chức năng cần thiết.
Cuối cùng, thêm đường dẫn sau vào đường dẫn thư viện liên kết của bạn
gamesdk / libs / architecture _API apiLevel _NDK ndkVersion _ stlVersion _Release
Tất nhiên, bạn sẽ trao đổi văn bản in đậm cho bộ xử lý / phiên bản NDK có liên quan, v.v.
Khởi tạo một phiên bản của Tốc độ khung hình Android bằng cách sử dụng JAVA
void SwappyGL_init (JNIEnv * env, tính hoạt động của jobject) ;
void SwappyGL_destroy () ;
Bây giờ các chức năng sau sẽ cho phép bạn định cấu hình khoảng thời gian trao đổi và thời gian làm mới CPP CHỌN TẤT CẢ javascript:void(null)
void SwappyGL_setSwapIntervalNS ( uint64_t exchange_ns) ; void SwappyGL_setFenceTimeoutNS ( uint64_t fence_timeout_ns) ; void SwappyGL_setUseAffinity ( bool tf) ;
Gọi chúng ngay lập tức sau khi bạn đã khởi tạo SwappyGL_init () , gần với thời điểm động cơ của bạn khởi chạy càng tốt. Truyền thời lượng của khung hình vào các hằng số SwappyGL_setSwapIntervalNS () bằng các hằng số SWAPPY_SWAP_60FPS , SWAPPY_SWAP_30FPS hoặc SWAPPY_SWAP_20FPS (nếu thích hợp).
Bây giờ thực hiện hoán đổi khung bằng bool SwappyGL_swap (hiển thị EGLDisplay, bề mặt EGLSurface) . Điều này bao bọc phương thức eglSwapBuffers () được sử dụng bởi Open GL ES, vì vậy bạn nên thay thế tất cả các phiên bản bằng phiên bản mới.
Bạn có thể kiểm tra xem Tốc độ khung hình đã được bật ở bất kỳ thời điểm nào bằng cách sử dụng bool SwappyGL_isEnables () .
Để biết hướng dẫn chi tiết hơn về cách sử dụng Thư viện tạo khung, hãy xem trang hướng dẫn dành cho nhà phát triển Android chính thức .https://developer.android.com/games/sdk/frame-pacing/opengl/
Sử dụng SDK trò chơi Android trong Unity
Thư viện tạo nhịp khung hình cũng được bao gồm trong phiên bản Unity 2019.2 trở lên. Chỉ cần chọn hộp kiểm Tạo khung tối ưu hóa trong Cài đặt Android và bạn sẽ tự động bật tốc độ khung hình mượt mà hơn cho các trò chơi của mình.
Một lần nữa, Unity làm cho cuộc sống dễ dàng hơn nhiều cho các nhà phát triển trò chơi!
Nhìn về phía trước
Cá nhân, tôi cảm thấy đã đến lúc Google dành cho trò chơi một số tình yêu, vì vậy tôi thấy đây là một điều rất tích cực. Bản thân Thư viện Tốc độ Khung hình cũng có thể là một bổ sung đáng hoan nghênh, đặc biệt đối với các trò chơi đòi hỏi khắt khe hơn muốn cung cấp tốc độ khung hình mượt mà. Tuy nhiên, đây chỉ là một khởi đầu nhỏ, vì vậy tôi đã nhanh chóng tìm kiếm một số thư viện hữu ích rộng rãi hơn để sớm ra mắt với SDK trò chơi Android.