游戏主循环模式
概述
游戏主循环(Game Loop)是所有实时游戏的核心模式:引擎持续循环"处理输入 → 更新逻辑 → 绘制画面",开发者通过回调函数填充各阶段逻辑。
关键内容
- 三段式结构:
- load/init:启动时执行一次,初始化变量、加载资源
- update(dt):每帧更新状态(移动、碰撞、AI),
dt为帧间时间差 -
draw/render:每帧绘制当前状态到屏幕
-
回调(Callback)机制:开发者定义约定好名称的函数,引擎在合适时机主动调用。业务逻辑嵌在引擎生命周期里运行,开发者不需要写主循环本身。
-
dt 时间无关移动:用
position += speed * dt而非position += speed,使运动速度与帧率解耦。帧率为 60fps 时 dt≈0.016,帧率为 30fps 时 dt≈0.033,速度保持每秒speed单位不变。 -
输入处理两种方式:
- 持续检测(
isDown):每帧轮询按键状态,适合角色移动 -
事件回调(
keypressed):按键按下瞬间触发一次,适合跳跃、射击等单次动作 -
Love2D 实现:
love.load / love.update(dt) / love.draw是该模式的直接实现,LÖVE 引擎内置主循环。 -
学习路线:入门先打通 load→update→draw→键盘输入→图片绘制→简单碰撞,再扩展到状态机(菜单/游戏中/暂停)。
来源
- Lua 与 Love2D 交互 — ChatGPT 对话整理,以 Love2D 为例系统介绍游戏主循环机制和 dt 时间无关移动
- Lua 移动方块示例 — 20 行 Love2D 示例,逐行演示 load/update/draw 三段结构与键盘输入