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

Google Play 游戏电脑版开发者模拟器是专为 Google Play 游戏电脑版打造的开发者专用模拟器。与玩家体验不同,您可以安装和调试自己的软件包。您还可以模拟各种玩家配置,例如宽高比、鼠标模拟和图形后端,以帮助您确保游戏在各种 PC 配置下都能正常运行。

启动模拟器

安装后,您将拥有一个“Google Play 游戏开发者模拟器”开始菜单项和一个桌面快捷方式来启动模拟器。当您关闭窗口时,模拟器将保留在系统托盘中。

登录

首次运行模拟器时,系统会要求您登录 Google 帐号。请使用您计划用于开发的相同登录凭据。

您可以通过右键点击系统托盘图标,选择“开发者选项”,然后点击“强制退出”来退出登录。执行此操作后,模拟器会立即重启并再次要求您登录。

启动后,您将看到一个典型的 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

要遵循这些说明,adb 应该在您的 $PATH 中可用。您可以使用 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 游戏电脑版开发者模拟器默认使用触摸模拟,而不是提供直接鼠标输入。您可以通过右键点击系统托盘图标,选择“开发者选项”,然后选择“PC 模式 (KiwiMouse)”来启用直接鼠标输入。

Google Play 游戏电脑版有两种鼠标模式:一种是模拟模式,将鼠标点击转换为单击;另一种是直通“PC 模式”,让游戏能够原生处理鼠标操作并执行指针捕获。有关 Google Play 游戏电脑版中鼠标输入的详细信息,请参阅设置鼠标输入

在玩家客户端中,通过将以下内容添加到您的清单中来禁用模拟:

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

此功能标志在开发环境中不起作用。

测试宽高比

开发者模拟器以 16:9 的宽高比启动,这与玩家客户端从主显示器获取其宽高比不同。通过右键点击系统托盘图标,选择“开发者选项”,然后选择“显示比例”部分中的任何选项,您可以测试游戏在不同玩家屏幕上的显示效果。

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

例如,一个竖屏游戏将具有 9/160.5625 的宽高比,因此您可能需要将最大宽高比设置为 1,以防止您的游戏宽度超过正方形。

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

同样,一个横屏游戏将是 16/9 或大约 1.778,因此您可能需要将最小宽高比设置为 1,以防止它比正方形更瘦。

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

测试内容

如果您的游戏清单仅支持竖屏模式,您可以在下拉菜单中选择“9:16 (竖屏)”以查看其在玩家 PC 上的显示效果。否则,请验证您的游戏是否在清单中支持的最宽和最窄的横屏比例下正常工作,请记住,16:9 (默认)(如果您的游戏仅支持竖屏,则为 9:16 (竖屏))是完全认证所必需的

测试渲染后端

Google Play 游戏电脑版使用 Vulkan 来渲染您的游戏,这在 Android 和 PC 环境中都很常见。沙盒层用于隔离 PC 和 Android 环境。由于许多游戏仍使用 OpenGL ES 进行渲染,ANGLE 会将 OpenGL ES 命令转换为与主机 PC 兼容的 Vulkan 命令。

同样,Google Play 游戏电脑版通过在运行时自动将 ETC1 和 ETC2 等移动设备友好的纹理格式转换为 PC 友好的格式,从而最大限度地提高游戏兼容性并最大限度地减少开发人员的工作量。为了获得最佳结果,请通过利用 PC GPU 支持的格式(例如 DXTC 或 BPTC)来避免此转换。

测试内容

如果您的游戏出现意外的渲染伪影,请检查您的源图形并考虑转换为 PC 友好的格式。请密切注意用于更高级效果的纹理,因为法线贴图或立方体贴图问题通常比反照率问题更难发现。

ANGLE 将您的 OpenGL ES 命令转换为 Vulkan 会增加一些开销。请验证您是否达到了预期的性能目标,并考虑切换到基于 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 UI 中打开跟踪

    1. 打开 ui.perfetto.dev
    2. 从左上角的“导航”下选择“打开跟踪文件”。
    3. 打开您在上一步中下载到 Downloads/ 目录的 example.trace 文件。
  4. 在 Perfetto UI 中检查跟踪。一些提示:

    1. 每个进程都有自己的一行,可以展开以显示该进程中的所有线程。如果您正在分析游戏,则其进程很可能是第一行。
    2. 您可以通过按住 Control 并使用滚轮进行放大和缩小。
    3. 当使用 sched 事件时,每个线程都有一行显示该线程的状态是运行中、可运行、休眠或阻塞。
    4. 启用 gfx 等事件时,您可以查看各种线程进行的各种图形调用。您可以选择单个“切片”以查看它们花费的时间,或者您可以沿一行拖动,导致底部打开一个“切片”部分,并向您显示在您选择的时间窗口中所有切片花费了多长时间。

图形分析

可以使用 RenderDoc 进行一些图形分析。

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

  3. 如果您正在使用 Vulkan 后端。选择“图形设置”>“Vulkan 实例隐式层”,并确保已选中“VKLAYER_RENDERDOC_Capture”。

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

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

  6. 点击“文件”>“附加到正在运行的实例”并选择“crosvm”。

指定环境变量

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

使用 UI
  • 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 应用包,则必须从 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,您必须在 AndroidManifest.xml 文件中添加对软件包“com.android.vending”的查询,如下所示:

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

在消费者客户端中安装您的游戏

在 Play 游戏服务目录中列出游戏之前,您无法在消费者客户端上安装游戏。在您的游戏发布一次后,您可以创建内部测试轨道,以便在发布之前验证未来的更新。

玩家客户端不支持 Google Play 游戏电脑版开发者模拟器中以开发者为中心的功能。这最好用于在发布前对游戏进行质量保证,以测试首次发布后的端到端玩家体验。