(本文由 Codex 辅助整理,来自我做这个 demo 时的对话和试玩记录。)

二次元插图:主人慌乱地打开柜子和抽屉找猫,小猫藏在茶几下的纸盒里看着她,气泡文字是我家猫去哪了

AI 生成的主题插图:主人翻箱倒柜,猫在茶几下围观。

我有一次把猫送去朋友家寄养。这个朋友喜欢改装车,家里有各种汽车零件和轮胎。他把柜子、盒子这些地方找了个遍,都没找到猫,最后发现它躲在一个汽车轮胎里面,只有一双大眼睛盯着外面。

我觉得这个场景特别有意思。人把自己认为能藏猫的地方都找了一遍,结果猫躲在一个根本没被列入搜索范围的地方,还盯着人看。

最近想试一下 GPT-6 的 3D 建模能力,我就又想到了这件事:能不能做一个网页版的躲猫猫?字面意义上的躲猫猫,真的有一只猫躲起来,要自己走进房间找。

现在已经有一个能玩的 demo 了,暂时叫 Find Your Little Roommate。有三个不同的朋友家,可以走动、蹲下、开柜门、拉抽屉,观察一些小动静,然后找猫。

点这里试玩 Find Your Little Roommate。电脑用 WASD 走动、拖动鼠标看四周,C 蹲下,E 或点击翻找;手机左下是移动摇杆,拖动其他区域转头。

找猫的灵感

我家猫最近很喜欢躲在方形茶几下面的一个小盒子里。站着看,茶几刚好把盒子挡住;蹲下就能发现。它也会自己开柜门,钻到水池下方的橱柜里,或者跑进零食柜,有时候里面会传出一点声音。我家猫毛色比较深,躲到深色的壁炉里面又是另一种难找:那个地方明明看过,却没认出来。

所以我从一开始就坚持要第一人称自由走动。自己走到柜子前,绕到家具侧面,低头往底下看,视角变化得真的影响能看见什么。最初讨论时 AI 建议过半固定视角,点击家具就走到对应的位置。我把这个方案否了,因为自由找观察位置就是我想玩的部分。

叫名字、拿零食和小玩具也可以有,但我家猫叫了经常不出来,游戏里最好也保留一点这种不配合。最终还是得找。

至于认领猫、养成、寄养和接猫的剧情,我当然有兴趣做,但这轮先放着。当时我给 Codex 的要求很明确:先验证建模和操作玩法,看看现在的能力能不能把画面和交互都做出来。连柜门都还没打开,就开始设计亲密度系统,有点太早了。

这次怎么建模

我开始也问过 Blender MCP。看到别人用 AI 建模,很容易想到让模型在 Blender 里操作。但这个 demo 最后走的是另一条路线:让 GPT-6 在 Codex 里写 Three.js 代码,直接用程序生成房间、家具和小物件。

现在游戏的场景由 Three.js 管理,通过 WebGL 在浏览器里实时渲染;React 负责按钮、弹窗、手记和小地图这些界面。柜门是独立的对象,开门会改变它的位置和朝向,玩家走过去以后也真的会被家具挡住。

这种做法对迭代挺方便的。我说这个柜子要有内部空间、抽屉应该能拉开、沙发下面需要留一个能蹲着看到的缝,Codex 就能改对应的结构和交互代码。制作、修改和接入游戏在同一个项目里完成。

不过有一件事得说清楚:猫不是 GPT-6 从零生成的。 我让它去找了现成资源,最后用了 Poly Pizza 上 elkiotbear 的 Cat 模型,按原资源的署名许可使用。木地板也用了现成贴图。家具和房间主要是程序化几何,模型、材质、灯光和玩法再组合起来。

所以这篇评测说的是这套实际制作方式的表现。它没有验证「给一张照片,GPT-6 就能直接输出一个完整、精确、带骨骼的 3D 场景」。我这次也没有用旧模型跑同一套任务做对照,能说的是眼前这个 demo 做到了什么、哪些地方还得来回改。

