C / c++ -如何管理电子游戏中的循环

C / C++ - How to manage the cycles in a video game?

本文关键字:管理 电子游戏 循环 c++ 何管理      更新时间:2023-10-16

我已经用C语言制作了一些电子游戏(小型个人项目)。而我每次遇到的问题都是一样的,如何管理游戏中的循环。

例如,我用SFML编写了一条蛇。我用帧率来处理循环:正常情况下是5帧率,当打开电源时,我将其更改为10帧率。这工作。但这太可怕了。而且在一台坏电脑上也不能正常工作。基于同样的理念,我还创造了一款游戏,在其中我决定循环等同于循环的回合(带有无限循环)。同样的问题,高性能的计算机会比低性能的计算机运行得快。

那么,有没有人能告诉我如何在电子游戏中正确管理循环呢?

帧率应该不会对游戏玩法产生任何影响。如果是60帧或1000帧,那不会有任何影响。

您要做的是查看增量时间或经过的时间,如果时间足够,则进行模拟或通电。

所以当你移动蛇。它想要每帧移动一个距离。如果帧率较低,则会比帧率较高时距离更大。距离为speed_it_moves_at * delta_time

从广义上来说,你需要为你的游戏状态建模,使其能够以给定的时间增量"推进",然后,在你的主循环的每个循环中,确定已经过了多少时间(通常是一小部分秒),并仅将游戏状态推进那么多。这就是无论帧率如何,游戏都能顺利运行的原因。

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