Skip to content

SCAPI Skyline Project v0.1.148

Choose a tag to compare

@DionysusDWI DionysusDWI released this 29 Sep 08:33
· 27 commits to main since this release

SCAPI Skyline Project v0.1.148


[v0.1.148] - 2026-09-29

第一百五十二版:notes/257 那条数据丢失发现的修法 A 开关版 + 对照验收(默认关,行为不变)。
相对 v0.1.147 的变更:

1. 新开关 skyline.CorruptChunkRegenerate(默认 false = 引擎原行为)

打开后:TerrainSerializer23.LoadChunkData 遇到非 IOException 的坏档异常时额外返回 false
⇒ 更新器把该区块当作"存档里没有"、按同一坐标重新生成,而不是带着未反序列化的空内容继续。
为什么默认关:它改变"坏档时的世界演化",属引擎语义变更 ⇒ 按协作约定交审计/用户裁定。

2. 对照验收 4/4 PASS(heightlab/skyline-v0148-corrupt-regenerate.py)

同一个"坏档 → 编辑该区块 → 卸载保存 → 重开"实验,跑两遍(关/开):

开关 中心区块 nonAirCells 说明
关(引擎原行为) 281,844 → 1 复现 notes/257 §6:原地形被固化丢失
开(修法 A) 279,045 → 279,062 区块被重新生成,不塌成空(+17 = 那一格编辑的邻域效应)

另外两条:baseline-terrain-is-substantial(两区基线都 >10k 实心格)、switch-restored(结束时开关还原)。
账本同时佐证:关时 acceptedAfterFailure +1,开时 +0(它没有被当成"已加载")。

如实边界

  • 默认仍是关:本版只是把"修法"做成可复跑、可回滚的开关 + 证据,没有改变任何默认行为。
  • 修法 A 的语义后果:坏档区块会被重新生成(地形与原档不同,但自洽且有实体地形);
    原档数据仍然已经损坏——本修法只是阻止"空内容被写回、原地形被抹掉"。
  • 修法 B(先清零再返回)未做;notes/257 §4 仍列着三选一。

相对 v0.1.147:把 notes/257 的修法 A 做成默认关的开关 skyline.CorruptChunkRegenerate(打开后:非 IO 坏档异常额外返回 false ⇒ 该区块按同一坐标重新生成,不再带着空内容往下走)。对照验收 4/4:同一个『坏档→编辑→保存→重开』实验,关=281,844→1 格(复现数据丢失)、开=279,045→279,062 格(区块被重新生成、不塌成空);账本 corroborate:关时 acceptedAfterFailure +1、开时 +0。默认仍是关——语义变更交审计/用户裁定。README 9987 字符。