#loops #gamedev #frame-rate #gameloop #game

chron

具有固定时间步长的游戏循环

6个版本

0.1.4 2024年1月21日
0.1.3 2023年11月19日
0.1.2 2023年9月6日
0.1.1 2023年1月17日
0.0.0 2023年1月16日

#517 in 游戏开发

每月下载24

AGPL-3.0-only

17KB
82

chron

Crates.io Documentation License

具有固定时间步长的游戏循环。

特性

  • 可选的帧跳过。确保在特定数量的Tick::Render之后至少发出一个Tick::Update。这可以防止游戏在指定的每秒更新次数无法维持时完全不渲染。
  • 可选的帧限制,以防止游戏以不必要的高帧率运行。当不使用帧限制时,帧率被解锁。

注意:帧限制器使用std::thread::sleep。它的精度可能或可能不足以满足平台需求。到目前为止,似乎在Linux上运行良好。

示例

use std::num::NonZeroU32;

let updates_per_second = NonZeroU32::new(50).unwrap();
let frames_per_second = NonZeroU32::new(60).unwrap();

let clock = chron::Clock::new(updates_per_second)
    .with_frame_limit(frames_per_second)
    .with_frame_skip(3);

for tick in clock {
    match tick {
        chron::Tick::Update => {
            // ...
        }
        chron::Tick::Render { interpolation } => {
            // ...
        }
    }
}

无运行时依赖