建模与返工

初版已经有那个意思了:一个有家具的小屋,一只橘猫,能走过去翻找。我当时的评价也是总体不错,然后很快就开始挑刺。

比如盆栽。截图里叶子、花盆和柜板穿在一起,远看房间配色还挺舒服,走近以后就很离谱。

早期版本中盆栽与书架隔板、抽屉发生明显穿模

早期试玩时发给 Codex 的截图。盆栽和柜子穿在一起,这张图不是当前版本。

杯子也不太对。一个小东西放在远处,很容易被当成「这里有个杯子」接受掉,但第一人称游戏会把镜头送到它旁边。杯口、内壁、把手怎么接在杯身上,这些地方马上就藏不住了。后来杯子、碗、花瓶这类容器都补了真正的内部结构。

猫还经历了一次失败的美容。我觉得最初的小橘猫可以更可爱一点,low poly 也可以稍微平滑一点,就让它试着加五官。结果改完,我的反馈是:

这个猫模型感觉更奇怪了,还是用原来的吧。

早期尝试增加五官后,眼睛明显放大的橘猫模型

这版五官后来被我否掉了。当前版本恢复了原来的猫模型。

五官是加上了,可爱程度没有跟着增加。最后恢复原来的外观,再基于原模型做趴着、蜷缩和轻量的走动姿态,让它能适应不同藏点。

这几轮让我对「模型变强了」有了一个很具体的感受:它能把要求落实成代码,修改速度也快,但审美判断还是得我来做。有些修改代码上完成了,画面却比之前更怪。不能因为多做了一版,就默认那版更好。

后来我干脆提出,常用物件应该维护一个合集。杯子修对一次,下一关继续用这个杯子;柜子的内腔、门轴和尺寸检查过了,也应该能复用。现在项目里已经有了常用小物件和家具的共用构造函数,统一尺寸单位、摆放原点,再按场景组合。完整的关卡编辑器还没有,不过至少不用每个房间都重新发明一遍马克杯了。

让翻找有点难度

比穿模更影响玩法的,是我很快发现初版能操作的地方太少。

旁边明明有一个柜子,下面好几个大抽屉,却根本打不开。那我当然就直接排除它了。只要找出哪里有交互提示,再把这几个地方点一遍,猫基本也就找到了。

我想要的是一个简单的解谜、密室逃脱式的搜索过程。即使猫不在某个抽屉里,这个抽屉也得能打开,让我亲手检查之后再排除。家里的柜子大多数本来就能开,不应该只给答案所在的柜子做内部结构。

这一改,建模要求一下就具体了。柜体不能是实心块,门板要有厚度,柜内要留得下猫,开门时不能把猫挤穿。还有一些柜门和烤箱门,从外面没开门就像能看到里面一样,也得逐个处理。

光是看起来挡住还不够。点击也必须尊重遮挡,不能隔着关闭的门把猫选中。后来项目里加了检查,验证关门时挡得住、打开后能从合适的位置看到,家具的活动范围也不会穿过猫。自动检查能帮忙兜住这些具体问题,但「这个地方找起来有没有意思」,还是得进去玩。

有一种藏法是我特别想加的:猫就在房门后面的墙角。人把门打开走进去,敞开的门反而把它挡住了,要把门关上,那个角落才露出来。这个想法也是从我自己找猫的经验里来的,游戏里后来也加了。

还有高处的橱柜、沙发底下、被角、购物纸袋。难度应该来自各自的空间特点。蹲下能看到的地方,站着就应该确实看不到;需要关门才露出的墙角,也不能靠一个穿墙的交互提示泄露位置。

不同朋友的家

小屋能玩以后,我嫌它太小,想让搜索范围大一些,就让 Codex 去 Redfin 上找北美公寓的 floor plan。原来的小场景被换成了参考 Polaris at Rainier Beach B4 户型的两卧两卫公寓。

