回到首页

末日港湾

我用 Godot 做的 3D 末日生存建造游戏,在废墟里拾荒、建设港湾,夜里围着篝火和镇民说话。从开场到结局、再到自由经营的流程都有了代码,完整通关还没验证过。

TYPE
3D 末日生存建造游戏
STATUS
流程代码都有了,还没验证过完整通关
WHEN
2026 年 4 月起
BUILT WITH
Godot 引擎、GDScript 脚本、卡通着色与描边
WHO
我一个人做的

这是什么

一天分成三段,白天去废墟拾荒,黄昏修设施、补储备,夜里在篝火边和镇民说话。最早我按“治愈系”来写,后来改了,先让玩家面对资源稀缺、设施衰败和孤立,篝火边那点暖意要挣扎过才有。

代码里一天默认 10 分钟,昼、暮、夜分别是 300、180、120 秒,时间倍率可以调日夜的快慢。第一天的教程按移动、拾物、建工作台、等夜晚、对话的顺序走。

一天十分钟,进度看五样一天默认速度下 10 分钟昼出去拾荒、探索、推任务5 分钟暮修补、加固、储备3 分钟夜篝火边和镇民说话2 分钟复兴进度五项加权,每项封顶,加到 1 进结局.40好感三位镇民合计 210.25建筑7 种关键设施.18任务9 项.10灯笼8 盏.07共餐5 次进度到 1 触发结局,之后在同一个世界里继续经营。

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 还会受篝火旁群体情绪的影响。名字听着像理论里的量,但代码里它们就是两个累积量,我并没有实现那套完整的理论。

规则观测、预测误差与信念更新规则观测 o信念给出预测 p平均误差的积累礼物喜爱1.00喜欢.75不喜欢.15昼.35暮.62夜.90时段规则把事件映射到 0–1常规事件取相关信念的均值p 与 o 都限制在 0–1poe = |p − o|只取差距,不保留正负无有效信念键的事件跳过E 是有效事件的平均误差S_new = .45 S_old + ES 是惊讶值保留旧值,再加入本次误差F_new = .72 F_old + E × stepF 是误差积累数值step 为实际更新间隔,取非负值S / F 的内部值不封顶为 1群体情绪还会继续影响 F信念更新b_new = clamp(b_old + .35 × (o − b_old), 0, 1)b 保持在 0–1,每次沿观测方向走完差距的 35%。规则参数与机制示意,没有实测轨迹,也不代表完整理论实现。

FIG. 2 · 观测怎样改变信念

示意图,0.35 这些数是代码里的参数。图画的是规则怎么起作用,不是游戏里跑出来的曲线。

今天去做什么

代码里有两条活动路径,旧的规则大概每 0.75 秒刷一次评分,新的候选选择在昼、暮、夜切换时开始,最多取 3 个活动。外部语言模型接口是可选的,没接上或者暂时不可用就回到本地候选。

新路径先预测每个活动会把信念改成什么样,把它和各项期望的差平方、按重要程度加起来,再减去不确定性降低的那部分,得到 G。只算偏好表里列出的键,期望和权重都限制在 0 到 1。

G 越小越容易被抽中,概率和 exp(−4G) 成正比。活动结束后按一张固定表改信念,比如拾荒让稀缺度降 0.06、路线安全降 0.04。到这就停了,把实际结果和预测比较误差、再回写的那一步还没做。

两条活动路径与候选评分旧规则活动约 .75 秒刷新规则评分 + 可选建议原有活动切换时启动候选昼 → 暮 → 夜可选外部语言模型给出候选缺接口时回退本地候选最多 3 个候选两条路径保留不同的活动入口预测结果 b′b′ = clamp(b + Δ, 0, 1)Δ 是预测的信念变化01外部 Δ 限在 −.2 至 .2u(b) = 1 − 2|b − .5|u 是不确定性替代量0.51候选分数 GG = Σ w (b′ − preferred)²偏好偏离,越大越不利− .3 Σ w [u(b) − u(b′)]不确定性降低越多,扣得越多preferred 是期望,w 是重要程度Pr ∝ exp(−4G)G 越低越有利,随机抽取一个执行活动固定结果表回写信念 b活动结果直接加到信念,未查到预测与结果的误差比较和回写。规则参数与机制示意,未运行验证。

FIG. 3 · 候选活动怎样被选中

示意图,图里的数是代码里的参数。结果和预测比较、回写的那一步还没做。

做到哪了