我是游戏编程的新手,目前我只是对游戏引擎进行了概念化。我在想一个基于块的2d和z轴的世界,就像3d Conway的生活游戏,或者也许是矮人堡垒。
这让我思考:我需要迭代3d网格中的每个实体,每个游戏循环。比方说,100x100x100的3d立方体,如果我允许重叠,再加上100。即每个游戏循环有1,000,000到1,000,000,000个对象。不是所有的东西都在移动(当然也不是所有的东西都是渲染的),但我需要检查所有的物理(这意味着实体将检查上面的(9),下面的(9)和(8)本身之外的实体)。
我如何优化我的游戏循环,以维持一个相当快的游戏循环?
我目前使用Android内置的sqlite db来存储每个块的单独属性,比如HP等,但是gameMap在内存中以array100entityId:entityType的形式存储。
还是我想得太多了?
发布于 2012-07-08 03:37:14
诀窍基本上归结为当你不需要检查的时候不检查东西。假设你的物理原理涉及到块相互堆叠,这就像是如果堆栈已经静止了一段时间,就不检查它,然后如果它被颠簸了,就开始重新检查它。根据游戏中可能发生的情况,你也可以忽略表面下的方块。
尽管如此,每个游戏循环进行一百万次检查可能是合理的。此外,对于你的游戏类型,你可能不需要检查每一帧的每一帧;如果你在每一帧都检查其中的一部分,或者在一个较慢的线程中运行块物理,而不是渲染和玩家物理,可能不会引起注意。
实际上,优化最好是在最后重新拟合,而不是从一开始就进行设计。最好的计划是以最简单的方式编写你的游戏物理代码,让你的基本代码工作并进行调试,如果它不够快,在观看帧率的同时开始尝试优化。
https://stackoverflow.com/questions/9390432
复制相似问题