使用 Google Play 游戏电脑版开发者模拟器进行开发

Google Play Games 电脑版开发者模拟器是一款为开发者设计的 Google Play Games 电脑版专用模拟器。不同于玩家体验,这款模拟器可让您安装和调试自己的软件包。您还可以模拟各种玩家配置(例如宽高比、鼠标模拟和图形后端),以帮助确保您的游戏在各种 PC 配置下都能按预期运行。

启动模拟器

安装后,您将看到“Google Play 游戏开发者模拟器”开始菜单选项,以及用于启动模拟器的桌面快捷方式。当您关闭窗口时,模拟器仍会驻留在系统任务栏中。

登录

系统会在您首次运行模拟器时要求您登录 Google 账号。登录时,请使用您打算用于开发工作的登录凭据。

如要退出账号,请右键点击系统任务栏图标,选择“Developer Options”,然后点击“Force sign out”。执行此操作后,模拟器会立即重启并要求您重新登录。

启动后,您会看到熟悉的 Android 主屏幕。在鼠标模拟模式下,系统会将点击鼠标左键的操作直接转换为屏幕点按操作。通过旁加载方式安装并用于开发的游戏会显示在应用列表中,您只需在桌面上点击并向上拖动(模拟手机或平板电脑上的向上滑动)即可打开应用列表。

除了转换鼠标操作之外,Google Play 游戏电脑版开发者模拟器还提供键盘快捷键来改进导航体验:

  • Ctrl + H:等同于按主屏幕按钮
  • Ctrl + B:等同于按返回按钮
  • F11Alt + Enter 键:切换全屏/窗口模式
  • Shift + Tab 键:打开 Google Play 游戏电脑版叠加层,包括输入 SDK 的当前按键映射

安装游戏

Google Play 游戏电脑版开发者模拟器使用 Android 调试桥 (adb) 来安装软件包。

adb 兼容性

adb 的当前版本与 Google Play 游戏电脑版开发者模拟器兼容。此外,当您安装模拟器时,兼容的版本也会安装到 C:\Program Files\Google\Play Games Developer Emulator\current\emulator 下。

为了按照这些说明操作,您的 $PATH 中应提供 adb。您可以使用 adb devices 命令验证 adb 是否已正确配置

adb devices
List of devices attached
localhost:6520  device

安装游戏

  • 启动 Google Play Games for PC Emulator
  • 在命令提示符中输入 adb devices。您应该会看到:

    adb devices
    List of devices attached
    localhost:6520 device
    
  • 问题排查:

    • 如果您收到错误消息,请验证您是否已遵循 adb 兼容性中的说明。
    • 如果您没有看到设备,请尝试通过端口 6520 重新连接:
    adb connect localhost:6520
    
  • 输入 adb install path\to\your\game.apk 以安装游戏。如果您已生成 Android App Bundle (aab),请参阅 bundletool 说明并改用 bundletool install-apks

  • 通过以下任一方式运行您的游戏:

    • 输入 adb shell monkey -p your.package.name 1 以运行游戏,并将 your.package.name 替换为您游戏的软件包名称。
    • 在 Google Play 游戏电脑版开发者模拟器中,点击相应图标以运行游戏。就像在 Android 手机上一样,您必须在主屏幕上“向上滑动”才能看到已安装游戏的列表。

调试游戏

与调试任何其他游戏一样,使用 Android 调试桥 (adb) 进行调试。模拟器显示为一部通过 localhost:6520 连接的设备。

adb logcat 会按照预期运行,就像运行帮助修饰或过滤 Logcat 输出的工具(包括 Android Studio)一样。

除了 adb 之外,还可以在 %LOCALAPPDATA%\Google\Play Games Developer Emulator\Logs 目录中访问日志。目录中最有用的是 AndroidSerial.log,它表示从模拟器启动的那一刻起 adb logcat 会回传的所有数据。

开发者设置

Google Play 游戏电脑版开发者模拟器注重开发者的效率,而非最终用户的体验。这意味着,您可以无阻碍地访问 Android 系统,包括使用标准 Android 启动器(而非 Google Play 游戏电脑版体验),还可以控制自动为玩家启用和停用的各项功能。

测试鼠标输入

在开发期间,Google Play 游戏电脑版开发者模拟器默认会使用触控模拟模式,而不是直接鼠标输入模式。您可以通过以下方式启用直接鼠标输入:右键点击系统任务栏图标,选择 Developer Options,然后选择 PC mode (KiwiMouse)

