下载 App
开发日志 #01 —— 立项与生态内核
前天 05:245 浏览综合
开发日志 #01 —— 立项与生态内核
周期:2026-10-13 ~ 10-14
状态:生态模拟内核跑通,池塘能自己活下去
一、本期进展
1. 立项:把「控制」换成「引导」
游戏的最初动机来自一个问题:能不能做一个玩家不能直接指挥任何单位的策略游戏?
市面上绝大多数模拟经营,玩家本质是在下命令——造房子、派农民、点攻击。我们想做反过来的一件事:玩家只能改变环境条件,生物自己决定要不要来、长成什么样、能不能活下去。
于是定下了三条不可动摇的约束:
约束 含义
玩家不能选中生物 没有「单位」概念,只有格子上的生命
玩家只能改地形 / 投孢子 / 调环境 全部是间接干预
演化规则必须真实涌现 不能预设「第 5 天必定出现动物」这类脚本
核心体验目标写进了设计规格的第一行:
「我只是挪了块石头,三天后整个生态变了样。」
2. 网格与时间骨架
选 8×8 六边形而非方格,理由是每格 6 个邻居——比方格的 4 邻更能表现「扩散」和「包围」的差别,草的蔓延、水的结冰都会呈现出更自然的圆形轮廓。
时间切成两层:
天(1 回合 = 1 天,共 100 天)
子阶段:每天分白天和夜晚两段独立结算
这个双层结构不是为了凑复杂度,而是为了解决一个具体问题:有些事只该在夜里发生。结冰、草枯萎、夜行生物行动、能量衰减——全部挂在夜晚。白天负责生长和光合,夜晚负责消耗和淘汰。一天之内就有了「赚」和「赔」的节奏。
判定时序严格固定,白天 7 步、夜晚 5 步、收尾 4 步。顺序不能换:环境必须先于生物结算(否则生物读到的是昨天的温度),死亡必须先于孢子激活(否则刚死的格子会挡住新生命)。
3. 温度模型:一条正弦波撑起四季
全局日均温度只用了一条公式:
G_日均 = 15 + 15·sin(2π·t/40) + 3·sin(2π·t/11)
两个正弦叠加:40 天周期的季节波(±15)负责冬天真正冷下来,11 天周期的中期波(±3)制造「反常天气」。实际区间落在 约 [−3, 32.8]——注意并没有到理论上的 ±18,因为两条波极少同时取峰值,这反而让极端天气变得珍贵。
单格温度则在全局值上叠两个地形参数:
V = G_日均 + (G_子阶段 − G_日均) × rate + M
rate(热惯性):水 0.5(比热大,昼夜波动被压掉一半)、石头 0.8(波动放大)
M(恒温偏移):泥 +5,模拟发酵产热;冰 −2
于是泥地成了「冬暖夏热」的极端地形——夏天最容易热死生物,冬天却是唯一不结冰的避难所。这个设计后来直接催生了关卡「泥的悖论」。
季节摆动全额跟随,不做压缩。早期试过把冬天压缩到 −5℃ 以上,结果池塘永远冻不上,冬季循环完全失效。
4. 湿度:双层结构解决「蒸发完就没了」
湿度如果只做一个数值,会遇到一个尴尬:蒸发把湿度抽干后,就再也回不来了。
改成双层:
基础湿度 ← 基础湿度 + (G_湿度 − 基础湿度) × 0.3 (每子阶段)
实际湿度 = 基础湿度 + 蒸发累积
基础湿度由季节决定(夏 8 / 冬 1 / 春秋 4),始终向季节值缓慢回归——这是「底噪」。蒸发累积是独立计数器,蒸发时给邻格 +2,每天衰减 50%——这是「脉冲」。
好处是:夏天基础湿度已经接近凝结阈值(7.5),一次蒸发就能触发降雨;冬天基础只有 1,蒸发再多也凝不出水,池塘只能缓慢失水。年周期的涨落不需要额外写规则,它自己就浮现了。
5. 地形演化与三条生态循环
地形不是静态背景板,它有 12 条演化规则。其中最重要的三条构成了闭环:
循环 路径 作用
浅水循环 草蔓延到水边 → 水草交界生成泥 制造陆生生物的落脚点
冬季循环 草枯萎回空地 → 空地凝结成水 冬天把陆地还给水
水位循环 水多时凝结减半,水少时蒸发减半 防止一方单向吞并
第三条是负反馈,专门治一个实测出来的病:早期版本里,水会慢慢吃掉所有草,或者反过来。加了水位负反馈后,多种子统计显示水草泥三态共存率约 86%(206/240 组合)。
剩下 14% 会跑到单一态。我们决定不修——单一态是合法结局,设计上允许「灭绝」。追求 100% 共存会让三个评价指标(稳定度 / 韧性 / 意外度)趋同,失去区分度。玩家随机开局时小概率遇到「极端池塘」,恰恰是生态报告要捕捉的情况。
还删掉了两条死代码:草被淹死(水邻居 ≥4)、泥的浅滩扩张(水邻居 ≥3)。实测 100 天内触发占比 0.04%——因为草沿水边生长,几乎不可能三面被水包围。规则写在文档里但永远不触发,比没有这条规则更危险,它会让人误以为系统比实际更复杂。
6. 孢子:一颗种子,四种命运
孢子是整个游戏的核心动词。玩家投下一颗孢子,它长成什么,完全由邻居地形决定,命中即止:
邻居条件 结果
泥 ≥ 2 真菌
草 ≥ 1 且 水 ≥ 1 植物
石 ≥ 1 且 水 ≥ 1 动物
水 ≥ 4 藻类
都不满足 休眠(等待地形变化)
这个优先级表是游戏的谜题核心。玩家会逐渐学会:想在池塘中心养出动物,得先摆出石头挨着水的结构;想让孢子别浪费,就不能丢在纯水或纯草里。
「都不满足 → 休眠」是关键的宽容设计:投错了不会浪费,孢子会在原地等待,等玩家改变周围地形后再激活。
二、问题与风险
🔴 风险 1:涌现可能变成「什么都长不出来」
纯涌现系统最大的风险是玩家看不到任何反馈。如果条件苛刻到 10 次投孢子 9 次失败,游戏就变成了猜谜。
当前应对:孢子休眠机制 + 初始投放 3 颗孢子 + 图鉴开局全解锁(让玩家先看到「能长出什么」)。但这只是缓解,真实手感需要靠关卡教学一步步教。
🟡 风险 2:单一态结局的观感
14% 的种子会跑到水草单一态。虽然设计上允许,但玩家不知道这是「合法结局」,可能会认为是 bug。
当前应对:生态报告里做「韧性」指标。但报告本身还没做(下期计划)。
🟡 问题 3:温度公式的极值没到理论值
文档里写 ±18,实测只有 [−3, 32.8]。这不是 bug,但文档和实际不符会误导后续调参。
已处理:在设计规格里明确标注「两个正弦波极少同时取峰值,实际极值小于 15±18」。
🟢 已解决:地形演化把生物挤没了
早期版本里,草蔓延到生物所在格时会把生物直接覆盖掉。改成格子互斥:生物 / 尸体 / 孢子 / 休眠体占用同一格时,地形演化跳过该格。
三、下期计划
生物行为系统:植物蔓延、动物觅食逃跑、真菌分解共生、藻类分裂——四类生物各自的行动逻辑
繁殖与变异:子代继承父代特性并随机变异,特性不同的组合注册为「新物种」
物种注册表:类型 × 特性组合的命名与图标映射(4 底图 + 14 特性图标)
确定性随机:用单流 xorshift64,保证同一存档能复现
四、开发截图
主菜单。背景是手绘池塘插画,卡片采用墨绿纸面 + 暖褐描边的手绘风
#聚光灯gamejam开发者日志













