fix: use accumulator to correct game loop

This commit is contained in:
2026-04-11 21:34:19 -04:00
parent 36d7da19d1
commit 34c8904e3d
2 changed files with 12 additions and 14 deletions
+6 -7
View File
@@ -12,10 +12,7 @@ static void on_signal(void) { running = 0; }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
skele_video_config_t video_cfg; skele_video_config_t video_cfg;
uint64_t last, now, elapsed; uint64_t last, now, elapsed, accum = 0;
(void)argc;
(void)argv;
skele_clock_init(on_signal); skele_clock_init(on_signal);
@@ -58,10 +55,12 @@ int main(int argc, char *argv[])
now = skele_time_ns(); now = skele_time_ns();
elapsed = now - last; elapsed = now - last;
accum += elapsed;
last = now;
if (elapsed >= skele_tick_ns) { while (accum >= skele_tick_ns) {
game_tick(); skele_tick();
last = now; accum -= skele_tick_ns;
} }
skele_video_present(); skele_video_present();
+6 -7
View File
@@ -12,10 +12,7 @@ static void on_signal(void) { running = 0; }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
skele_video_config_t video_cfg; skele_video_config_t video_cfg;
uint64_t last, now, elapsed; uint64_t last, now, elapsed, accum = 0;
(void)argc;
(void)argv;
skele_clock_init(on_signal); skele_clock_init(on_signal);
@@ -58,10 +55,12 @@ int main(int argc, char *argv[])
now = skele_time_ns(); now = skele_time_ns();
elapsed = now - last; elapsed = now - last;
accum += elapsed;
last = now;
if (elapsed >= skele_tick_ns) { while (accum >= skele_tick_ns) {
game_tick(); skele_tick();
last = now; accum -= skele_tick_ns;
} }
skele_video_present(); skele_video_present();