用 Codex 硬核复刻合成经营小游戏:8 天实战的爆肝、踩坑与真机调优 摘要
文档概览
这篇文章是一次面向 Codex 的实战复盘,核心不是展示“AI 自动写了多少代码”,而是展示一种更接近工业制作的协作模式:人负责产品方向、体验标准、审美把关和验收红线,AI 负责高密度执行,包括代码生成、资源整理、切图脚本、音频粗筛、自动化检查和预览编译联动。
作者的目标从一开始就不是一个“合成棋盘 Demo”,而是一个能在微信开发者工具里流畅预览、功能闭环完整的微信小游戏试玩版。这个试玩版明确要求包含:
- 完整任务系统
- 剧情推进
- 道具链
- 多级生成器
- 场景修复
- 奖励飞行特效
- 原生音效反馈
- 新手引导
并且要满足两个现实约束:
- 不能爆包,必须压在微信小游戏首包主包约 4MB 红线附近
- 不能只在浏览器跑,要在微信开发者工具乃至真机预览环境中稳定运行
文章按开发过程分为几个关键阶段:先确认没有现成商业级开源底层可复用;再自行搭建六层工程骨架;接着把“爽感”拆解成 AI 可执行的微交互规范;之后用本地 H5 工作台承载复杂配置关系;再处理素材采购、筛选与切图;最后进入微信环境下的验收、烟测与包体审计。
关键事实
项目周期与产出规模
作者给出的开发周期与产出数据如下:
- 概念梳理和素材沉淀从 6 月 11 日开始
- 密集开发期为 6 月 12 日到 19 日
- 总周期约 8 天
- 小程序源码提交约 58 次
- 工作台与经验沉淀文件约 59 个
- 工程文件总数约 363 个
- 图片类视觉素材约 296 个
- 音频资源文件 11 个
- 核心 JS 逻辑代码约 7790 行
- 微信预览包体大小约 3.9MB 到 4.1MB
这些数字不是装饰性统计,而是用来说明该项目已经不是聊天框里一句提示词生成的简陋玩具,而是具备中型小游戏雏形的可试玩工程。
游戏核心配置规模
试玩版内部的策划配置规模也被明确量化:
- 主线任务:45 个
- 基础与高级道具:57 个
- 多级物品生成器:10 个
- 剧情线索条目:12 条
- 场景修复目标:8 个
- 支线委托任务:9 个
这说明项目不是只有一个二维数组合成盘,而是已经包含任务推进、资源生产、剧情线索和场景修复等多套互相联动的数据系统。
工程骨架拆分
由于作者没有找到可以直接复用的商业级开源微信小游戏源码,只能自行从零搭建底层。最终,工程被强制拆成六层骨架:
game.js:游戏唯一入口,负责初始化微信 Canvas 上下文data.js:核心配置层,管理 57 个道具、45 个任务等联动关系state.js:全局状态机,负责存档、金币、体力和棋盘格子状态input.js:输入与视口交互层,处理手指点击、长按、拖拽和吸附逻辑renderer.js:Canvas 渲染核心,负责动效绘制、粒子特效和帧率控制audio.js:声音管理器,控制 11 种高频反馈音效的并发播放
作者的经验是,在缺少同类开源底层的情况下,先把入口、数据、状态、输入、渲染、音效这些基础职责切清楚,后续迭代才有稳定落脚点。
对 AI 能力边界的关键判断
文中的核心判断是:AI 会写代码,但不会自发理解游戏为什么“爽”。
作者踩到的最大坑不是 Codex 写不出功能,而是它在指令模糊时会很快生成一个“功能看似完整、体验却非常难玩”的版本。例如:
- 棋盘能合成,但界面死气沉沉
- 拖拽存在卡顿和生硬回弹
- 合成发生时没有足够的视觉爆点
- 任务完成后只是弹文字,没有奖励承接与资源飞行动画
因此,作者不是继续追加大而泛的需求,而是把体验拆成可执行的微交互规则,再交给 AI 实现。
重要细节
1. 项目目标不是 Demo,而是完整试玩闭环
作者一开始就明确否定两种常见误区:
- 不是“帮我写个合成棋盘 Demo”的网页玩具
- 不是只画几张 UI 概念图的自嗨原型
真正目标是“功能闭环、体验完整”的微信小游戏试玩版。它至少要同时具备任务系统、剧情推进、道具链、多级生成器、场景修复、奖励飞行特效、音效反馈和新手引导,还要在微信开发者工具内稳定预览。
这一目标设定直接决定了项目后续所有工作流:不能只追求单点功能实现,而必须同步考虑状态机、数据结构、资源体积、输入手感、动效节奏和平台限制。
2. 找不到现成源码后,先撕开“商业源码”的遮羞布
作者认为,使用 AI 做游戏的高效路径通常是先在 GitHub 或其他开源社区中找到同类项目底层,让 AI 先理解已有工程结构,再替换题材和资源进行改装。
但这次针对《绯闻港口》《Merge Mansion》这一类吸金合成经营品类,作者没有找到可开箱即用的微信小游戏级源码。能找到的东西主要只有两类:
- 只有二维数组合成矩阵的极简 Demo
- 和微信环境无关的普通 Web 页面
也就是说,缺的不是“合成逻辑概念”,而是一个能承载商业玩法闭环、适配微信小游戏环境、并且可继续扩展的数据与渲染底层。
在这种情况下,作者的应对方式不是继续盲目让 AI 从主循环开始散写,而是先按传统软件工程思路拆出六层骨架。这个动作的意义在于把问题空间收窄:以后每一项需求都可以明确归属到数据、状态、输入、渲染或音频某一层,而不是在一个巨型脚本里缠成一团。
3. “爽感”必须拆到微交互级别
文中最关键的方法论,是把体验标准拆成 AI 能执行的微交互清单。
作者举出的具体要求包括:
- 每次点击生成器时,要有轻微下凹的物理反馈
- 点击同时要配一声清脆的“啵”类音效
- 道具拖到相邻格子时,要有零点几秒的磁力吸附感
- 不能让道具松手后生硬弹回原位
- 两个道具重合合成的瞬间,必须在原地爆开一圈金色粒子
- 合成结果不能只是静态替换,需要有由小变大再回弹的缩放动画,即 Juice 效果
- 任务完成不能直接跳一段文字
- 应该先弹出结算牌
- 点击确认后,金币要沿贝塞尔曲线飞向右上角资源栏
- 顶部资源栏还要再闪烁一下,作为奖励落袋的确认反馈
作者甚至给出了一个简化后的 playJuiceEffect(x, y) 动效逻辑示例:先在前 10 帧每帧放大 0.04,再在 25 帧前每帧缩小 0.03,最后回到 1.0。这类实现不算复杂,但如果没有人先把“什么时候变大、什么时候回弹、为什么这样做”定义清楚,AI 很难主动补到这个程度。
作者还提到另外两个具体的体验调整:
- 不要一上来就把所有生成器都摆出来,而要跟随任务逐步解锁
- 不要用冰冷的“锁”字去挡格子,而要改成神秘的沙地迷雾,让探索感更自然
这说明微交互拆解并不只覆盖动画,也覆盖解锁叙事和界面表现语义。
4. 为什么要用本地 H5 工作台替代 Markdown 大纲
作者明确反对在复杂合成经营项目中只依赖 Markdown 大纲式策划文档。原因很直接:游戏运行时并不理解宏大叙事,它只认结构化数据。
当系统里同时存在 45 个任务、57 个道具、10 个生成器时,必须解决下列问题:
- 每个道具的前置是什么
- 每个道具后续可以合成什么
- 生成器的产出概率是多少
- 哪个任务会解锁哪一块沙地
- 线索道具合出后对应哪一段剧情推进
只要其中一个 ID 没对上,就可能造成:
- 合成后剧情不弹出
- 任务推进中断
- 状态机进入死锁
- 玩家面对无反馈屏幕不知所措
因此作者让 Codex 帮忙写了一整套可交互的本地 H5 策划与素材管理系统,而不是继续堆聊天记录和 Markdown 文档。