我在 Unity 或 Godot 之前,会在 Three.js 中构建核心机制,不是整个游戏。只是核心想法——我实际上试图验证的东西。这个循环感觉对吗?节奏是否太快?这个机制是否有生命力?我只构建足够的东西来回答这些问题,在浏览器中用一个下午。然后我会将链接发送给人们,看看他们做什么,而不是他们说什么。这一工作流程改变了我如何构建游戏。

心理成本的一个“真正”的引擎

传统的本能是打开 Unity 并“开始”。但是,Unity 项目有立即的心理重量。它不仅仅是场景层次结构或渲染管线;它是投资。等你把检查器连接起来,配置角色控制器,处理包清单,你就已经花了足够的时间,杀死想法会让你痛苦。这个投资会改变你评估机制的方式。你开始为问题辩护。你会告诉自己跳跃“会感觉更好一旦动画加入”或战斗“只是需要更多 VFX”。你会为了保存一个mediocre想法而努力,因为你已经建立了它的框架。一个好的原型工具应该没有切换成本。如果想法不起作用,你需要能够毫无愧疚地放弃。Three.js 是我的数字索引卡:快、可抛弃、诚实。

URL 是解锁

纸上原型设计很好地测试规则,但不能测试感觉。一个纸上骰子游戏可以告诉你数学是正确的,但无法告诉你掷骰子的“点击”是否令人满意。要测试感觉,你需要一个数字艺术品。但是,如果没有人玩这个数字艺术品,它就毫无用处。这就是浏览器的优势。一个 URL 是一个用户测试。当原型是浏览器标签时,我可以发送一个链接给五个人并在一个小时内获得真实信号。他们不需要下载 200MB 的 zip 或信任未知的本机二进制文件。他们只需点击一下。虽然像 Unity 这样的引擎可以导出到 WebGL,但切换成本是障碍。Three.js 桌面版是从一开始就原生于 web 的。这无摩擦的共享使我能够遵循玩测试的黄金规则:看看他们做什么。我可以看到他们是否在 30 秒内感到无聊。可以看到他们是否试图与世界互动的方式我没有意图。无法从本机引擎构建中获得这种零摩擦反馈。

案例研究:跑和滚

我建造了一个叫做跑和滚的骰子角色扮演游戏,以证明这一点。主动开发时间:大约 4-5 小时。约束:没有单个图像文件。每个敌人和骰子面都用 JavaScript 和画布路径绘制。要清楚:这个“4 小时”不包括我花在数学上的时间或我对 Three.js API 的先前熟悉程度。但是,由于艺术只是代码,我没有管理管道的时间。信号立即到来:玩家在死亡后会重新启动跑步而不被要求。这一原型如此轻微,反馈如此清晰,以至于原型实际上成为产品。我没有将其移植;我只是打磨并发布了它。

传递:磁铁谜题

有时,原型是要死亡的。我最近建造了一个 2D 物理谜题,其中你可以在磁铁之间切换,以引导一个球。要在 Unity 中全面构建一个项目——包括 URP、Android 导出设置和级别数据架构——之前,我在 Three.js 桌面版中建造了磁铁的力学计算。玩测试揭示了一个关键问题:力曲线感觉迟缓。我调整了直到磁极翻转感觉迅速和即刻。一旦真正的人确认核心循环是“粘性的”,我就打开 Unity。全面的架构是证明感觉正确后才是正确的投资。

桌面版的局限性

这不是银弹。这一工作流程在机制优先的游戏中最有效,其中占位艺术是诚实的替代品。它失败于:

- 游戏依赖于动画驱动的感觉(如角色动作游戏,其中“感觉”是动画系统)。

- 游戏需要复杂的 3D 物理模拟或联网多人游戏。

- 目标平台无法在浏览器标签中模拟(VR 是一个明显的例子)。

但对于大多数独立想法来说,这些并不是第一个问题。

一个关于“原型地板”的注记

当我将这篇文章的草稿发送给 Gemini 时,它做了意想不到的事情:它读了我的磁铁数学并在聊天窗口中直接生成一个工作的物理模拟来证明它理解“感觉”。这是很酷,但它强调了我的点。一个聊天窗口模拟比 Three.js 快,但它是一个封闭的循环。它不是我可以发送给陌生人的链接。它不是一个生活在野外的艺术品。原型地板不断下降,但 URL 仍然是“它在我的机器上工作”和“它对玩家工作”的终极桥梁。

你如何开始构建一个新的游戏?