我正在制作我的第一款Android游戏,它将使用opengl es进行3D街机游戏。我一直在研究它很长一段时间,主要是为未来的灵活性优化引擎。反正现在我完全用游戏功能和所有漂亮的东西来完成,但它滞后于手机,而不是我的调试手机。该游戏对于手机游戏具有相当高质量的图形,因此预计会出现一些小问题,但在Nexus S上运行游戏并在MyTouch 4G上运行游戏的性能差异非常大。这款游戏甚至在LG Optimus等低端手机上都无法播放(游戏运行,但是它太过震荡,无法播放)。在我的Nexus SI上很少会有波动(我已经在游戏中实现了帧率独立运动),但在MyTouch 4G上它更常见,虽然游戏仍然可以播放....但是很烦人分析和优化游戏android
我来自桌面游戏开发背景,优化从来没有受到我的兴趣。你能推荐什么来帮助我加快游戏速度?
我试过尽可能地优化代码,并且性能有了显着的提高,但似乎有些事情我已经遗漏或忽略了。它是一个巨大的游戏,具有完整的引擎和大量的代码。
我试着追踪所有分配,并确保它们在运行时不会被释放或遗忘,以便GC在您播放时不会被调用。这基本上是我所能想到的,我不知道还有什么可以让它延缓,因为即使它们质量很高,我在游戏中添加了一个选项,让您可以像在电脑游戏中一样选择低,中和高的图形质量,低位和高位之间的差异在600-900个顶点之间!我注意到的唯一改进就是加载时间。也没有任何特殊的后期处理效果,照明,着色器,实时SSS或任何其他。只是纹理的面孔:P
也是我所苟同的“lagg”是随机冻结。我很确定他们是GC,但它可能是别的,因为我认为我发现并控制了所有的分配(有很多)。因为我的游戏是帧速率独立的,所以每当它解冻时,玩家和敌人以及所有东西都“向前跳跃”跟上,这使得已经很困难的游戏变得更加困难!
我是新来的分析和优化。如何使用android调试工具(或其他第三方工具)更好地了解我的游戏在运行时如何执行以及何时/为什么冻结以便我可以修复它们。
此外,奖金问题:)有没有办法让我看看它会如何在其他手机上执行而没有真正拥有手机或知道拥有手机的人?就像,如何快速将它走在Droid X的,即使我没有Droid X的,也没有人知道
你有没有跟踪在DDMS视图堆分配在Eclipse?每次有GC时它都会刷新,因此您可以确定冻结是否与GC调用相关。从那里你可以挖掘实际分配的内容并从那里出发。这是最有可能的分配('new' Anything),所以很自然地,你需要预先分配所有的东西并尽可能地利用对象池。 – LeffelMania 2011-04-28 20:43:14
另请参阅:http://stackoverflow.com/questions/5626947/optimize-android-application-before-release – bigstones 2011-04-28 22:06:40