1. Giới thiệu
Lần cập nhật gần đây nhất: ngày 18 tháng 10 năm 2022
Bạn chuẩn bị trò chơi của mình cho Google Play Games trên máy tính như thế nào?
Google Play Games giúp bạn dễ dàng đưa trò chơi di động của mình lên máy tính chạy Windows. Điều này có nghĩa là bạn có thể tăng mức độ tương tác của người chơi và đối tượng của mình mà không cần phải thiết kế lại trò chơi hoặc thiết kế lại mô hình kinh doanh. Bạn vẫn cần phải thay đổi một số điểm để mang đến cho người chơi mới trên máy tính trải nghiệm tốt nhất có thể.
Kiến thức bạn sẽ học được
Lớp học lập trình này bao gồm các phần cơ bản trong danh sách kiểm tra yêu cầu để bắt đầu phát triển trò chơi và giúp bạn chuẩn bị trò chơi Unity của riêng mình cho Google Play Games trên máy tính. Không bao gồm các công cụ tích hợp chuyên sâu hơn, chẳng hạn như tính năng Đăng nhập của Play Games và API Tính toàn vẹn của Play.
- Cách tạo cho kiến trúc x86 từ Unity.
- Cách kiểm thử và triển khai trình mô phỏng Google Play Games.
- Cách sửa đổi giao diện người dùng để giao diện trông đẹp mắt trên máy tính.
- Cách phát hiện xem bạn có đang chạy trong trình mô phỏng Google Play Games hay không và điều chỉnh trò chơi cho phù hợp.
Bạn cần có
- Cài đặt Unity LTS 2020 (lớp học lập trình này được xây dựng bằng 2020.3.30f1).
- Trình mô phỏng Google Play Games.
2. Bắt đầu thiết lập
Mở hoặc tạo dự án mới
- Tạo một dự án mới bằng 2D Platformer Microgame hoặc mở dự án của riêng bạn.
- Trong dự án, hãy chọn File -> (Tệp ->) Build Settings (Cài đặt bản dựng) và kiểm tra để đảm bảo bạn đã thiết lập để xây dựng cho Android.
3. Chuẩn bị trình mô phỏng Google Play Games
Hãy bắt đầu bằng cách tải trình mô phỏng xuống.
Sau khi cài đặt, bạn sẽ thấy màn hình Android trong một cửa sổ:
Đây là một môi trường Android có đầy đủ tính năng, có đầy đủ tính năng và có hiệu suất cao phù hợp để phát triển trò chơi. Thiết bị sẽ xuất hiện trong Cầu gỡ lỗi Android (adb) dưới dạng một thiết bị trên localhost:
❯ adb devices List of devices attached localhost:6520 device
Bạn cần có phiên bản adb mới nhất để phát hiện trình mô phỏng. Phiên bản đi kèm với Android Studio hoạt động được, nhưng adb khi đi kèm với Unity có thể không hoạt động. Một phiên bản tương thích đi kèm với trình mô phỏng và bạn có thể tìm thấy phiên bản đó tại C:\Program Files\Google\Play Games Developer Emulator\current\emulator
. Để có trải nghiệm tốt nhất cho nhà phát triển, bạn nên cài đặt và sử dụng Android Studio để quản lý SDK Android của mình.
Nếu trình mô phỏng ngắt kết nối khỏi adb, hãy kết nối lại trình mô phỏng từ dòng lệnh như sau:
adb connect localhost:6520
4. Định cấu hình Unity để tạo và triển khai trực tiếp cho trình mô phỏng (Không bắt buộc)
Phiên bản adb đi kèm với Unity có thể không tương thích với trình mô phỏng. Để đảm bảo, hãy chọn File -> (Tệp ->) Build Settings (Cài đặt bản dựng) rồi kiểm tra hộp thoại Run Device (Chạy thiết bị) để xem liệu nó có trong danh sách hay không.
Tuỳ thuộc vào dự án, quy trình xây dựng và mức độ thoải mái, bạn có thể chọn định cấu hình cho Unity để triển khai trực tiếp cho trình mô phỏng Google Play Games, hoặc tạo một APK rồi triển khai theo cách thủ công bằng adb install
. Để triển khai tính năng theo cách thủ công, bạn không cần thực hiện nhiều thay đổi nào, nhưng có thể làm chậm chu kỳ lặp lại.
Triển khai trực tiếp cho trình mô phỏng bằng 2 bước sau:
- Định cấu hình Unity để sử dụng một SDK Unity khác, lý tưởng là SDK do Android Studio cài đặt.
- Cập nhật phiên bản Công cụ xây dựng để khắc phục lỗi trong Unity.
Vì phiên bản SDK Android đi kèm với Unity có thể sẽ không phát hiện được trình mô phỏng, nên bạn cần sử dụng Android Studio để cài đặt một SDK mới hơn.
- Mở Android Studio rồi chọn Edit (Chỉnh sửa) -> Tuỳ chọn -> Công cụ bên ngoài.
- Bỏ đánh dấu
Android SDK Tools Installed with Unity
và cung cấp đường dẫn đến bản cài đặt Android Studio của bạn (thường làAppData/Local/Android/sdk
). Không cần để lựa chọnAndroid NDK
.
khi làm mới các thiết bị đã kết nối, bạn sẽ thấy Google HPE device (localhost:6520)
xuất hiện trong cửa sổ bản dựng:
Tuỳ thuộc vào trạng thái của lỗi này và phiên bản Unity, có thể bạn cũng cần thay đổi phiên bản công cụ xây dựng. Để thực hiện việc này, hãy kiểm tra để đảm bảo bạn đang tạo mainTemplate.gradle
và launcherTemplate.gradle
.
- Mở cửa sổ Project Settings (Cài đặt dự án) vào phần Player Settings (Cài đặt trình phát) rồi tìm phần
Publishing Settings
. - Cuộn xuống các tuỳ chọn Build (Tạo) rồi chọn "Custom Main Gradle Template" (Mẫu Gradle chính tuỳ chỉnh) và "Mẫu Gradle cho trình chạy tuỳ chỉnh", sẽ tạo cả hai tệp Gradle trong
Assets\Plugins\Android\
.
- Thay thế mọi bản sao của chuỗi
**BUILDTOOLS**
bằng30.0.0
. Trong cả hai tệp, phần mã bây giờ sẽ đọc:
android { compileSdkVersion **APIVERSION** buildToolsVersion '30.0.0'
5. Triển khai cho Chromebook (không bắt buộc)
Bạn có thể bắt đầu phát triển trò chơi cho Google Play Games mà không cần truy cập vào Trình mô phỏng Google Play Games bằng cách sử dụng một thiết bị ChromeOS. Giống như Google Play Games trên máy tính, Chromebook có bàn phím và chuột, màn hình lớn và có cấu hình x86. Chúng ta sẽ sử dụng trình bổ trợ Unity Android Logcat cho Chromebook.
- Mở Package Manager (Trình quản lý gói) rồi tìm
Android Logcat
trong phầnUnity Registry
.
Bạn cũng cần định cấu hình Chromebook để phát triển Android. Bắt đầu bằng cách bật Linux.
- Chọn Cài đặt -> Nhà phát triển -> Linux.
Sau đó, bật tuỳ chọn gỡ lỗi ADB.
- Chọn Cài đặt -> Nhà phát triển -> Môi trường phát triển Linux -> Phát triển ứng dụng Android -> Bật tuỳ chọn gỡ lỗi ADB.
Bạn cũng sẽ muốn lấy địa chỉ IP của Chromebook. Cách dễ nhất để làm việc này là
- Nhấp vào biểu tượng Thông tin mạng để nhận địa chỉ IP của Chromebook.
- Chọn Window -> (Cửa sổ ->) Phân tích -> Android Logcat để mở cửa sổ Android Logcat.
- Mở danh sách thiết bị. Thao tác này có thể đọc
No Device
nếu hiện không có thiết bị nào được kết nối.
- Nhấp vào Các tuỳ chọn kết nối khác rồi nhập địa chỉ IP của Chromebook.
- Nhấp vào Kết nối. Bạn sẽ thấy cửa sổ Success (Thành công):
Giờ đây, Chromebook của bạn sẽ xuất hiện trong danh sách Run Device (Thiết bị chạy) của Unity (trước tiên, bạn có thể phải làm mới màn hình):
Giờ đây, bạn có thể triển khai trò chơi trên Chromebook cũng như bắt đầu kiểm thử và phát triển trên phần cứng tương tự như máy tính.
6. Triển khai bản thử nghiệm
Google Play Games yêu cầu bạn triển khai phiên bản x86 của trò chơi. Đây là một phần trong cách trò chơi đạt điểm chuẩn hiệu suất trên máy tính. Tất cả biến thể LTS của Unity đều có thể tạo bản dựng Android tương thích với x86 và x86-64 (có nhãn "Chrome OS") và Unity phiên bản 2018 trở xuống có thể tạo bản dựng x86. Để mở khoá các kiến trúc này, trước tiên, bạn cần chuyển sang phần phụ trợ tập lệnh IL2CPP. Có thể bạn đã thực hiện việc này trong phiên bản chính thức để có thể hỗ trợ arm64.
- Chọn File -> (Tệp ->) Build Settings (Cài đặt bản dựng) để mở cửa sổ Build Settings (Cài đặt bản dựng), sau đó nhấp vào Player Settings (Cài đặt trình phát).
- Chuyển đến phần Other Settings (Chế độ cài đặt khác) rồi chuyển
Scripting Backend
của bạn thànhIL2CPP
.
Bạn cũng nên bật tính năng hỗ trợ x86 hoặc x86-64. Để bắt đầu chơi trên nền tảng Google Play Games, bạn chỉ cần hỗ trợ x86, mặc dù bạn nên dùng x86-64.
Phiên bản gói Unity của thư viện Frame Pacing (Tốc độ khung hình) theo Unity cũng không tương thích với Google Play Games và khiến trò chơi của bạn gặp sự cố khi khởi chạy.
- Để tắt Frame Pacing (Tốc độ khung hình) trong cửa sổ Player Settings (Cài đặt trình phát), hãy mở phần Resolution and Presentation (Độ phân giải và trình bày) rồi bỏ chọn Optimized Frame Pacing (Tốc độ khung hình được tối ưu hoá).
Giờ thì bạn đã sẵn sàng xây dựng!
- Mở lại cửa sổ Build Settings (Cài đặt bản dựng) rồi nhấp vào Build And Run (Tạo và chạy). Trò chơi của bạn sẽ xuất hiện trong cửa sổ trình mô phỏng.
Nếu bạn không thể triển khai trò chơi, hãy kiểm tra xem "Thiết bị Google HPE (localhost:6520)" xuất hiện trong mục "Chạy thiết bị" của bạn danh sách. Nếu thiếu thông tin này, hãy đảm bảo rằng HPE_Dev đang chạy và bạn có thể nhìn thấy màn hình chính của Android. Nếu thiết bị vẫn không xuất hiện trong danh sách thiết bị của bạn, hãy chạy adb connect localhost:6520
bằng đúng adb.exe
bạn đang sử dụng. Nếu bạn sử dụng trình bổ trợ Android Logcat Unity, hãy chọn Tools -> (Công cụ ->) Mở Terminal để mở cửa sổ dòng lệnh đến thư mục có cùng adb.exe
mà Unity đang sử dụng.
Mở cửa sổ lệnh Terminal" được đánh dấu" style="chiều rộng: 624,00px" src="img/9101ce3c95fb1aa2.png" kích thước="(max-width: 840px) 100vw, 856px">
7. Điều chỉnh trò chơi cho phù hợp với máy tính
Khi có thể, hãy cố gắng thực hiện mọi thay đổi cho trò chơi của bạn dựa trên các chỉ số không phụ thuộc vào nền tảng hoặc sự hiện diện của một số tính năng. Ví dụ: Người chơi trên Android có thể kết nối chuột và bàn phím hoặc cắm màn hình. Vì vậy, việc thay đổi lược đồ điều khiển hoặc các phần tử HUD theo cấu hình thiết bị sẽ giúp bạn tận dụng Google Play Games trên máy tính hoạt động trên tất cả nền tảng được hỗ trợ.
Nếu bạn cần thay đổi logic dựa trên việc người chơi có đang ở trong Google Play Games hay ChromeOS hay không, thì tập lệnh này sẽ giúp bạn phát hiện việc này bằng cách kiểm tra tính năng của hệ thống HPE_EXPERIENCE
:
using UnityEngine;
public class GoogleDeviceUtilities
{
#if UNITY_ANDROID && !UNITY_EDITOR
private static AndroidJavaObject PackageManager
{
get
{
var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
return currentActivity.Call<AndroidJavaObject>("getPackageManager");
}
}
public static bool IsChromeOS => PackageManager.Call<bool>("hasSystemFeature", "org.chromium.arc");
public static bool IsGooglePlayGames =>
PackageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");
public static bool HasKeyboard
{
get
{
var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
var resources = currentActivity.Call<AndroidJavaObject>("getResources");
var configuration = resources.Call<AndroidJavaObject>("getConfiguration");
var keyboard = configuration.Get<int>("keyboard");
return keyboard == 2; // Configuration.KEYBOARD_QWERTY
}
}
#else
public static bool IsChromeOS => false;
public static bool IsGooglePlayGames => false;
public static bool HasKeyboard => true;
#endif
}
Máy tính có màn hình lớn hơn điện thoại Android thông thường. Nếu có thể, bạn nên HUD không chiếm quá 20% không gian màn hình. Vì nhiều trò chơi dành cho thiết bị di động sử dụng "Điều chỉnh tỷ lệ theo kích thước màn hình", nên hãy thay đổi thành "Kích thước thực tế không đổi" hoặc "Kích thước pixel không đổi" có thể là bước đầu tiên để đạt được mục tiêu này.
Bạn cũng nên linh động đặt chế độ cài đặt chất lượng bằng lệnh QualitySettings.SetQualityLevel
trong thời gian chạy nếu phát hiện thấy mình đang chạy trong Google Play Games. Trình mô phỏng Google Play Games sử dụng ANGLE để đưa ra các lệnh DirectX hoặc Vulkan gốc từ OpenGL Unity phát ra, nhờ đó, bạn có thể đạt được độ trung thực đồ hoạ cao hơn so với bản dựng trò chơi dành cho thiết bị di động.
8. Xử lý đầu vào
Thông tin vận chuyển trò chơi trên Google Play Games phải được xây dựng dựa trên thao tác đầu vào bằng chuột và bàn phím. Bạn sẽ cần lên kế hoạch về cách tương tác với trò chơi bằng chuột và bàn phím. Vì vậy, hãy dành thời gian ngay để có được gói Unity Input SDK. Nếu bạn không thấy nội dung tải xuống trên trang đó, hãy đảm bảo rằng bạn đã đăng nhập bằng tài khoản trong nhóm play-mp-libs.
Nhằm mục đích thử nghiệm, nhiều trò chơi xây dựng các chế độ điều khiển cơ bản bằng chuột và bàn phím để phát triển trong trình chỉnh sửa. Nếu được, bạn nên bật những chế độ này khi đang chạy trên thiết bị ChromeOS hoặc trong trình mô phỏng Google Play Games.
Theo mặc định, Google Play Games và ChromeOS chuyển đổi thao tác đầu vào bằng chuột thành thao tác chạm mô phỏng. Nếu bạn sử dụng Input.GetTouch
và Input.touchCount
, trò chơi của bạn sẽ tiếp tục hoạt động như dự kiến. Nếu dựa vào phương thức nhập bằng nhiều điểm chạm, chẳng hạn như dùng 2 ngón tay cái hoặc chụm để thu phóng, thì bạn cần liên kết hành động này với thao tác nhấn phím. Bạn cũng nên liên kết các hành động trong trò chơi với thao tác nhấn phím, chẳng hạn như nhấn i để mở khoảng không quảng cáo, Escape để đóng hộp thoại và Enter để gửi tin nhắn trong trò chơi.
Trò chơi đi cảnh 2D Microgame sử dụng các mũi tên để di chuyển và không gian để nhảy. Nếu bạn đang sử dụng trò chơi của riêng mình, hãy đảm bảo bạn có các liên kết phím ưu tiên cho bước tiếp theo.
9. Tích hợp SDK đầu vào
Sau khi thiết lập các chế độ điều khiển chuột và bàn phím, bạn cần thêm tính năng hỗ trợ SDK Đầu vào . Điều này giúp người chơi khám phá đầu vào trên máy tính của bạn qua một cửa sổ bật lên tiện dụng:
- Sau khi nhập SDK vào dự án, hãy tạo một tệp có tên
InputMappingProviderBehaviour.cs
rồi thêm những nội dung sau:
using System.Collections.Generic; using Google.Play.InputMapping; using UnityEngine; using Input = Google.Play.InputMapping.Input; public class InputMappingProviderBehaviour : MonoBehaviour { private void Start() { Input.GetInputMappingClient().RegisterInputMappingProvider(new MyInputMappingProvider()); } private class MyInputMappingProvider : InputMappingProvider { public InputMap OnProvideInputMap() { return new InputMap { InputGroups = new List<InputGroup> { }, MouseSettings = new MouseSettings { InvertMouseMovement = false, AllowMouseSensitivityAdjustment = false } }; } } private enum ActionIds { } }
- Bây giờ, hãy điền danh sách các thao tác bạn đang sử dụng trong trò chơi vào
ActionIds
. Đối với trò chơi đi cảnh 2D, các hành động là Trái, Phải và Nhảy:
private enum ActionIds { Left, Right, Jump }
- Trong
OnProvideInputMap
, hãy tạo mộtInputAction
cho mỗi thao tác. Để làm được điều này, bạn cần có tên hành động, dữ liệu đầu vào, sau đó là các nút chuột hoặc mã phím được liên kết với hành động đó. Đối với trò chơi mẫu:
var leftAction = new InputAction { ActionLabel = "Walk Left", UniqueId = (int)ActionIds.Left, InputControls = new InputControls { AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_DPAD_LEFT } } }; var rightAction = new InputAction { ActionLabel = "Walk Right", UniqueId = (int)ActionIds.Right, InputControls = new InputControls { AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_DPAD_RIGHT } } }; var jumpAction = new InputAction { ActionLabel = "Jump", UniqueId = (int)ActionIds.Jump, InputControls = new InputControls { AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE } } };
- Tiếp theo, hãy đưa những hành động đầu vào này vào các nhóm.
Đối với trò chơi nhỏ, chúng tôi chỉ có một nhóm, nhưng bạn có thể tạo bao nhiêu nhóm tuỳ ý để giúp người chơi tìm thấy hành động họ cần. Thêm đoạn mã này vào OnProvideInputMap
:
var movementInputGroup = new InputGroup { GroupLabel = "Movement", InputActions = new List<InputAction> { leftAction, rightAction, jumpAction } };
- Thêm tất cả nhóm đầu vào mà bạn đã tạo vào bản đồ đầu vào. Sửa đổi câu lệnh trả về trong
OnProvideInputMap
để đọc:
return new InputMap { InputGroups = new List<InputGroup> { movementInputGroup }, MouseSettings = new MouseSettings { InvertMouseMovement = false, AllowMouseSensitivityAdjustment = false } };
- Cuối cùng, thêm tập lệnh bạn đã tạo vào trò chơi của mình:
- Khi bạn triển khai lại trò chơi, hãy nhấn phím
Shift+Tab
để mở lớp phủ trong trò chơi.
- Nhấp vào Chế độ kiểm soát để xem các chế độ kiểm soát mà bạn đã định cấu hình.
10. Xoá chế độ xem web được nhúng
Để mang đến trải nghiệm chất lượng cao cho người chơi, bạn nên xoá các chế độ xem web được nhúng. Thông thường, bạn nên sử dụng các chế độ xem web được nhúng để hiển thị các mục như Chính sách quyền riêng tư hoặc Điều khoản dịch vụ. Mặc dù các trò chơi này hoạt động trong Google Play Games, nhưng chúng xuất hiện trong "thiết bị di động" được nhúng trình duyệt thay vì trình duyệt ưu tiên của người chơi trên máy tính và có thể gây nhầm lẫn cho người chơi trên máy tính. Do đó, trong Unity, nếu bạn đang sử dụng bất kỳ tiện ích nào để hiển thị trình duyệt được nhúng, hãy quay lại sử dụng Application.OpenURL(url)
.
11. Quyền và tính năng
Có một số tính năng và quyền trên Android không được hỗ trợ trong Google Play Games. Nguyên tắc chung là bản dựng trên máy tính của bạn không được bật lên hộp thoại cấp quyền. Giờ thì bạn đã có sẵn bản dựng, hãy thực hiện một lượt cài đặt mới thông thường và ghi lại mọi hộp thoại bạn thấy để thêm vào "công việc" của mình để gửi trò chơi của bạn.
Một số trò chơi viết bằng Unity yêu cầu quyền bằng API Android.Permission. Bạn nên gói các thông tin này trong các bước kiểm tra if (GoogleDeviceUtilities.IsGooglePlayGames)
và chuyển thẳng đến logic lỗi (nếu có).
12. Tối ưu hoá cho máy tính
Google Play Games có một số điểm khác biệt khi so sánh với một chiếc điện thoại Android thông thường và bạn nên định cấu hình trò chơi của mình cho phù hợp.
Chuyển sang DXT để nén kết cấu. Các định dạng hoạ tiết phổ biến của Android như ETC được giải mã trong bộ nhớ trong thời gian chạy nếu không thể truyền trực tiếp tới GPU của người chơi. ASTC cung cấp cho bạn khả năng tương thích tốt nhất trên máy tính để bàn, mặc dù bạn cần phải sử dụng công cụ phân tích GPU trên máy tính để xác minh hành vi dự kiến cho trò chơi của mình.
Do hiện đang chạy trên GPU máy tính để bàn nên có thể bạn cũng muốn tăng chất lượng đồ hoạ. Bạn có thể điều chỉnh trực tiếp trong phần Cài đặt dự án trong mục Chất lượng
13. Xin chúc mừng
Bạn có mọi thứ sẵn sàng để bắt đầu phát triển trò chơi cho Google Play Games. Bạn có thể bắt đầu thử nghiệm và lặp lại trên trò chơi của mình. Hãy nhớ rằng mặc dù có thể giữ nguyên cơ sở mã, nhưng bạn nên điều chỉnh trò chơi của mình sao cho giống với một trò chơi gốc trên máy tính.
Tiếp theo là gì?
Bạn cần hoàn thành thêm một số thao tác để đưa trò chơi lên Google Play Games:
- Hãy xem phần Bắt đầu nhanh để biết thông tin mới nhất.
- Nâng cấp lên tính năng Đăng nhập bằng Dịch vụ trò chơi của Play phiên bản 2 để tự động đăng nhập người chơi khi phát hành ứng dụng và giúp đáp ứng các yêu cầu về tính liên tục.
- Triển khai API Tính toàn vẹn của Play để đảm bảo trải nghiệm trên máy tính được an toàn như trên thiết bị di động.
Cuối cùng, phần lớn công việc bạn đã thực hiện cho đến thời điểm này để hỗ trợ Google Play Games cũng giúp bạn bắt đầu sử dụng ChromeOS và bạn nên cân nhắc việc hỗ trợ nền tảng đó cùng với máy tính.