【发布时间】:2017-06-07 17:58:57
【问题描述】:
我正在开发一个 2D 视频游戏框架,但我以前从未编写过游戏循环。我看过的大多数框架似乎都实现了draw 和update 方法。
对于my project,我实现了一个调用这两个方法的循环。我注意到在其他框架中,这些方法并不总是被称为交替。一些框架的update 运行方式比draw 运行方式要多。此外,大多数这些类型的框架将以 60FPS 运行。我想我需要在这里睡一会儿。
我的问题是,实现这种循环的最佳方法是什么?我是先拨打draw,然后拨打update,还是相反?就我而言,我正在编写一个围绕SDL2 的包装器,所以也许该库需要以某种方式设置一些东西?
这是我正在考虑的一些“伪”代码。
loop do
clear_screen
draw
update
sleep(16.milliseconds)
break if window_is_closed
end
虽然我的项目是用Crystal-Lang 编写的,但我更希望找到一个可以应用于任何语言的通用概念。
【问题讨论】:
-
没有直接关系,但您可能需要重新考虑拥有完整的
clear_screen步骤。这可能很昂贵,而且并不总是必要的。调用者可能只想清除更改的小部分以节省 CPU 时间。 -
至少对我来说,如果更新更有意义,那就画吧。如果反过来,您将始终绘制前一帧而不是当前帧。
-
好的,有道理!这些是我正在寻找的东西。谢谢:D
标签: game-engine game-loop crystal-lang