LÖVE:用 Lua 写 2D 游戏的轻量框架,Balatro 也出自它

游戏开发
Lua
开源
框架
2D
2026/9/30
·

阅读时间: 大约 7 分钟

LÖVE:用 Lua 写 2D 游戏的轻量框架,Balatro 也出自它

LÖVE 官网“Games”板块展示的商业作品之一:扑克 Roguelike《Balatro》的标题画面。Balatro 是近年销量现象级的独立游戏,官方将其列为用 LÖVE 构建的代表项目

在一众“大而全”的游戏引擎里,LÖVE走了一条相反的路:它不是带可视化编辑器的引擎,而是一个用 Lua 写 2D 游戏的框架。免费、开源,跨 Windows、macOS、Linux、Android 和 iOS。它最有说服力的注脚不是文档,而是作品——现象级独立游戏《Balatro》就是用 LÖVE 做的。本文基于其官方站点,讲清它是什么、怎么用、以及边界在哪。

一、它解决什么:不要引擎的重量,只要框架的自由

很多人第一次接触 LÖVE 会疑惑:它和 Unity / Godot 有什么区别?区别在于 LÖVE 几乎只做“把 Lua 代码跑在屏幕上、画图形、放声音、读输入”这一件事。它没有内置关卡编辑器、没有可视化场景树、没有资产管线——你用自己的代码组织游戏,用自己喜欢的编辑器写 Lua。

这种取舍的回报是极轻的心智负担和极快的启动:官方示例里,画一行字只要三行函数。

二、它长什么样:极小的 API 表面

LÖVE 的核心生命周期是三个回调:love.load() 加载资源、love.update(dt) 跑逻辑、love.draw() 画帧。官方首页给出的例子短到可以直接读完:

画文字:

function love.draw()
    love.graphics.print("Hello World!", 400, 300)
end

画图片:

function love.load()
    whale = love.graphics.newImage("whale.png")
end
function love.draw()
    love.graphics.draw(whale, 300, 200)
end

放声音:

function love.load()
    sound = love.audio.newSource("music.ogg", "stream")
    love.audio.play(sound)
end

图形走 love.graphics、音频走 love.audio,一切都是显式调用——没有魔法,也没有引擎强加的架构。

三、许可与平台:真正可商用

LÖVE 采用 zlib/libpng 许可证,官方明确说明两点:免费、可无限制地用于商业项目。这对独立开发者很关键:你可以用它做商业游戏而不必担心引擎抽成或开源你的作品。当前官网提供的版本是 LÖVE 11.5,系统要求标注为 Windows Vista+、macOS 10.11+,并提供 Android APK 与 iOS 源码/库。

四、它真的能打吗:看官网列出的作品

LÖVE 官网 Games 板块的另一部作品《Oh My Giraffe》——一款像素风生存小游戏,展示了 LÖVE 在 2D 像素美术下的典型成品样貌

判断一个游戏框架是否成熟,最硬的指标是“有没有人用它赚到钱”。LÖVE 官网“Games”板块直接列出了它支撑过的商业与 game jam 作品,其中包括:

作品类型说明
Balatro扑克构筑 Roguelike2024 年起的销量现象级独立游戏
ARCO回合制策略官网展示的商业作品
Move or Die多人派对游戏官网展示
Gravity Circuit类恶魔城动作官网展示
Oh My Giraffe像素生存小游戏官网展示

把 Balatro 放进这个名单,本身就回答了“LÖVE 能不能做商业大作”这个问题——它不止能做 game jam demo。

五、评测方法与口径

需要冷静看待的是:官网展示这些游戏,只证明它们用 LÖVE 构建,并不证明 LÖVE 是它们成功的原因。Balatro 的成功来自玩法与美术,LÖVE 在其中扮演的是“足够稳的底层”,而不是卖点。反过来,这也说明一件事:LÖVE 的能力上限不由框架本身封顶,而由你的 Lua 工程能力决定——它不会替你做性能剖析、存档系统或跨端适配,这些都要你自己写或接社区库。

六、优势与局限

优势:API 极小、上手极快;Lua 语言本身轻、嵌入友好;zlib/libpng 许可可零顾虑商用;一份代码跨桌面与移动端;社区有论坛、Discord、subreddit 与 wiki 教程;已被 Balatro 级别的商业项目验证。

局限:它是 2D 框架,不要指望它做 3D;没有可视化编辑器与资产管线,美术/关卡流程要自己搭;复杂商业游戏的 ECS、存档、热更新等基础设施需要自建或依赖社区生态;性能与工程规范完全取决于你怎么写 Lua——框架给的是自由,不是约束。

七、谁该用它,谁不该用它

适合:想快速做 2D 游戏/game jam 原型、喜欢用代码而非可视化编辑器工作、需要一份 Lua 代码同时跑桌面和移动端、并希望商业发布无许可负担的人。

不适合:想要开箱即用的 3D、物理沙盒、可视化蓝图、联机后端或完整商店发布管线的团队——那类需求更适合 Godot / Unity。

参考来源