下载 App
开发日志 06|走向交付:我们留下了什么,又还欠什么
修改于4 小时前5 浏览综合 包含 AI 合成内容
《神的沙盘》21 天创作挑战开发日志 · 第 6 篇 阶段回望:依据截至 2026 年 10 月 18 日的开发材料整理。本篇记录第一版交付的范围冻结决定;提交与审核结果仍以实际凭证为准。
写到系列最后一篇,我们终于能说清一件事:第一版交付什么、不交付什么。
这个区别不只是措辞。开发中最容易混淆的几件事,恰好是写完代码、构建成功、测试通过、玩家看懂,以及正式交付。而这一次,我们第一次被迫把“不交付”也写进日志——因为有一个花了大量时间的模块,最终没能进入第一版。
因此,这篇既记录已经留下的成果,也如实写下两件让我们不太舒服的事:一个被误判拖住的模式,和一次代价远超预期的技术选择。
本期进展:从“继续加什么”,转向“承诺兑现多少”
1. 游戏的方向,已经不再是一组散开的点子
咕咕的前瞻与调研打开了主题,少川的持续策划与原型让项目有了骨架。起星的提案带来了观察推演与补给方式的比较,预言家的动物交互材料把需求、搬种与接口依赖具体化。队长兼任集成、卡牌经济与操作 UI,也把合作问题落实到状态与交付边界。
这些贡献可以按已有材料介绍,具体代码、资产与投入仍应逐项核对,不能由一张五人职责表推断全部成员已经完成分工。
游戏真正留下的主线,是有限干预、环境回应、发现与补牌,以及带着遗产继续旅程。土地声音和提取不是另一款游戏,星球也不只是好看的标题装饰,它们都需要回到这条主线接受检查。
2. 六项承诺,比卡牌数量更值得对照
我们不把卡牌、模块或构建次数当作完成度百分比。回到最初的承诺,至少需要核对下面六件事:
| 交付承诺 | 已有材料提供了什么 | 还要确认什么 |
|---|---|---|
| 有限卡牌改变环境 | 出牌、库存与操作契约的实现和分项测试 | 最终版本误点、取消、失效来源是否零扣减 |
| 世界产生可追溯的牌 | 气候、种源与传播的设计及实现记录 | 来源到再次施放的完整过程是否真实且可读 |
| 扩张、迁移与遗产连续 | 迁移、继承与归档的阶段记录 | 同一局完整推进,而非测试补给或跳关 |
| 星球保留玩家痕迹 | 回望与混合展示支线的探索 | 同局近景和总览对应,演示区域明确标识 |
| 玩家理解并主动推进 | 局部试玩总结与后续纠偏 | 首次玩家能否理解缺条件、补给和下一步 |
| 成果能保存、继续与安全退出 | 存档服务与历史修复记录 | 最终版本往返一致,失败时不丢成果 |
这个表不是六项全通过的证明。它让我们知道,收尾应该补的是哪一种证据,而不是继续增加哪一种功能。
3. 一个没能进第一版的模式:咕咕模式
第一版交付里,没有「咕咕模式」。
这不是因为它的想法不好。恰恰相反,从最开始,咕咕就提出了这个项目里最有辨识度的一支方向:不做卡牌施法,而是随时拖动、查看、维护、升级的一颗地球——玩家不是去点“完成生态链”,而是看着一颗星球自己长出秩序。它和主题“涌现”是最贴的。
它最终没进第一版,是我们自己的判断失误,链条大致是这样:
| 环节 | 发生了什么 |
|---|---|
| 起点 | 咕咕模式最初被当成卡牌主线的延伸去做,而不是独立玩法 |
| 第一次误判 | 把“用卡牌改造养护”当成可行路径,投入了一轮实现 |
| 第二次误判 | 发现方向不对后,又把它改成独立养护模式,等于推翻重来 |
| 第三次误判 | 为了让它“像主界面”,反复调整大陆表现与配色,来回返工数轮 |
| 结果 | 到范围冻结时,它仍然只到“能跑通基本循环”,达不到可交付的完成度 |
真正的问题不在某一轮改错,而在于我们没有及早承认它是一个独立玩法。如果一开始就把它当作独立模式立项,它需要的是一套自己的交互、自己的存档、自己的验收标准——而不是挂在卡牌主线下面反复改。把它当成支线,就一直在用支线的预算做主线量级的东西,最后两头都不够。
现在的状态是:它的核心循环已经跑通(球面观察、拖动、补水、地形抬升、多大陆生态、独立存档),但没有经过首次玩家验证,也没有达到“第一版可以让玩家安心上手”的程度。所以第一版交付不带它。
我们把它保留在仓库里,不是删掉,而是明确标注为未交付的支线。它值一个独立的立项决定,而不是在一次范围冻结里被匆忙塞进去。
收尾教训:最危险的问题,往往不在新功能里
1. 代码存在,不等于玩家包里有它
10 月 7 日的记录里,一个卡牌拖拽模块已经写进项目,却没有登记到资源清单里,运行时出现模块找不到。
它提醒我们:本地文件存在和发行包可以加载,是两次不同的确认。新增模块、动态引用与默认入口,都要在真正构建后的路径里验收,不能只检查源码目录。
2. 存档不是把可见东西存下来就够了
10 月 10 日,干旱计数未入档的问题被修复;10 月 11 日,区域持续效果也补充到了存档中。
这两类状态不一定直接显示在画面上,却会决定读档后的湿度、生长和衰退。漏掉它们,就可能让“何时保存”改变世界接下来的命运。
修复的意义,是让恢复更接近原世界继续运行,不只是读回几棵树。但历史修复通过,也不能替代最终版本的完整保存回归。
3. 测试变红,要先查前提,不能急着宣布原因
新增机制会改变旧测试的前提。湿度衰减变了、卡牌数量增加了,原先写死的断言就可能失效。这类红灯需要更新测试,不是关闭机制让它重新变绿。
另一些失败依赖前序状态,隔离用例又不能复现。10 月 11 日的记录中就保留了待定位问题:既不能确认是回归,也不能排除。
我们需要的是分类、复现和解释,而不是把所有失败都称为旧测试,或者把所有历史通过都累加成当前全绿。报告也应标清版本、配置与权威批次。
4. 过早自建框架,把成本推到了失控
这是本次开发里最贵的一个教训,也是最该被记住的。
项目早期,我们把大量精力投入到一个自研的通用 Lua 游戏框架(仓库里的 gf/)上——它有自己的一整套目录、测试与工具链。它一度看起来很像“正经工程该有的样子”:模块化、有测试、有规范。
但它和这个游戏的真实关系是:《神的沙盘》运行时几乎不用它。游戏实际依赖的是引擎自带的 urhox-libs,而 gf/ 是被蒸馏出来、又移出去的通用框架。我们为它写了大量代码与测试,却基本没有变成玩家能看到的体验。
代价不只是那部分代码本身。更贵的是它带来的连锁反应:
| 连锁反应 | 后果 |
|---|---|
| 目录与概念变多 | 每次改动都要先分清“这是游戏代码还是框架代码” |
| 上下文变长 | 后续每一轮对话都要先理解这套自建结构,成本被反复放大 |
| 返工变多 | 咕咕模式等支线又在上面叠加,进一步加深了耦合与重来 |
累计下来,整个项目消耗了约 40 万积分。这是一个事故级别的数字——不是某一次调用太贵,而是方向选择从一开始就把单位成本抬高了。如果一开始只依赖引擎自带能力、把力气全放在游戏玩法本身,同样的目标可以用小得多的代价达到。
我们把它写出来,不是为了自我批评得好看,而是因为它是一个可复用的判断:
- 在 21 天的 jam 里,自建通用框架几乎必然是负收益。引擎已经给了的东西,不要重新发明一遍。
- 判断“这段代码值不值”的标准,不是它像不像工程,而是它会不会变成玩家能感知的东西。
- 如果某个模块长期不产出可见体验,就应该被质疑,而不是因为“已经写了”而继续投入。
这段教训对咕咕模式同样成立:它之所以反复返工、迟迟不能交付,一部分原因也正是它被放在一个过度自建的底座上,每一步都比应该的贵。
问题与风险:快速产出,也需要可靠回退
10 月 11 日的风险台账记录,项目当时仍没有版本控制,快照成了重要的回滚手段。一次文档误删后,其中一篇只能依据当时的代码重新整理;说明可以重写,当时为什么作出某个判断,却未必能够完整恢复。
多人、多会话并行时,这个风险会随共享文件和状态增加。集成不是最后把文件放在一起,而是持续确认谁修改了什么、哪份结果有效、出错后怎样回到已知状态。
验证范围也仍不均衡。有些测试带明确断言,有些只确认能启动;常规门禁当时没有覆盖全部沙盘专用测试。这里列的是历史风险,不宣称它们在最终交付日前已经全部关闭。
目标设备的触屏、加载与帧时间,以及最终提交、提审和审核结果,也不能用一次构建成功代替。目前材料不足以给这些项写下完成结论。

后续计划:先交付第一版,再谈支线
第一版的范围已经冻结,优先级按下面排序:
- 完成第一版的交付验证——主线完整旅程、存档往返、目标设备表现,逐项拿到证据,而不是靠构建成功代替。
- 把咕咕模式留作独立立项——不塞进第一版。它需要自己的验收标准、自己的首次玩家验证;如果继续,就按独立玩法重新排期,而不是继续当支线修。
- 清理过度自建的底座——把不属于游戏运行时的框架部分与游戏代码彻底分开,避免它继续抬高每一次改动的成本。
回看最初的前瞻,我们真正学到的,不是复杂系统越多就越接近涌现,也不是工程结构越像“正规项目”就越好,而是每一条关系、每一行代码,都要能落到玩家看得见的地方。
世界会回应玩家,只是第一步;玩家能够认出这份回应,并愿意继续,才是我们还要兑现的游戏。 而这一次,我们还学到另一半:别把力气花在玩家永远看不到的地方。









![[开发者日志 4]截图](https://img2-tc.tapimg.com/moment/etag/FjiWoT5yTj0Br0Mkq72XSIG1G2Az_20261018185503.jpg/_tap_ugc_m.jpg)





