我们刚刚开发了一款 iOS 游戏,用户一直抱怨它会耗尽电池电量。它以每秒 60 帧的速度播放,并使用专有的游戏引擎(用 C# 编写)。其中一个可能是问题,还是应该首先调查其他常见因素?
4 回答
Apple在他们的 iOS 编程指南中有一些关于降低功耗的指导方针
开始一些技巧的好地方。
首先,通过 Instruments 运行代码,看看它如何影响 CPU 使用率(持续高 CPU 会耗尽电池电量)。另外,您是否使用任何设备功能,例如 GPS 或 WIFI?这些将进一步耗尽电池。
其次,当您的应用程序应该挂起可能会消耗电池电量时,您是否会运行任何后台进程?
您可以通过检查设备日志的功耗、进行更改和保存另一个日志来跟踪您增强的任何性能。
可能有一个简单的答案,尝试以 30 FPS 或什至低至 24 FPS 的速度运行游戏。有什么真正的理由需要如此快速地运行它吗???
顺便说一句,我说 24 是“技术上”你的眼睛(对于大多数人来说)可以检测到的最快速度。
在视频中,我们尽量走高,因为从录制过程中可以看到有伪影,但由于游戏有生成场景,一般不需要高于24。
一个好的第一步是将帧速率降低到 30 FPS。对于任何合理的游戏,60 FPS 都是过大的。在某些时候,您的眼睛无法分辨出差异,除非帧速率在跳跃。该速率大约为 24-30 FPS,这就是它最常用于视频和游戏的原因。
不过,我会提醒您,如果您确实有实时游戏(尤其是基于反射的游戏),请在另一个线程上执行您的游戏逻辑。如果不这样做,您可能会遇到其他游戏存在的缺陷,例如:
使命召唤:现代战争 3 的引擎设计有一个重大缺陷,即你的枪射击的射速完全取决于游戏的帧速率,而不是由后台线程决定。
这使得某些武器比其他武器更危险,因为在大约 60 FPS 的帧速率下,它们每次射击的时间都是整数。
因此,话虽如此,请尝试降低帧速率。仅此一项可能就是消耗大部分电池的原因。