Google Play 游戏电脑版提供了两种鼠标模式:一种是可将鼠标点击转换为单次点按的模拟模式,另一种是可让游戏以原生方式处理鼠标操作并执行指针捕获的透传“PC 模式”。如需详细了解 Google Play 游戏电脑版中的鼠标输入,请参阅设置鼠标输入

在玩家客户端中,将以下代码添加到您的清单中可以停用模拟:

<manifest ...>
  <uses-feature
      android:name="android.hardware.type.pc"
      android:required="false" />
  ...
</manifest>

此功能标志在开发环境中没有任何作用。

测试宽高比

开发者模拟器以 16:9 的宽高比启动;这与玩家客户端不同,后者根据主要显示屏来决定宽高比。通过右键点击系统任务栏图标,选择 Developer Options,然后在 Display Ratio 部分中选择任意选项,即可测试游戏在不同玩家屏幕上的呈现效果。

配置宽高比的首选方法是使用 android:minAspectRatioandroid:maxAspectRatio

例如,竖屏游戏的宽高比为 9/160.5625,因此您可能要将最大宽高比设置为 1,以防止游戏画面的横向长度超过其纵向长度:

<activity android:maxAspectRatio="1">
 ...
</activity>

同样,横屏游戏的宽高比为 16/9 或大约 1.778,因此您可能要将最小宽高比设置为 1,以防止游戏画面的横向长度小于其纵向长度:

<activity android:minAspectRatio="1">
 ...
</activity>

要测试的内容

如果您的游戏清单中仅支持竖屏模式,您可以在下拉菜单中选择 9:16 (Portrait) 以查看其在玩家的 PC 上的显示效果。否则,请验证您的游戏能否在清单中支持的最宽和最窄横屏模式宽高比中正常运行;请谨记获得全面认证的必要条件,即您必须使用 16:9 (Default)(或 9:16 [Portrait],如果您的游戏为仅限竖屏)。

测试渲染后端

Google Play 游戏电脑版使用 ANGLE 作为兼容性层,以确保主机 PC 使用 DirectX 或 Vulkan 后端正确处理 OpenGL ES 调用。模拟器也直接支持 Vulkan,但不适用于 DirectX。该层还会将仅限移动设备的压缩纹理格式转换为 PC 兼容的纹理格式。通过右键点击系统任务栏图标并选择 Graphics Stack Override,您或许可将其设为系统的默认选项,或者强制开启或关闭 Vulkan 以执行兼容性测试。

要测试的内容

支持的纹理格式存在些许差异,在桌面设备上模拟各项移动版功能所需的步骤也略有不同。在对游戏进行性能分析和优化时,很有必要检查每个后端。

针对 PC 版游戏进行性能分析

由于模拟器与玩家客户端所用的技术相同,因此它的环境适合用来进行性能分析。

Perfetto 是一款用于分析 Android 性能的工具。您可以按照以下步骤收集和查看 Perfetto 跟踪记录:

  1. 在 PowerShell 提示符中,使用 adb 启动跟踪记录

    adb shell perfetto --time 10s gfx wm sched --out /data/misc/perfetto-traces/example.trace
    
    1. --time 标志指定要收集的跟踪记录的时长。在此示例中,跟踪记录为 10 秒。
    2. --time 标志后面的参数表示要跟踪的事件。在此示例中,gfx 表示图形、wm 表示窗口管理,sched 表示进程调度信息。这些是针对游戏进行性能分析的通用标志,并且提供了完整的参考
    3. --out 标志指定输出文件,该文件在下一步中将从模拟器拉取到宿主机上。
  2. 从主机拉取跟踪记录

    adb pull /data/misc/perfetto-traces/example.trace $HOME/Downloads/example.trace
    
  3. 在 Perfetto 界面中打开跟踪记录

    1. 打开 ui.perfetto.dev
    2. 从左上角的 Navigation 下选择 Open trace file
    3. 打开在上一步中下载的 example.trace 文件并转到 Downloads/ 目录。
  4. 在 Perfetto 界面中检查跟踪记录。一些提示:

    1. 每个进程都有自己的行,可以展开以显示该进程中的所有线程。如果您要针对某个游戏进行性能分析,其进程可能是第一行。
    2. 您可以通过按住 Control 并使用滚轮进行缩放。
    3. 使用 sched 事件时,每个线程都会有相应的行来显示该线程的状态是正在运行、可运行、正在休眠还是已屏蔽。
    4. 启用 gfx 等事件时,您可以看到不同线程进行的各种图形调用。您可以选择各个“切片”来查看它们所用的时间,也可以沿一行拖动使“切片”部分在底部打开,以显示所有切片在选定时间范围内的用时。

图形性能分析

