v0.1.35b: 兼容层铲除——迁移链/版本戳/死表死代码/normalize 兼容批/死字段
【A+I】migrate.ts 迁移链(CURRENT_SCHEMA/MIGRATIONS/migrateIfNeeded/MigrationError)整链铲除→validateLoadedState 结构校验(seed/family/members 断言);信封统一 payload 单格式(去双格式兜底);APP_ID 保留 【F】schemaVersion 字段全删(domain/creation/save 8 处);SaveMeta.version 记游戏版本字符串 【C】chronicle 死表+saveChronicle 死方法(首行 return+unreachable legacy 僵尸)全删 【D/E】GameEngine __state globalThis 泄漏口+seed 三元(恒不可达)删除;engineFromSnapshot/noAutoCreate 保留(测试便利——非兼容机器) 【B/H】normalizeGameState 兼容批删:老档字段补(28行)/worldGen 重放(18行)/P0-2 占位 def(9行)/worldSim 字段批删;保留 npcs 重注册/headId 修复/d distress 防护;initSim 补 0.1.34 四键(唯一初始源) 【G】domain 收紧 5 兼容 optional(techniqueRank/Progress/tribBoost/worldGen 必填)+pcgen 必写 【测试】删 9 个兼容验证体(audit 0.1.0-era/全残缺矩阵/空 worldSim 兜底);5989 全绿——金钟罩零漂(新档结构全字段,删除不涉世界数值)
This commit is contained in:
@@ -42,20 +42,20 @@ export class GameEngine {
|
||||
this.kernel = makeKernel(this._seed)
|
||||
this.datapack = PACK
|
||||
if (opts.datapack) this.datapack.override(opts.datapack)
|
||||
// 组装World(内核注入→时钟/随机/总线单源)
|
||||
// 组装World(内核注入→时钟/随机/总线单源;0.1.35 移除 __state 泄漏口——seed 恒用 _seed)
|
||||
if (opts.noAutoCreate) {
|
||||
this.world = new World(createWorldState({
|
||||
seed: this._seed, surname: '占位', familyName: '占位', motto: '', difficulty: 'normal'
|
||||
}), [], this.kernel)
|
||||
} else {
|
||||
const state = opts.seed ? createWorldState({
|
||||
const state = createWorldState({
|
||||
seed: this._seed,
|
||||
surname: opts.surname?.trim() || '林',
|
||||
familyName: opts.familyName?.trim() || `${opts.surname?.trim() || '林'}氏`,
|
||||
motto: opts.motto?.trim() || '耕读传家,术法继世',
|
||||
difficulty: opts.difficulty ?? 'normal'
|
||||
}) : (globalThis as never as { __state?: GameState }).__state
|
||||
this.world = new World(state!, [], this.kernel)
|
||||
})
|
||||
this.world = new World(state, [], this.kernel)
|
||||
}
|
||||
this.facade = new ApiFacade(this.world, 1)
|
||||
// Kernel 总线 → World.out 桥接(attached 后同步 feed)
|
||||
@@ -132,7 +132,7 @@ export class GameEngine {
|
||||
}
|
||||
}
|
||||
|
||||
/** 已用旧内核时钟注册的世界快照,反序列化时公用(便捷入口) */
|
||||
/** 已用旧内核时钟注册的世界快照,反序列化时公用(测试/便捷入口——非兼容机器) */
|
||||
export function engineFromSnapshot(state: GameState): GameEngine {
|
||||
const eng = new GameEngine({ seed: state.seed, noAutoCreate: true })
|
||||
eng.restore(state)
|
||||
|
||||
Reference in New Issue
Block a user