C/C++ - 如何管理视频游戏中的循环?

Elf*_*yer 4 c c++ 2d-games

我已经用C(小型个人项目)制作了一些视频游戏.而我每次遇到的问题都是一样的,如何管理游戏中的周期.

例如,我用SFML编写了一条蛇.我使用帧速率处理周期:正常情况下5帧速率,并且通电后,我将其更改为10.这是有效的.但它很可怕.并且它对于坏的计算机无法正常工作.同样的想法,我也做了一个游戏,我决定一个循环等于一个循环的转弯(有一个无限循环).同样的问题,高性能计算机将比低速计算机快.

所以,有人可以建议我如何在视频游戏中正确和正确地进行周期管理.

提前致谢 !

And*_*rew 6

帧速率应该对游戏玩法没有任何影响.如果它的gettig 60FPS或1000s的FPS那么那不应该影响任何东西.

您要做的是查看增量时间或经过的时间(如果有足够的时间,则进行模拟或上电).

所以当你移动蛇时.它希望每帧移动一段距离.如果帧速率较低,则距离比帧速率较高时的距离更大.距离是speed_it_moves_at * delta_time.


mea*_*gar 5

从广义上讲,您需要对游戏状态进行建模,使其能够按给定的时间增量"前进",然后在主循环的每个循环中确定已经过了多长时间(通常是一小部分时间)第二)并推动游戏状态只有这么多.这就是游戏无论帧速率如何都能顺利运行的方式.

间隔基本上成为所有运动的缩放因子.例如,如果你的蛇以每秒5个单位的距离向前移动,并且在你的主循环期间你发现自上次蛇移动以来已经过了0.01秒,你将使你的蛇以(0.01*5)单位前进该循环期间的距离.