Type: entity
Confidence: 0.90
Created: 2026-04-16
Updated: 2026-04-16
Tags: 工具与框架游戏游戏开发

Love2D

概述

Love2D(LÖVE)是以 Lua 为脚本语言的开源 2D 游戏框架,提供窗口、图形、输入、音频等游戏能力,开发者只需在回调函数中填写逻辑即可跑起游戏。

关键内容

  1. 定位:Love2D 不是完整游戏引擎,而是"游戏能力提供者"。Lua 写逻辑,LÖVE 提供平台能力(开窗口、画图、播放声音、接收键盘输入)。

  2. 核心回调:引擎在生命周期中主动调用开发者定义的函数:

  3. love.load() — 启动时执行一次,初始化变量/加载资源
  4. love.update(dt) — 每帧更新逻辑,dt 为帧间时间差(秒)
  5. love.draw() — 每帧绘制画面
  6. love.keypressed(key) — 按键按下瞬间触发

  7. 主要模块

  8. love.graphics — 绘图(printrectanglecircledrawnewImage
  9. love.keyboard — 键盘(isDown 持续检测、keypressed 单次触发)
  10. love.audio — 音频(newSource
  11. love.window — 窗口管理(setTitle

  12. 输入两种模式love.keyboard.isDown() 适合持续移动;love.keypressed 适合单次触发动作(跳跃、发射子弹)。

  13. dt 时间无关移动x = x + speed * dt 使物体速度与帧率无关,保证低帧率/高帧率下行为一致。

  14. Lua table 作为对象:惯用 table 组织角色状态(player = {x, y, speed}),是 Love2D 项目的标准写法。

  15. 物理模块love.physics.newWorld(gx, gy) 创建物理世界,newBody/newRectangleShape/newFixture 创建刚体。每帧调用 world:update(dt) 推进物理模拟。

  16. 内部实现机制:LÖVE 在 C++ 层实现所有 Module(graphics、audio、physics 等),通过 luaL_newlib 注册为 Lua 模块,主循环从 C++ 触发 love.update(dt)love.draw()。这是典型的 C++ 引擎 + 全 Lua 暴露 API 的架构模式。

  17. 配置文件 conf.lualove.conf(t) 在引擎初始化前执行,控制窗口尺寸、VSYNC、MSAA、模块开关等:t.window.width/heightt.window.resizablet.window.vsynct.window.msaat.modules.physics。是 Love2D 项目的标准初始化入口。

  18. 完整生命周期回调集:除核心三件套外,还有 love.quit()(返回 true 可取消退出)、love.resize(w,h)love.focus(f)love.mousereleased/moved/wheelmovedlove.touchpressed/releasedlove.gamepadpressed/releasedlove.errhand(msg)(全局错误处理)。

  19. Canvas 离屏渲染love.graphics.newCanvas(w,h) 创建离屏渲染目标,love.graphics.setCanvas(canvas) 切换渲染目标(nil 恢复默认屏幕),配合 Shader 实现后处理效果。love.graphics.setShader(shader) / love.graphics.newShader(vert,frag) 支持自定义着色器。

来源

相关