关于自定义或移植游戏引擎

工具、星星、星球 如果您使用 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 和资源包,同时获享内容分发网络的优势。