C / c++ -如何管理电子游戏中的循环
C / C++ - How to manage the cycles in a video game?
我已经用C语言制作了一些电子游戏(小型个人项目)。而我每次遇到的问题都是一样的,如何管理游戏中的循环。
例如,我用SFML编写了一条蛇。我用帧率来处理循环:正常情况下是5帧率,当打开电源时,我将其更改为10帧率。这工作。但这太可怕了。而且在一台坏电脑上也不能正常工作。基于同样的理念,我还创造了一款游戏,在其中我决定循环等同于循环的回合(带有无限循环)。同样的问题,高性能的计算机会比低性能的计算机运行得快。
那么,有没有人能告诉我如何在电子游戏中正确管理循环呢?
帧率应该不会对游戏玩法产生任何影响。如果是60帧或1000帧,那不会有任何影响。
您要做的是查看增量时间或经过的时间,如果时间足够,则进行模拟或通电。
所以当你移动蛇。它想要每帧移动一个距离。如果帧率较低,则会比帧率较高时距离更大。距离为speed_it_moves_at * delta_time
从广义上来说,你需要为你的游戏状态建模,使其能够以给定的时间增量"推进",然后,在你的主循环的每个循环中,确定已经过了多少时间(通常是一小部分秒),并仅将游戏状态推进那么多。这就是无论帧率如何,游戏都能顺利运行的原因。
间隔基本上成为所有运动的缩放因子。例如,如果你的蛇以每秒5个单位的距离向前移动,并且在你的主循环中,你发现距离蛇上次移动已经过去0.01秒,那么你将在该循环中使蛇前进(0.01 * 5)个单位的距离。
相关文章:
- 当vector是tje全局变量时,c++中vector的内存管理
- 如何维护资源管理器项目视图中当前可见的项目列表
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 资源管理设计模式
- 使用"Task"函数指针队列定义作业管理器
- 实现动态插件管理器
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- libcurl 和 DNS ttl 中的内部连接管理
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 在C++管理一家中国.txt
- 编译器资源管理器和 GCC 具有不同的输出
- 我们可以通过 IPC 传递具有动态管理成员的类对象吗?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- Q没有管理权限的 exe 无法启动维护工具
- QT:管理来自 QNetworkReply 的回复
- 使用 std::vector<double> 访问由 std::unique_ptr<double[2] 管理的数据>
- 读取 TCP 标头并使用RAW_SOCKET管理 TCP 连接
- Windows 资源管理器中的图标在使用 resource.rc 时显示 2 个不同的图标
- 管理字符串文本的最佳做法
- C / c++ -如何管理电子游戏中的循环