2012-02-22 127 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

这些技巧基本上归结为不检查的东西,当你不必。假设你的物理学涉及到块之间的堆叠,这可能就像不检查堆栈,如果它已经休息了一段时间,然后在碰撞时开始重新检查堆栈。根据游戏中的可能性,您也可以忽略表面以下的块。

不过,每个游戏循环做一百万支票可能是合理的。此外,对于您的游戏类型,您可能无需每隔一帧检查一次;如果你每帧都做了一部分,或者在较慢的线程中运行块物理,那么它与渲染和播放器物理分离是不明显的。

真的,尽管如此,优化是最好的结果,而不是从一开始就设计。最好的计划是以最直接的方式编写你的游戏物理代码,让你的基本代码工作和调试,如果速度不够快,开始尝试优化,同时观看帧速率。