VibeGame 发布:基于 three.js 的 AI 辅助游戏开发引擎
VibeGame: Exploring Vibe Coding Games
作者发布 VibeGame,一个构建在 three.js、rapier 和 bitecs 之上的高层声明式游戏引擎,专为 AI 辅助游戏开发设计。
作者实测了 Roblox MCP、Unity MCP 和 Web 三种方案的优劣,并据此开源了一个面向 AI 游戏开发的声明式引擎,思路和踩坑都可借鉴。
问题所在
人们正尝试用 vibe coding 来开发游戏。一开始,这似乎还行得通。然而,随着项目规模扩大,事情开始分崩离析。为什么?我们又能做些什么?
我将谈谈这个问题、我是如何解决的,以及接下来该往何处去。
什么是“Vibe Coding”?
首先,什么是 vibe coding?这个词最初由 Andrej Karpathy 在一则病毒式传播的推文中提出,其定义是“完全沉浸在氛围中,拥抱指数级增长,甚至忘记代码的存在”。
然而,自那以后,它被描述性地用来指代许多不同的含义,从仅仅“在编码时使用 AI”到“完全不思考代码”。在这篇博文中,我将其定义为:把 AI 当作一种高级编程语言来构建东西。就像其他编程语言一样,这得益于理解底层发生了什么,但并不一定需要。
按照这种理解,你可以在不懂代码的情况下制作游戏,不过了解基础知识仍然有帮助。
上下文管理
前面我提到“随着项目规模扩大,事情开始分崩离析”。这是因为有证据表明,随着上下文窗口被填满,模型性能会开始下降。在游戏开发中尤其如此,因为上下文会非常迅速、非常容易地变得非常庞大。
为了解决这个问题,有许多个人的临时方案,比如直接在项目文件中编写针对 LLM 的上下文,或者更全面的解决方案,如用于大规模上下文管理的 Claude Code Development Kit。
我找不到一个轻量、易用、且不依赖大量领域知识的解决方案。所以我做了一个:🧅 Shallot,一个简单、轻量、不预设观点的 Claude Code 上下文管理系统。它依赖两个基本命令:
/peel [prompt]在对话开始时加载上下文/nourish在对话结束时更新上下文
根据经验,这效果不错。不过,当项目保持精简且组织良好时效果最佳,这样所有相关上下文都能轻松放入模型的上下文窗口。虽然这里使用的是 Claude Code,但同样的原则也适用于其他模型。
除了上下文管理工具,平台选择也至关重要。理想情况下,平台应通过高级抽象自然地保持项目精简,同时又是 AI 模型能够很好理解的东西。那么,哪些现有平台最适合 vibe coding 呢?
初步探索
我最初尝试了 3 种不同的 vibe coding 游戏方法:Roblox MCP、Unity MCP 和 Web。对于每一种,我都尝试用 Claude Code 构建一个受 Grass Cutting Incremental 启发的简单增量游戏。
以下是进展:
尝试 1:Roblox MCP
来自 Roblox 的官方 MCP 服务器。它允许 AI 通过发送命令来运行代码,从而与 Roblox Studio 交互。
优点:
- 出色的抽象水平,内置游戏机制
- AI 可以非常轻松地理解语法并将指令转换为代码
缺点:
- 没有文件,只能使用代码读取数据,这严重限制了上下文管理
- AI 可用的运行时信息非常有限
- 专有的围墙花园
Roblox 提供了一层出色的抽象,使代码库保持精简且易于管理,非常适合 vibe coding。然而,封闭的花园和缺乏上下文使其无法用于 vibe coding,除非是在 Roblox 内部自研。
尝试 2:Unity MCP
Unity 的非官方 MCP 服务器。它允许 AI 与 Unity 编辑器交互:读取控制台、管理资源并验证脚本。
优点:
- 完整的文件系统访问权限
缺点:
- 在 Unity 中做任何事都有很多种方式,且随版本频繁变化,导致 AI 感到困惑
- 需要大量领域知识来告诉 AI 如何做事,而不是做什么
- AI 表现不稳定且不可靠
- 专有引擎(尽管比 Roblox 透明得多)
Unity 是一个功能强大的引擎,拥有大量能力。然而,引擎的复杂性和多变性使得 AI 在没有大量用户领域知识的情况下难以持续产出良好结果。
尝试 3:Web 技术栈
开放 Web 平台,使用 three.js 进行 3D 渲染,rapier 处理物理,bitecs 处理游戏逻辑。
优点:
- 与游戏引擎相比,AI 的熟练程度要高得多,这可能是由于海量的训练数据
- 完整的文件系统访问权限
- 完全开源的技术栈,拥有完全的控制权/透明度
缺点:
- 库相对底层,基本上需要先构建引擎,再构建游戏
- 缺乏高质量 3D 游戏的生态系统;Web 更倾向于 2D 游戏和简单的 3D 体验
到目前为止,这种方法的 AI 表现最好,这可能是由于训练期间可用的 Web 开发数据量巨大。然而,库的底层特性意味着我必须在构建游戏本身之前先构建一个游戏引擎。这让我们能够在更高的抽象层次上工作,就像我们在 Roblox 中所做的那样。
尽管需要先构建一个引擎,但这种方法是在没有深厚领域知识的情况下唯一能产生有趣结果的方法。
对比总结
| 平台 | AI 表现 | 抽象层次 | 上下文管理 | 开源 |
|---|---|---|---|---|
| Roblox | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | ❌ |
| Unity | ⭐ | ⭐⭐ | ⭐⭐⭐ | ❌ |
| Web | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ✅ |
解决方案:VibeGame
经过这些实验,我有了清晰的认识:Web 技术栈的 AI 表现极佳,但过于底层;而 Roblox 拥有完美的抽象,但缺乏开放性和上下文管理。
那么,把两者的优点结合起来会怎样?
隆重推出 VibeGame,一个构建在 three.js、rapier 和 bitecs 之上的高级声明式游戏引擎,专为 AI 辅助游戏开发而设计。
设计理念
VibeGame 的设计包含三个关键决策:
- 抽象: 一种高级抽象,内置物理、渲染和常见游戏机制等功能,使代码库保持精简且易于管理。这借鉴了 Roblox、Fortnite UEFN 和 Minecraft 等流行的高级沙盒游戏/游戏“引擎”的灵感。
- 语法: 一种声明式的类 XML 语法,用于定义游戏对象及其属性,使 AI 易于理解和生成代码。这类似于 HTML/CSS,AI 模型已经熟练掌握。
- 架构:采用实体-组件-系统(ECS)架构,以实现可扩展性和灵活性。ECS 将数据(组件)与行为(系统)分离,促使项目在成长过程中保持模块化和有条理,有利于 vibe coding 和上下文管理。
一个基础游戏看起来是这样的:
<world canvas="#game-canvas" sky="#87ceeb">
<!-- Ground -->
<static-part pos="0 -0.5 0" shape="box" size="20 1 20" color="#90ee90"></static-part>
<!-- Ball -->
<dynamic-part pos="-2 4 -3" shape="sphere" size="1" color="#ff4500"></dynamic-part>
</world>
<canvas id="game-canvas"></canvas>
<script type="module">
import * as GAME from 'vibegame';
GAME.run();
</script>
在 JSFiddle 或 Live Demo 中查看实际效果。
这将创建一个带有地面平面和下落小球的简单场景。玩家、摄像机和光照都会自动创建。所有这些都是模块化的,可以替换。可以根据需要添加任意自定义组件和系统。
它附带了一个 llms.txt 文件,其中包含关于该引擎的文档,专为 AI 设计,可纳入其系统提示或初始上下文中。
那它真的能用吗?
能。
嗯,算是吧。
这是我做的游戏,用来测试使用 VibeGame 和 Claude Code 构建一个简单的增量式收集草的游戏。它运行得非常好,实现核心游戏机制所需的领域知识极少。
不过,仍然存在一些重要的注意事项:
- 它很适合构建游戏引擎所支持的内容,也就是仅依赖基础物理和渲染的简单平台游戏或游戏。
- 然而,对于引擎尚未实现的更复杂内容,比如交互、物品栏、多人游戏、战斗等,它就力不从心了。
所以,如果按照一次性“给我做个游戏”的方式来定义 vibe coding,那它行不通。但如果把 vibe coding 当作一种高级编程语言来对待,那它效果很好,但需要用户理解引擎的能力和局限。
自己试试
为了能立即尝试,我构建了一个演示,你可以直接在浏览器中使用 VibeGame 配合 Qwen3-Next-80B-A3B-Instruct 开发游戏:Hugging Face 上的 Live Demo。
你也可以在本地使用像 Claude Code 这样的前沿模型进行测试:
npm create vibegame@latest my-game
cd my-game
npm run dev # or bun dev
然后,将所包含的 llms.txt 的全部内容粘贴到 CLAUDE.md,提供关于该引擎的完整文档供 AI 参考(或者让你自己的上下文管理系统指向它)。这同样适用于其他模型。
接下来呢?
该引擎目前非常简陋,只支持非常基础的机制(除非从头编写)。不过,初步结果很有希望。
接下来的步骤是:
- 用更多内置机制充实引擎,逐步接近 Roblox 或 UEFN 早期版本的水平。这包括:
- 交互
- 物品栏/物品
- 多人游戏
- 带精选数据库的蒙皮网格/动画
- 带精选数据库的音频
- 改进 AI 引导系统,为初学者提供更好的体验。这包括:
- 关于引擎能力/局限的清晰说明
- 常见任务的引导式提示
- 更多示例和模板
- 教育资源
同样值得探索的是,vibe coding 游戏如何利用更成熟的引擎。例如,在 Unity 或 Unreal Engine 之上构建一个高级沙盒游戏编辑器(类似于 Unreal Editor for Fortnite 构建在 Unreal Engine 之上),可以为 AI 提供一个更可控的工作环境,同时利用成熟引擎的强大能力。
我们也很可能会看到来自主要参与者的更多内部解决方案。
关注我,了解该领域的最新动态!
链接:
来源:Hugging Face:Blog · huggingface.co
