我目前正在研究一個非常大型的Flash平臺遊戲(數百個課程),並且處理遊戲慢慢磨礪到停止的問題,如果你足夠長的時間。我沒有寫遊戲,所以我只是模糊地熟悉它的內部。一些神祕的症狀包括,隨着時間的推移,AS3的遊戲性能大幅下降
- 遊戲將運行良好的時間(在給定的水平),當突然它會成倍地開始泄漏內存。
- 當屏幕上有更多精靈時,遊戲達到指數級泄漏的時間會縮短。
- 即使沒有任何東西被顯示在屏幕上,遊戲也會變慢。
- 隨着更頻繁的精靈碰撞,遊戲變慢。
- 完全禁用衝突代碼的確會減緩降級,但不會阻止遊戲最終丟棄幀。在源
尋找和使用Flex分析器,我的首要嫌疑人,
- 還有許多遊蕩的對象,尤其是
WeakMethodClosure
,佔用了大量的內存。 - 該軟件對弱事件監聽器進行了非常廣泛的使用(每幀調度數十次)。
- 每次創建新的精靈時都會複製BitmapData。這些是50x50像素精靈,每秒產生大約8個精靈。
我知道幾乎不可能在沒有看到源代碼的情況下告訴我問題,所以我只是在尋找可能幫助我縮小範圍的小花絮。有沒有人在他們自己的項目中體驗到這種迴避性能下降?你的情況是什麼原因?
我認爲這對於剛開始一個大型遊戲項目並想知道如何最好地構建它的人來說是一個很好的建議。 – Kai 2009-09-22 16:13:14