在上一篇 72 小时制作 3D 游戏的工作流拆解里,我谈的是 AssetHub、Blender、Unreal Engine 和 Claude Code 的分工。
如果换成 ChatGPT 和 Codex,该怎样开始?我会先选一个能玩完的小目标,让 ChatGPT 帮我把需求讲清楚,再让 Codex 进入项目逐项实现。游戏引擎负责把这些文件运行起来,而我负责拿起键盘,判断玩家到底看不看得懂、玩不玩得下去。
下面用一个假想项目「夜市寻物」说明做法。这是一份可以照着执行的开发路线,不是我已经完成的游戏案例,也不承诺固定工时。
先分清 ChatGPT、Codex 和游戏引擎的工作
在这套安排里,我会把 ChatGPT 当成企划讨论对象:缩小范围、比较玩法、整理玩家反馈。把 Codex 放在工程这一边:读取文件、修改脚本、检查改动,并在环境允许时运行命令。这样的分工是为了减少交接混乱,不代表两种工具的能力只能局限于这些用途。
ChatGPT 可以结合你提供的文件和上下文讨论问题;Codex 的开发工作流包含代码审查和终端等能力。具体能访问哪些文件、执行哪些工具,仍由当前环境与权限决定。ChatGPT 使用说明、Codex 开发文档可以作为功能依据。
游戏引擎则是检验场。对着聊天窗口讨论「跳跃更有弹性」,和角色真正落在平台上的感觉,是两回事。
第一步:把游戏压成一分钟的完整体验
「夜市寻物」的第一版只做一件事:玩家在一个小夜市里收集五个物件,再走到出口。移动、镜头、碰撞、收集、完成提示和重新开始,构成一个闭环。
我会把范围写成这样:
- 目标平台:先做 Windows 桌面版,键盘控制。
- 场景:一个小广场、三个摊位、一条清楚的路线。
- 角色:先用胶囊体代替人物。
- 操作:WASD 移动,固定斜上方镜头;第一版不做跳跃。
- 规则:每个物件只能收集一次,集齐五个后出口才能完成游戏。
- 反馈:画面显示收集数量;胜利后可以重新开始。
- 暂不加入:敌人、商店、背包、多人联机和开放世界。
刻意不做跳跃,是为了先少处理一种碰撞与移动问题。闭环成立之后,再考虑第二个机制。
给 ChatGPT 的第一段提示可以直接这样写:
帮我为「夜市寻物」写一页游戏企划。
平台是 Windows,使用 Godot 4.x,固定斜上方镜头,WASD 移动。
玩家收集五个物件后到出口完成游戏。
请输出:核心循环、场景清单、控制方式、胜利条件、
五条可实际验收的标准,以及第一版明确不做的功能。
请指出规则中没有讲清楚的地方,不要自行加入战斗或多人系统。
拿到企划后,先读一遍。比如「一分钟」是体验长度目标,还是强制倒计时?两者会产生不同的失败条件。这种决定应在写代码前做掉。
第二步:选择引擎,并把版本写进项目
这篇选择 Godot,是为了示范以场景和脚本文件推进的小型原型。已经熟悉 Unreal 或 Unity 的人,可以保留原来的引擎,把下面的任务拆分方式移植过去。
Godot 的官方第一个 3D 游戏教程涵盖移动、碰撞、交互与界面等基础,也提醒初学者 3D 比 2D 更复杂。完全没有引擎经验的话,先把基础教程跑通,再交给 AI 扩展会比较稳。
准备好 Godot 编辑器、Codex、Git 和一个独立的游戏项目文件夹。安装后记录实际的 Godot 版本;不要只告诉 Codex「用最新版」。让它按这个版本查文档,避免混用不同版本的 API。
先在 Godot 中建立空的 3D 项目,保存主场景并确认能运行,再把这个文件夹交给 Codex。企划保存成 GAME_BRIEF.md。ChatGPT 里讨论过的内容不会因为你换到另一个工具就自动成为项目文件,要明确保存或附上。
第三步:给 Codex 一份长期有效的工作约定
在游戏项目根目录创建 AGENTS.md,写下版本、范围和检查方式。Codex 支持读取这些项目指引,具体发现规则见官方 AGENTS.md 文档。
下面是给这个游戏使用的示例,不是网站项目的配置:
# 游戏项目工作约定
- 使用 GAME_BRIEF.md 规定的范围和已安装的 Godot 版本。
- 使用 GDScript;不要混用 Godot 3 的 API。
- 第一版只使用基础几何体,不引入新插件或外部资产。
- 每次完成一个可试玩的小功能,再进入下一个功能。
- 修改已有文件前先阅读;不随意重命名节点或移动资源。
- 保留正常工作的输入、场景和资源引用。
- 区分文件检查、引擎运行检查和人工试玩。
- 没有实际运行或试玩的项目,明确标记为未验证。
这份约定最有用的地方,是防止你第二天回来时,AI 又换一套架构。每完成一个可运行的里程碑,就留下一个 Git 提交,出问题时能回到确定可玩的版本。
第四步:先做灰盒,让角色真的走得通
灰盒就是用方块、平面和简单颜色代替正式美术。先看路线与碰撞,不急着追求夜市气氛。
第一个工程任务可以这样交给 Codex:
先阅读 GAME_BRIEF.md、AGENTS.md 和现有 Godot 项目。
本轮只实现灰盒场景、WASD 移动和固定镜头。
验收标准:角色可以移动;不能穿过摊位或走出场地;
斜向移动不能比直线明显更快;镜头能看见角色与主要路线。
不要加入收集系统或正式美术。
完成后说明修改了哪些文件、运行了哪些检查,
以及我在 Godot 中需要手动检查什么。
在 Godot 4 中,可以用 CharacterBody3D 组织玩家,用静态碰撞体做墙与摊位,之后再用 Area3D 检测收集。这是一个可供实现的结构方向,具体节点和脚本仍要对照实际项目检查。
这一轮我会特地撞墙、斜走、贴着摊位边缘走,再绕一圈回来。角色走不顺,后面的漂亮模型只会把问题遮住。
第五步:把「能收集」和「能完成」分成两轮
第二轮只做一个收集物:碰到以后消失,计数加一,而且不能重复触发。确认后再复制成五个。第三轮才接上出口和重新开始。
给 Codex 的任务里,要写出容易漏掉的边界:
实现五个收集物、计数界面、出口和重新开始。
每个物件只能计数一次。
未集齐时进入出口,要显示还缺多少个;不能触发胜利。
集齐后进入出口,显示完成界面。
重新开始必须恢复角色位置、全部收集物和 0/5 计数。
胜利界面出现后,不再接受移动与重复完成事件。
保留已有控制和碰撞。请给出逐项试玩步骤。
我会用三次测试检查它:少一个物件时走进出口、集齐后连续碰出口、重新开始后再收集一遍。单独看到「胜利」两个字,不代表整个状态流程已经正确。
第六步:把试玩问题写成可以复现的任务
「不好玩」可以拿去和 ChatGPT 讨论,但交给 Codex 修复时,需要更具体。
例如下面这段反馈,比「收集系统有 bug」更容易定位:
在市场主场景中,从出生点走到左侧第一个摊位。
碰到它后方的收集物时,界面偶尔从 0/5 直接跳到 2/5。
预期每个物件只加一。
请检查是否有重复信号连接或一次接触触发多次计数。
先说明找到的原因,再做最小修复。
修复后检查正常收集、重复接触和重新开始三种情况。
如果问题是「玩家不知道出口在哪里」,可以把场景截图和试玩记录交给 ChatGPT,请它提出三个小改动,并解释各自影响。选定其中一个后,再让 Codex 实现。不要同时修改灯光、镜头、路线和移动速度,否则很难判断哪一项真的有帮助。
截图能帮助讨论构图,却不能证明运动中的镜头、碰撞和手感都正确。录屏、错误日志和明确的复现步骤,往往更有用。
第七步:闭环成立后,再替换 3D 资产
现在才轮到摊位模型、地面材质、灯光和音效。可以使用自己制作、购买或有明确许可的素材;AI 生成的内容也要核对来源与使用条件。
替换时先选一个摊位,检查比例、朝向、材质和碰撞,再替换其他摊位。角色模型则额外涉及骨骼与动画,第一版保留胶囊体也完全可以。
常见的问题是:模型看起来有一张桌子,碰撞体却挡住了整条路;或者原来的收集点被新模型盖住。每替换一类资产,就重新走一次路线。
Blender 可以继续作为模型整理工具,但不是这套流程的强制前置条件。需要编辑器自动化时再研究 MCP 或插件。Codex 支持外部 MCP 工具连接,但连接能力不代表当前项目已经配置好某个 Godot 或 Blender 服务;没有相应工具时,编辑器操作仍由你完成。
第八步:把检查结果分开记录,再导出
我会要求交付说明分成三栏:文件与资源检查、实际引擎运行、人工试玩。不能把「脚本没有报告错误」写成「游戏已经好玩」。
如果 Godot 编辑器可执行文件已经配置为终端里的 godot 命令,可以先在游戏项目根目录做资源导入检查:
godot --headless --path . --import
这条命令等待资源导入后退出,不会替你检查镜头遮挡、玩家理解和完整通关。还要查看日志,并实际打开游戏运行。参数含义见 Godot 命令行文档。Windows 上如果没有配置命令别名,就使用编辑器可执行文件的实际路径。
随后在编辑器配置 Windows 导出预设、安装与编辑器版本匹配的导出模板,并创建输出目录。假设预设名称确实是 Windows Desktop,可以执行:
godot --headless --path . --export-release "Windows Desktop" builds/night-market.exe
预设名称必须与项目配置一致。导出后保留所需的配套文件,把整个导出目录交给测试者,而不是只随手复制一个可执行文件。
最后在编辑器外启动导出版本,重新测试移动、收集、出口、重开和退出。有条件的话,请一个没看过企划的人试玩,不先解释规则。记录他在哪里停下、绕路或问「现在要做什么」,再决定下一轮改动。
做到这一步,你得到的才是一个能交给别人玩的原型。ChatGPT 帮你把想法讲清楚,Codex 帮你把文件改到可以检查,真正让游戏成立的,是一次次具体的试玩与取舍。



