末日港湾
我用 Godot 做的 3D 末日生存建造游戏,在废墟里拾荒、建设港湾,夜里围着篝火和镇民说话。从开场到结局、再到自由经营的流程都有了代码,完整通关还没验证过。
- TYPE
- 3D 末日生存建造游戏
- STATUS
- 流程代码都有了,还没验证过完整通关
- WHEN
- 2026 年 4 月起
- BUILT WITH
- Godot 引擎、GDScript 脚本、卡通着色与描边
- WHO
- 我一个人做的
这是什么
一天分成三段,白天去废墟拾荒,黄昏修设施、补储备,夜里在篝火边和镇民说话。最早我按“治愈系”来写,后来改了,先让玩家面对资源稀缺、设施衰败和孤立,篝火边那点暖意要挣扎过才有。
代码里一天默认 10 分钟,昼、暮、夜分别是 300、180、120 秒,时间倍率可以调日夜的快慢。第一天的教程按移动、拾物、建工作台、等夜晚、对话的顺序走。
FIG. 1 · 一天十分钟,进度看五样
时长和权重是代码里的参数。五项各自封顶,加起来到 1 就进结局。
镇民怎么改主意
艾琳、博士、老陈每人存一组 0 到 1 的信念,是他们对世界、对我、对同伴的判断。认知大概每 1 秒实际时间刷新一次,收到的是规则转成的观测,送礼和打开送礼、建造面板产生的意图也会算进去。
图里 b 是信念,o 是观测,p 是从相关信念算出来的预测,e = |p − o| 是这次差了多少,E 是有效事件的平均误差。信念按 b_new = clamp(b_old + 0.35(o − b_old), 0, 1) 更新,沿着差距向 o 挪 35%,再限制在 0 到 1 之间。反复收到同一种观测,信念就会靠近那个值。
除了信念还有惊讶 S 和误差累积 F 两个量,都随新进来的误差更新、随时间衰减,F 还会受篝火旁群体情绪的影响。名字听着像理论里的量,但代码里它们就是两个累积量,我并没有实现那套完整的理论。
FIG. 2 · 观测怎样改变信念
示意图,0.35 这些数是代码里的参数。图画的是规则怎么起作用,不是游戏里跑出来的曲线。
今天去做什么
代码里有两条活动路径,旧的规则大概每 0.75 秒刷一次评分,新的候选选择在昼、暮、夜切换时开始,最多取 3 个活动。外部语言模型接口是可选的,没接上或者暂时不可用就回到本地候选。
新路径先预测每个活动会把信念改成什么样,把它和各项期望的差平方、按重要程度加起来,再减去不确定性降低的那部分,得到 G。只算偏好表里列出的键,期望和权重都限制在 0 到 1。
G 越小越容易被抽中,概率和 exp(−4G) 成正比。活动结束后按一张固定表改信念,比如拾荒让稀缺度降 0.06、路线安全降 0.04。到这就停了,把实际结果和预测比较误差、再回写的那一步还没做。
FIG. 3 · 候选活动怎样被选中
示意图,图里的数是代码里的参数。结果和预测比较、回写的那一步还没做。
做到哪了
- 复兴进度看好感、建筑、任务、灯笼、共餐五项,各自先封顶到 1,再按 0.40、0.25、0.18、0.10、0.07 加权。满项分别要合计好感 210、7 种建筑、9 个任务、8 盏灯笼、5 次共餐。
- 进度满了就触发结局,没有最低天数门槛,之后继续在同一个世界自由经营。这段代码有了,但从头玩到结局再接着经营还没验证过。
- 日常天气观测入口还是空的,结局也固定是庆祝,和想要的苦涩结局对不上。
- 自动化的验收和界面检查跑过几轮,都没有全过。当前版本能不能从头玩到尾,还没验证过。