视频内容请点击文末公众号原文链接观看。
我让 AI 自己跑了四十多个小时,搓出来一个庄周梦蝶的“3D”游戏 demo。前几天刷到 Sac(x:Saccc_c)分享的《小王子》3D 游戏制作教程,看着挺有意思的,就想着自己也试一次,看看到底能做到什么程度。选材的时候想了想,最后定了庄周梦蝶。

那个《小王子》教程其实给了我挺大启发,就是把做游戏拆成一条挺清楚的流程:先想故事和需求,再找场景参考图,然后拆模型资产,搭世界,做动作和交互,最后自己试玩。原教程里用了 Tripo、Blender、Unity,还讲了角色绑骨和动作怎么接。我基本沿用了这套思路,但具体工具换成了 Codex + Tripo + Three.js。Codex 负责写代码和调 bug,Tripo 做核心三维模型,Three.js 让整个世界在浏览器里跑起来。



《梦蝶》的主线其实挺短的:走进庭院 → 靠近书案 → 持简入梦 → 化蝶探索 → 池塘照影 → 梦醒。就围绕一幅挺明确的庭院构想展开,草堂、曲木、书案、池塘、竹林,再加上连接它们的小路。然后把画面拆成资产清单——人物、草堂、老树、鱼这些有独立造型的,就单独做模型;地形、小路、池岸、竹林这些得跟地图紧密配合的,就用代码搭。植被、岩石材质啥的,能用现成素材的就用。

我们的主角、草堂、老树、锦鲤,还有隐藏人物,用的是实际从 Tripo 导出的模型。我只负责在浏览器登录 Tripo,往里面充好钱,其他操作基本都交给 AI 自己去点点点。过程大概就是:准备人物或物体的参考图,在 Tripo 里生成三维模型,检查正面、侧面、背面和材质,导出 GLB,再接入场景。GLB 可以理解成一个装着模型、材质和部分动画的三维文件,浏览器能直接加载。

但这里有个挺容易低估的问题:模型在生成页面里看着挺好看,放进游戏里未必自然。人物比例可能不对,树根悬空,房屋跟地面穿插,带动作的人物还得检查衣服是不是拉扯、脚是不是滑动、手是不是真的碰到道具。生成、绑骨和导出的套餐限制也得提前确认,我们过程中就遇到角色模型导出需要会员的情况。就是这个过程,AI 一直在自己测试、自己优化,所以消耗了不少 token。

(顺手把自己弄进了菜单里,甚至觉得这才是最大的快乐哈哈。)

模型准备好之后,还得把它们组织成能玩的游戏。《梦蝶》用 JavaScript 和 Three.js,主要做了这几件事:人物行走、跑步,镜头跟随和避障;靠近书案、景物或人物后能交互;从庭院探索切换到读简、梦境和梦醒;化蝶之后启用飞行、停落,还有梦境里的探索;用札记记录玩家遇见的故事和选择。

给 AI 编程工具提需求的时候,最好一次只描述一个可以验收的行为。比如:玩家靠近书案后出现交互提示。按 E 后停止移动,切换到读简镜头,让竹简稳定地落在双手之间。读简结束后进入蝴蝶视角,并开放飞行操作。这种描述同时包含触发条件、动作、镜头和结束状态,比一句“做得有意境”好落实多了。


项目里花费很多精力的部分,其实是让已经存在的东西彼此协调。草堂和树得可靠地落在地面上,池岸要有自然的转折,草不能像均匀铺开的地毯,人物走近建筑时镜头不能穿墙。蝴蝶也调整了前后翅结构、触角、翅面和翼拍方式,免得看起来像一只笨重的大蛾子。




声音也挺影响整体感受的。早期配乐偏电子,听着刺耳,后来换成了真人演奏的古琴《阳关三叠》,再调音量和淡入淡出。基础的梦蝶体验做完之后,又加了曲木、大瓠、观鱼和泥岸草龟这些可选相遇,分别联系《逍遥游》《秋水》里的一些想法。

反正就这样,AI 自己跑着跑着,最后搓出来这么一个小东西。你先看看视频吧。(左下角阅读原文可以体验,但是画面有点糙)
视频内容请点击文末公众号原文链接观看。