使用Google Play游戏PC开发者模拟器进行开发

Google Play游戏PC开发者模拟器 是一个面向开发者的Google Play游戏PC模拟器。与玩家体验不同,您可以安装和调试您自己的软件包。您还可以模拟各种玩家配置,例如纵横比、鼠标模拟和图形后端,以帮助您确保您的游戏在各种PC配置下都能按预期运行。

启动模拟器

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

登录

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

您可以通过右键单击系统托盘图标,选择开发者选项,然后单击强制退出登录来退出登录。这样做时,模拟器会立即重新启动并再次要求您登录。

启动后,您将看到一个典型的Android主屏幕。在鼠标模拟模式下,左键单击将直接转换为手指点击。为开发而侧载的游戏将出现在应用程序列表中,您可以通过单击并向上拖动桌面(模拟在手机或平板电脑上的向上滑动)来访问该列表。

除了鼠标转换外,Google Play游戏PC开发者模拟器还提供键盘快捷键以改善导航

  • ctrl + h:按下主页按钮
  • ctrl + b:按下返回按钮
  • F11alt + enter:在全屏和窗口模式之间切换
  • shift + tab:打开Google Play游戏PC叠加层,包括输入SDK的当前按键映射

安装游戏

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

adb兼容性

当前版本的adb与Google Play游戏PC开发者模拟器兼容。此外,当您安装模拟器时,会在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游戏PC模拟器
  • 在命令提示符中键入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应用程序包(aab),请参阅bundletool的说明,并改用bundletool install-apks

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

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

调试游戏

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

adb logcat按预期工作,那些有助于美化或过滤logcat输出的工具——包括Android Studio——也一样。

除了adb之外,您还可以从%LOCALAPPDATA%\Google\Play Games Developer Emulator\Logs目录访问日志。这里最有用的是AndroidSerial.log,它代表了从模拟器启动那一刻起adb logcat将回显的所有内容。

开发者设置

Google Play游戏PC开发者模拟器专注于开发效率而不是最终用户体验。这意味着您可以无障碍地访问Android系统,包括使用标准Android启动器而不是Google Play游戏PC体验,以及对其他情况下为玩家自动启用和禁用的功能的控制。

测试鼠标输入

在开发过程中,Google Play游戏PC开发者模拟器默认为触摸模拟,而不是提供直接的鼠标输入。您可以通过右键单击系统托盘图标,选择**开发者选项**,然后选择**PC模式 (KiwiMouse)**来启用直接鼠标输入。

PC 版 Google Play 游戏有两个鼠标模式:一种是模拟模式,它将鼠标点击转换为单次点击;另一种是直通式“PC 模式”,允许游戏原生处理鼠标操作并执行指针捕获。有关 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(纵向)**)是完全认证所必需的

测试渲染后端

PC 版 Google Play 游戏使用ANGLE作为兼容性层,以确保 OpenGL ES 调用通过使用 DirectX 或 Vulkan 后端的宿主 PC 正确处理。模拟器也直接支持 Vulkan,尽管不支持 DirectX。此层还将仅限移动设备的压缩纹理格式转换为 PC 兼容的格式。右键点击系统托盘图标并选择**图形堆栈覆盖**,您可以将其设置为系统的默认值,或强制启用或禁用 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. 启动 PC 版 Google Play 游戏开发者模拟器。只要启用了支持,顶部就会绘制 RenderDoc 叠加层。

  5. 在 PC 版 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)或更高版本的提示

PC 版 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) 或资产数据加载到 PC 版 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 游戏服务目录之前,您无法在消费者客户端上安装游戏。您的游戏发布后,您可以创建一个内部测试轨道,在发布之前验证将来的更新。

玩家客户端不支持 PC 版 Google Play 游戏开发者模拟器的开发者专用功能。最好在发布之前使用它来测试游戏,以便在初始发布后测试端到端玩家体验。