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