地方一大,又真的有点容易迷路,于是右上角加了小地图:打开是房屋俯视图,能看到玩家当前位置和朝向。地图只负责认路,不标猫在哪里。手机操作也从几个方向按钮换成了圆形模拟摇杆,方便一边走一边看。

接着我想试不同主题的朋友家。喜欢收藏玩偶的人,和喜欢摄影、天文学的人,家里能让猫钻进去的东西应该很不一样。最终这个版本做了三个场景,一共 40 个预设藏点:

朋友家户型参考我想让玩家翻找的东西
午后公寓Polaris B4,两卧两卫厨房柜子、衣柜、被角、沙发底等日常空间
玩偶收藏家的家Junction 47 A4 East,一居室收藏架、玩偶箱、小帐篷、前排玩偶后面
摄影和天文爱好者的家Veloce B14,两卧带书房器材箱、相机包、背景布后面、书桌下面

光有户型和主题摆件还不太够。我玩的时候一直觉得,这些房间可以再多一点灯、装饰、小家具,看起来更像真的有人住。所以又让它去看公寓照片,有 3D tour 就看 tour,再找生活博主家里的实际布置。

Junction 47 这套找到了对应的 A4 East 导览;Veloce B14 没找到对应 tour,就只把同楼照片和其他户型的导览当作装修参考。这些资料用来理解布局、比例、柜门样式和生活用品怎么摆放,游戏里的尺寸、窗位和通道仍然做了改编。拿到 floor plan 和照片以后,还是要把它们转成游戏几何,再检查人能不能走、门能不能开、猫有没有地方躲。

现在增加的东西包括沙发旁的阅读灯、床边的桌子和书、餐椅、厨房的切菜板和锅铲罐、浴室毛巾、拖鞋。零零碎碎的小东西其实很管用。一个台面上只有一只孤零零的杯子,和壶、杯子、备餐用品各有位置,看起来就是两种房间。

我觉得房间的「主人是谁」值得继续做下去。玩偶太多的时候,猫可以混在软乎乎的一堆东西里面;摄影器材多,就多了包、箱子和背景布。主题会改变搜索方式,后续做关卡也就有了方向。

线索别太明显

交互多了以后,我又觉得游戏有点像无脑遍历:把各种能点的物品都点一遍,迟早找到。

现实里通常还是有一点线索的。地上有毛,什么东西被碰倒了,零食散出来,玩具换了位置,或者某个柜子里刚才有一点声音。我希望玩家先觉得哪里不太对,再过去看看。

第一轮做出来的猫毛又太明显、太突兀了。地上的痕迹如果像专门摆出来的任务标记,就会很快被识破。后来把毛改成更短、更贴地、颜色更弱的细丝,但我还是觉得,总靠掉毛、倒下的毛线来提示,过于简单。

于是继续加异常的小动作:柜门轻轻动一下,盒盖抬起来一点,布帘晃一下,玩偶歪了,旁边的小挂件被碰动。摄影家的猫可以拨胶卷罐,玩偶家的猫可以碰到球或挤动兔子。这类动静比每次都在地上撒线索更接近我想要的感觉。

目前这些反应还是写好的局部动作,和本局藏点对应,猫没有在整个房子里自主活动。手记也需要玩家实际看见相关动静之后才记录。这里我还想继续调:提示要能帮助缩小范围,但看到一点动静之后,最好仍然需要开门、蹲下或换个角度,才能真的认出猫。

能力与局限

做完这次 demo,我的体验可能还是和原来差不多。AI 的能力肉眼可见地提升了,能把房间、家具、交互、界面和部署串起来,也能根据反馈继续改。但离一键交付一个符合甲方要求的成品,还有距离。这次我自己当甲方,还是得一直参与其中。

