2012-02-22 121 views
0

我是新來的遊戲編程,我目前只是概念化遊戲的引擎。我正在考慮一個基於塊的2D與Z軸世界,比如3D Conway的生命遊戲,或者是矮人城堡。優化遊戲循環

這讓我想到:我需要遍歷3D網格中的每個實體,每個遊戲循環。比方說,100x100x100的三維立方體,如果我允許重疊,再加上100。這是每個遊戲循環1,000,000到100,000,000個物體。並非所有東西都在移動(當然不是所有東西都被渲染),但我需要檢查物理的所有東西(這意味着實體會檢查上面(9),下面(9)以及除(8)本身之外的實體)。

我該如何優化我的遊戲循環以保持合理快速的遊戲循環?我正在使用Android的內置sqlite數據庫來存儲每個塊的個人屬性,如HP等,但gameMap作爲數組存儲在內存[100] [100] [100] [100] [[]] [[]] [[]] [[]] [[]] [ ENTITYID:的EntityType]。

還是我只是在超越這個?

回答

1

這些技巧基本上歸結爲不檢查的東西,當你不必。假設你的物理學涉及到塊之間的堆疊,這可能就像不檢查堆棧,如果它已經休息了一段時間,然後在碰撞時開始重新檢查堆棧。根據遊戲中的可能性,您也可以忽略表面以下的塊。

不過,每個遊戲循環做一百萬支票可能是合理的。此外,對於您的遊戲類型,您可能無需每隔一幀檢查一次;如果你每幀都做了一部分,或者在較慢的線程中運行塊物理,那麼它與渲染和播放器物理分離是不明顯的。

真的,儘管如此,優化是最好的結果,而不是從一開始就設計。最好的計劃是以最直接的方式編寫你的遊戲物理代碼,讓你的基本代碼工作和調試,如果速度不夠快,開始嘗試優化,同時觀看幀速率。