我目前正在研究一个非常大型的Flash平台游戏(数百个课程),并且处理游戏慢慢磨砺到停止的问题,如果你足够长的时间。我没有写游戏,所以我只是模糊地熟悉它的内部。一些神秘的症状包括,随着时间的推移,AS3的游戏性能大幅下降
- 游戏将运行良好的时间(在给定的水平),当突然它会成倍地开始泄漏内存。
- 当屏幕上有更多精灵时,游戏达到指数级泄漏的时间会缩短。
- 即使没有任何东西被显示在屏幕上,游戏也会变慢。
- 随着更频繁的精灵碰撞,游戏变慢。
- 完全禁用冲突代码的确会减缓降级,但不会阻止游戏最终丢弃帧。在源
寻找和使用Flex分析器,我的首要嫌疑人,
- 还有许多游荡的对象,尤其是
WeakMethodClosure
,占用了大量的内存。 - 该软件对弱事件监听器进行了非常广泛的使用(每帧调度数十次)。
- 每次创建新的精灵时都会复制BitmapData。这些是50x50像素精灵,每秒产生大约8个精灵。
我知道几乎不可能在没有看到源代码的情况下告诉我问题,所以我只是在寻找可能帮助我缩小范围的小花絮。有没有人在他们自己的项目中体验到这种回避性能下降?你的情况是什么原因?
我认为这对于刚开始一个大型游戏项目并想知道如何最好地构建它的人来说是一个很好的建议。 – Kai 2009-09-22 16:13:14