游戏开发公司

手 机 游 戏 开 发

手机游戏开发

Android 游 戏 开 发

Java 游 戏 开 发

网 页 游 戏 开 发

Windows与Android游戏开发内存访问工作原理的异同

来源: 本站 作者: dengsiping 发布时间: 2020-10-26 11:34:09 浏览次数: 266

Windows与Android游戏开发内存访问工作原理有什么不同?简而言之,要点如下:游戏需要与系统共享内存。一些设备的可用内存比其他设备少,因此需要开展测试,以检查一系列受支持的设备是否存在内存不足问题。测试应在用户已安装典型应用的设备 (即非全新设备) 上开展。

 


七月份我们发布了 Android游戏开发工具包 (AGDK),并收集了一些开发者提出的热门问题,包括 AGDK 库和工具、Android 内存优化以及绘制图形等。


首先,早期新兴的游戏开发者向我们提问如何使用此套 AGDK 库和工具。我们给出如下建议,具体则取决于您的设置:

如果您使用的是 Defold、Godot、Unity 或 Unreal 等热门游戏引擎,您可以根据我们的指南,学习如何在 Android 上开发应用。使用这些游戏引擎可助您专注于构建游戏玩法而非整个技术栈。

如果您使用 Unreal 引擎且针对多个平台 (例如 PC 或主机),Android 游戏开发工具扩展包 (AGDE) 可能会对您的工作流程起到很好的补充效果:

https://developer.android.google.cn/games/agde

我们还为想要自定义和编写自己游戏引擎的开发者提供支持,您可通过我们的 C 或 C++ 文档了解详情:

https://developer.android.google.cn/games/develop/custom/overview

Defold

https://developer.android.google.cn/games/engines/defold/defold-configure

Godot

https://developer.android.google.cn/games/engines/godot/godot-configure

Unity

https://developer.android.google.cn/games/develop/build-in-unity

Unreal

https://developer.android.google.cn/games/engines/unreal

热门游戏引擎
https://developer.android.google.cn/games/engines/engines-overview

 

选择游戏引擎和工作流程之后,您可以进一步研究我们的工具,例如可检查游戏的 Android Studio 性能剖析器、可分析图形的 Android GPU Inspector 以及可优化帧率和加载时间的 Android Performance Tuner。


Android Studio 性能剖析器
https://developer.android.google.cn/studio/profile/android-profiler

Android GPU Inspector
https://developer.android.google.cn/agi

Android Performance Tuner
https://developer.android.google.cn/games/sdk/performance-tuner

Android 游戏开发工具包 (AGDK)
https://developer.android.google.cn/games/agd

之后,收到了关于针对 Android 12 进行开发的问题。您无需为在 Android 12 上运行游戏进行任何特殊操作,我们引入了游戏模式 API 和干预,以帮助玩家自定义其游戏体验:
https://developer.android.google.cn/games/gamemode
您可以阅读更多关于游戏模式 API 的内容,了解如何在用户选择相应的游戏模式时优化游戏,以获得最佳性能或最长电池续航时间:
https://developer.android.google.cn/games/gamemode/gamemode-api
您可以了解更多游戏模式干预,这些干预由原始设备制造商 (OEM) 设置,以改善那些不再被开发商更新的游戏的性能。例如: 调整 WindowManager 后台缓冲区的大小,以减少设备的 GPU 负载。

游戏模式干预
https://developer.android.google.cn/games/gamemode/gamemode-interventions

调整 WindowManager 后台缓冲区的大小
https://developer.android.google.cn/games/gamemode/gamemode-interventions#windowmanager_backbuffer_resizing

有开发者问到在 Android 与 Windows 中进行游戏开发时,内存访问工作原理的异同。简而言之,要点如下:

游戏需要与系统共享内存。一些设备的可用内存比其他设备少,因此需要开展测试,以检查一系列受支持的设备是否存在内存不足问题。测试应在用户已安装典型应用的设备 (即非全新设备) 上开展。
游戏可分配的内存大小取决于各种因素,例如物理内存量、脏页数和 zRam (用于压缩交换) 总量:
https://developer.android.google.cn/games/optimize/memory-allocation
内存不足可能表现为 onTrimMemory() 调用、内存抖动或低内存终止守护进程 (Low Memory Killer) 终止游戏。您可以使用 bugreport 日志检查低内存终止守护进程 (Low Memory Killer) 是否已终止游戏,或者在 Android 11 及更高版本中检查 ApplicationExitInfo,以查看游戏是否因 REASON_LOW_MEMORY 而终止。
避免内存抖动: 当内存较低但又不足以终止游戏时会发生这种情况。您可以通过系统跟踪检测到这一情况,且应该通过减少整体内存占用以避免此问题。
使用 Android 性能剖析器和其他工具检查内存使用情况。

onTrimMemory()
https://developer.android.google.cn/topic/performance/memory.html

低内存终止守护进程 (Low Memory Killer)
https://developer.android.google.cn/topic/performance/memory-management#low-memory_killer

bugreport
https://developer.android.google.cn/studio/debug/bug-report

ApplicationExitInfo
https://developer.android.google.cn/reference/android/app/ApplicationExitInfo

REASON_LOW_MEMORY
https://developer.android.google.cn/reference/android/app/ApplicationExitInfo#REASON_LOW_MEMORY

内存抖动
https://developer.android.google.cn/games/optimize/memory-allocation#avoid-thrashing

系统跟踪
https://developer.android.google.cn/topic/performance/tracing

Android 性能剖析器
https://developer.android.google.cn/studio/profile/memory-profiler

其他工具
https://developer.android.google.cn/games/optimize/memory-allocation#use-available-tools

我们还收到了有关如何在 Android 中绘制图形的问题。您可以借助以下选项实现此目标: OpenGL ES 或 Vulkan 图形 API:

了解如何通过初始化变量以及使用游戏循环、场景和对象进行渲染,为 C++ 游戏引擎配置 OpenGL ES 图形:
https://developer.android.google.cn/games/agdk/configure-graphics
阅读我们的 Vulkan 指南,了解如何绘制立方体、编译着色器、设置验证层及其他最佳实践:
https://developer.android.google.cn/ndk/guides/graphics/getting-started

OpenGL ES
https://developer.android.google.cn/guide/topics/graphics/opengl

Vulkan 图形 API
https://developer.android.google.cn/ndk/guides/graphics

 

上一篇:

下一篇: -