即使开工前已经写了非常详细的 PRD,想做出一个符合要求的 MVP,也仍然需要多轮反馈和修改。 自由走动、蹲下、柜子内部空间、遮挡、不能穿模,这些在文档里都写过了,实际做出来以后还是得进去看、进去试。盆栽穿模、柜子实心,属于写了要求却没有落实好的问题;后来觉得空抽屉也得能打开、线索不能太直白,又是试玩以后才更明确的判断。两种情况都有。

我觉得 GPT-6 已经能支持这种简化风格的 3D 小游戏原型,尤其是程序化的小家具和不同户型里的物件组合。修改成本也确实降下来了,我不用先手工做完一整套家具,才能进去试。但精细角色建模、完整四足骨骼动画、照片级室内还原,这个 demo 没有做到;说了「更可爱」以后,猫还被改丑过。能做出东西,和做出我满意的东西,中间还有这些来回。

不过这绝对不是一次 prompt 结束的项目。写这篇文章前,我让 Codex 查了本地记录:截至那次查询,主会话和五个资料、素材子任务累计约 8,535 万 tokens,其中约 96.2% 的输入命中缓存;非缓存输入约 320 万,输出约 52 万。这是多轮调用累计的记录,包含反复带入的上下文,不是一次请求的长度,也没有据此换算实际账单。

我在这个过程中做的事情,越来越像不断试玩和提要求。有了实物,反馈也会具体很多:「开了房门不关上反而看不到墙角」「线索别总是毛线倒在地上」。详细的 PRD 很有用,至少让开工时有明确的方向,但它还不能替我完成后面的验收,也没法提前写尽试玩时的所有感受。

项目最后从临时的OpenAI Site迁到了 Cloudflare Pages,作为纯静态网页发布。模型和贴图下载到浏览器以后,由玩家的设备渲染;玩游戏时不需要实时调用 GPT-6。

接下来想做什么

目前每局只有一只猫,从选定场景的预设藏点里挑一个,配上适合空间的姿势。它可以趴着、蜷着,也有局部的小动作;原公寓里还有被找到后短距离走出来的表现。但它暂时不会在我转身以后,从厨房跑到卧室换个地方藏。

活动起来以后会更有意思,也会更难设计。刚刚检查过的柜子,一回头猫又钻进去了,要怎么让玩家知道?玩具的位置变了、柜门状态变了,这些现在试做的线索,到那时才可能连成猫活动的痕迹。我不想让它到处乱跑,最后变成玩家永远查不完的房间。

更远一点,我想把自己家做成一个小小的 base。在家里陪它玩、喂东西,慢慢知道它喜欢什么、习惯躲在哪里。之后送去不同朋友家寄养,再去接回来。感情好一点,叫名字、拿零食也许更容易得到回应,但最终还是得自己去找。

玩偶家、摄影家都可以继续做,那个改装车朋友家我也还惦记着。轮胎已经先作为一个藏点做了尝试,完整的主题关以后再补。

等它能窝在轮胎里面,看着我把朋友家翻一遍,偶尔动一下耳朵,还不肯出来,我大概就会觉得:嗯,这回有点像我家猫了。

至于再往后的 AI 会做到什么程度,谁知道呢。我觉得技术更新会越来越快,工具也会越来越便宜。今天还需要我一轮轮盯着改的事情,过段时间也许就不需要了。这次的体验让我知道眼下要怎么跟它一起干活,倒也不用急着给以后的能力下结论。

我可能得多锻炼一下自己的语言表达能力,学会用更精准的专业语言描述需求。比如一句「做个能打开的柜子」,可以进一步说清楚:柜体要留出内腔,柜门绕门轴转动,关门时要挡住视线和点击,开门的过程中不能穿过猫。这些具体要求也方便交给 AI 写检查,验证它有没有做到。至于猫可不可爱、找起来有没有意思,我还是要自己进去玩。

我希望越来越多地让 AI 做执行者和验证者,自己把想要的体验、约束和验收标准讲明白,看到结果以后再继续反馈。今后肯定是人机协作的时代。对我来说,把需求表达清楚,应该会是一项越来越值得练的本事。