我正在製作我的第一款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