您可以使用 RenderDoc 执行一些图形性能分析。

  1. 将环境变量 ANDROID_EMU_RENDERDOC 设置为非空字符串(例如 "1")。
  2. 将环境变量 TMP 设置为 %USERPROFILE%\AppData\LocalLow。这会告知 Renderdoc 将其日志文件放置在模拟器沙盒中可访问的位置。

  3. 如果您使用的是 Vulkan 后端。请依次选择 Graphics Settings > Vulkan Instance Implicit Layers,并确保已勾选 VKLAYER_RENDERDOC_Capture

  4. 启动 Google Play 游戏电脑版开发者模拟器。只要支持已启用,顶部就会显示 RenderDoc 叠加层。

  5. 在启动 Google Play 游戏电脑版开发者模拟器之前或之后随时可启动 RenderDoc。

  6. 点击 File > Attach to Running Instance,然后选择 crosvm

指定环境变量

为了使 Renderdoc 正常工作,您必须在 Windows 中添加或更改环境变量。您可以使用界面、PowerShell 或 cmd.exe 更改环境变量。

使用界面
  • Win+R 打开“运行”对话框。
  • 输入 sysdm.cpl 以打开系统属性窗口。
  • 选择高级标签页(如果尚未启用的话)。
  • 点击环境变量按钮。

您可以在此处点击新建按钮创建新的环境变量,或者选择一个变量并点击编辑按钮进行修改。

使用 PowerShell

在 PowerShell 窗口中,输入以下代码:

$Env:VARIABLE_NAME=VALUE

VARIABLE_NAMEVALUE 替换为您想要设置的值。例如,如需将 ANDROID_EMU_RENDERDOC 设置为 "1" 类型,请使用以下代码:

$Env:ANDROID_EMU_RENDERDOC="1"
使用 cmd.exe

在 cmd.exe 窗口中,输入以下代码:

set VARIABLE_NAME=VALUE

VARIABLE_NAMEVALUE 替换为您想要设置的值。例如,如需将 ANDROID_EMU_RENDERDOC 设置为 "1" 类型,请使用以下代码:

set ANDROID_EMU_RENDERDOC="1"

适用于 Android 11(API 级别 30)或更高版本的提示

Google Play 游戏电脑版已更新为采用最新 Android 版本。以下是关于搭配最新版 Android 使用方面的一些提示。

始终使用最新版工具

Android Studio 会安装与开发者模拟器兼容的 adb 版本;不过,有些游戏引擎会包含旧版 adb。在这种情况下,安装开发者模拟器后,您可以前往 C:\Program Files\Google\Play Games Developer Emulator\current\emulator 寻找兼容的 adb 版本。

如果您启动一个 adb 版本,将会终止另一个版本。这意味着,无论您在何时部署,只要您的游戏引擎会自动启动自己的 adb 实例,您就可能需要重新启动并重新连接开发者模拟器附带的 adb 版本。

如果您使用的是 Android App Bundle,则必须从 GitHub 仓库安装最新版本的 bundletool

分区存储

Android 11(API 级别 30)或更高版本包含分区存储,可以更好地保护外部存储空间中的应用和用户数据。除了要使游戏符合分区存储要求外,您还需要执行额外的步骤,将 APK 扩展文件 (obb) 或资源数据加载到 Google Play 游戏电脑版开发者模拟器。如果您在访问游戏的此类文件时遇到问题,请按以下步骤操作:

  1. 创建您的应用可以读取的目录。
  2. 将扩展文件推送到模拟器。
adb shell mkdir /sdcard/Android/obb/com.example.game
adb push main.com.example.game.obb /sdcard/Android/obb/com.example.game

软件包可见性

由于新的软件包可见性规则,以 Android 11(API 级别 30)或更高版本为目标平台的应用不得查询设备上已安装的其他应用的相关信息。这意味着,当通过 adb 旁加载而不是通过 Play 商店安装时,您的游戏将无法访问 Play 服务。如需使用一款旁加载的游戏测试应用内购买 (IAP) 功能,您必须向软件包“com.android.vending”的 AndroidManifest.xml 文件中添加一项查询,如下所示:

<manifest>
    <queries>
        <package android:name="com.android.vending" />
    </queries>
</manifest>

在玩家客户端中安装您的游戏

在某款游戏于 Play 游戏服务目录中列出之前,您无法在玩家客户端中安装该游戏。在您的游戏只有一个版本后,您可以创建内部测试轨道,以便在日后发布更新之前先进行验证。

玩家客户端不支持 Google Play 游戏电脑版开发者模拟器中为开发者设计的功能。玩家客户端最适合用于对游戏进行发布前质量检查,以便在初始发布后测试端到端玩家体验。