我已经用C(小型个人项目)制作了一些视频游戏。我每次遇到的问题都是一样的,如何管理游戏中的周期。
例如,我用SFML编写了一条蛇。我使用帧速率处理周期:正常情况下5帧速率,并且通电后,我将其更改为10.这有效。但它很可怕。并且它对于坏的计算机无法正常工作。同样的想法,我也做了一个游戏,我决定一个循环等于一个循环的转弯(有一个无限循环)。同样的问题,高性能计算机将比低计算机更快。
所以,有人可以建议我如何在视频游戏中正确和正确地进行周期管理。
提前致谢!
答案 0 :(得分:6)
帧速率应该对游戏玩法没有任何影响。如果它的gettig 60FPS或1000s的FPS那么那不应该影响任何东西。
您要做的是查看增量时间或经过的时间(如果有足够的时间,则进行模拟或启动)。
所以当你移动蛇时。它希望每帧移动一段距离。如果帧速率较低,则距离比帧速率较高时的距离更大。距离为speed_it_moves_at * delta_time
。
答案 1 :(得分:5)
从广义上讲,您需要对游戏状态进行建模,使其能够按给定的时间增量“前进”,然后在主循环的每个循环中确定已经过了多长时间(通常很小)几分之一秒)并使游戏状态仅提前一点。这就是游戏无论帧速率如何都能顺利运行的方式。
间隔基本上成为所有运动的缩放因子。例如,如果你的蛇以每秒5个单位的距离向前移动,并且在你的主循环期间你发现自从蛇最后一次移动以来已经过了0.01秒,你将使你的蛇以(0.01 * 5)为单位前进那个循环中的距离。