我是游戏编程的新手,我现在只是概念化游戏的引擎。我正在考虑一个基于块的2d-with-z轴世界,比如3D康威的生命游戏,或者矮人要塞。
这让我想到:我需要迭代3d网格中的每个实体,每个游戏循环。比方说,100x100x100 3d立方体,如果我允许重叠,再加上100立方体。这是每个游戏循环的1,000,000到100,000,000个对象。并非一切都在移动(当然并不是所有东西都被渲染),但我需要检查物理的一切(这意味着实体会检查上面的实体(9),下面的(9)和(8)本身)。
如何优化游戏循环以保持合理快速的游戏循环?
我目前正在使用Android的内置sqlite数据库存储每个块的各个属性,如HP等,但是gameMap作为数组存储在内存中[100] [100] [100] [100] [entityId :的EntityType]
或者我只是过度思考这个?
答案 0 :(得分:1)
当你不需要时,技巧基本上归结为不检查东西。假设你的物理涉及到彼此堆叠的块,那么如果它已经静止了一段时间就会检查堆栈,然后如果它被碰撞则开始重新检查它。根据游戏中可能的情况,您也可以忽略表面下的块。
但是,每个游戏循环进行一百万次检查可能是合理的。此外,对于您的游戏类型,您可能不需要每帧都检查一切;如果你要么每帧都做一部分,要么在一个较慢的线程中运行块物理,与渲染和玩家物理分开,这可能不会引人注意。
实际上,优化是最好在最后进行装备而不是从头开始设计的。最好的计划是以最直接的方式编写游戏物理代码,使基本代码工作和调试,如果速度不够快,请在观看帧速率时尝试优化。