如果您使用 C 或 C++ 开发或自定义游戏引擎,以下要求对于将 Android 支持集成到您的游戏引擎中至关重要。
- 利用 Android 开发工具
- 构建 Activity
- 绘制到屏幕
- 处理输入事件
- 输出音频
- 管理内存
- 测试和完善
- 发布到 Google Play
本页介绍的要求不会教您如何从头开始开发游戏引擎,而是会确定 Android 与其他平台相比,Android 在哪些方面相对独特。
利用 Android 开发工具
Android Studio 包含可用于以下目的的工具:
- 配置您的项目
- 构建、调试和打包您的游戏
- 使用系统、CPU 和内存分析器检查游戏的性能
- 检查游戏的软件包或应用捆绑包的内容
- 集成 Android SDK 和 NDK 的其他功能
Android 图形检查器 可以描述游戏的渲染性能,并帮助您使用帧分析来调查渲染帧的详细信息。
如果您主要使用 Microsoft Visual Studio,则可以使用 Android 游戏开发扩展 (AGDE) 将 Android 目标添加到现有项目中。AGDE 支持在 Visual Studio 中进行原生调试,并包含许多 Android Studio 分析工具的独立版本。
构建 Activity
您的游戏需要构建并与 Activity
交互。了解 Android 上的 Activity 生命周期,以了解 Activity 是何时创建、启动、恢复、暂停、停止和销毁的。
阅读有关 GameActivity
库的信息,该库集成了并满足了原生 C 或 C++ 游戏引擎的 Activity
相关需求(游戏窗口、生命周期、渲染、处理事件)。
绘制到屏幕
您的游戏需要在屏幕上绘制对象和精灵。了解 Android SurfaceView
以及如何在您的游戏引擎中 配置图形。
Android 设备支持不同的显示刷新率。了解 在游戏循环中渲染,以防止帧丢失和帧缓冲区故障。
阅读有关如何 实现帧速率同步 以在 OpenGL 和 Vulkan 中实现流畅渲染的信息。使用性能调优器 优化您的帧速率。
使用多重采样抗锯齿 (MSAA) 来提高渲染质量。MSAA 可以以很少的开销使用。要了解更多信息,请参阅博文 Multisampled Anti-aliasing For Almost Free — On Tile-Based Rendering Hardware。
处理输入事件
游戏引擎从各种来源接收输入事件。为了获得身临其境的体验,请学习支持不同的 Android 输入源:
输出音频
您的游戏引擎需要在不同的设备和 Android 版本上输出音频。了解 Oboe,我们开源的 C++ 音频库,可以在您的游戏中 加入高性能音频。
使用 Oboe 来实现最低延迟,避免特定音频错误,并自动选择最佳可用原生库(例如 AAudio 或 OpenSL ES)。
管理内存
在 Android 设备上,系统会尝试使用尽可能多的系统内存 (RAM),并在需要时执行各种内存优化以释放空间。学习 管理内存使用情况 以避免游戏变慢或退出。
测试和完善
当出现由未处理的异常或信号导致的意外退出时,Android 应用会崩溃。了解如何 检测和诊断崩溃、阅读堆栈跟踪、内存和网络异常、如何使用 logcat 以及如何理解 Java 和 Kotlin 特定的错误。
发布到 Google Play
玩家使用不同国家/地区的各种 Android 设备、网络状况和数据计划下载您的游戏。了解如何使用 Google Play 为大型游戏 交付应用捆绑包和资源包,并享受内容交付网络的优势。