文档

# 06 · 世界模拟引擎与事件、战斗

世界在玩家不看时也要真实运转。本章定义模拟层的运行规则、事件库结构,以及文字版战斗方案。 本章偏工程与内容结构,模拟核心必须为纯 TS 可单测层(见 10-tech-architecture.md)。 状态:M0 设定已拍板(2026-09-23);战斗为抉择制自动演算,见 §6 与 15。


1. 时间驱动:行动结算制 + 惰性补跑(2026-09-23 用户定稿:时间不自然流动)

  • 没有实时流逝的时钟:世界时间只在玩家确认行动时推进。玩家停留,世界停留(不挂机、不自动涨修为);
  • 玩家提交"耗时行动"(吐纳一时辰/行路半日/闭关一旬/等候到清明)→ 模拟引擎按目标时刻一次性补跑所需的各层 tick,产出事件流与"此间简报",再把世界交还给玩家;
  • Tick 仍分层(决定补跑时结算什么):
层级 触发粒度 结算内容
时辰 tick 每 2 小时游戏时间 行动结算、NPC 当值位置、天气小变、伤势、灵气恢复
日 tick 每日 饥寒、商铺开集、对话冷却、传闻再传播一轮、民生微动、玩家行踪被谁看到
节气/旬 tick 每 ~10 日 粮价、资源恢复、事件链推进、NPC 年龄推进(按年折算)
年 tick 每年 生老病死、任免更替、势力积怨、长期工程(山门新建/围城)、年成总判
旅途 tick 移动中按里程 路途事件抽样、遭遇、到达
  • 补跑采用惰性降频:远离玩家的地域只结算人口/物价/势力等聚合数值,具名 NPC 用年龄/状态快照压缩;低配手机可承载数千格世界;
  • 补跑结果按 07 知识过滤后才呈现(你闭关出来听到的世界,是别人愿意让你听到的世界)。

2. 事件总线(Event Bus)

  • 一切发生的事都是带结构的 GameEvent:
GameEvent {
  id, time(年/节气/日/时辰), type, severity
  location?(格/聚落/势力范围)
  actors[](涉事人/势力/妖物)
  cause?(因果链:由哪个事件引起)
  visibility:公开 / 势力内 / 私密 / 仅亲历者 / 绝不可知
  rumorSeeds[](此事若被传开,生成的说法模板,带失真参数)
  effects(对民生数值/关系/资源的写入)
  chain?(后续事件挂点:几日后、何种条件下触发)
}
  • 事件写入**编年史(公开大事)与传闻网络(可失真传播)**两个去向,玩家是否能看到由信息系统裁决(见 07)。
  • 内容作者只需在事件数据文件里填模板与权重,不写引擎代码。

3. 事件库(继承旧设 + 文字化扩展)

3.1 世界/民生类

  • 兽袭聚落(继承 raid):妖物袭村,提前有征兆(犬吠、失踪鸡犬、猎户见迹),玩家可在时间窗内驰援;功成 → 善因/谢礼/生祠;坐视 → 人口、稳定大跌,县志记恨;
  • 年成:丰/平/灾(旱、涝、蝗、雪),联动粮价、流民、粮商囤积、官府赈粜;
  • 瘟疫/瘴疫:封村、药铺涨价、走方郎中成名、患者被疑成"中邪"(道心/魔修冤案事件);
  • 婚嫁丧葬/社戏庙会/春祈秋报:人情往来高发场景;
  • 流民与匪患:灾年流民→落草→剿匪→招安链条,control 低的格子逐步滋生山寨;
  • 商路事件:镖队失踪、码头封冻、漕帮争地盘、牙人哄抬物价。

3.2 修仙界类

  • 破境异象:他人破境的劫相可见可闻(按距离与异象烈度),魔丹引魔修、正道丹引来贺客;
  • 宗门动静:开山门收徒(近期履历、荐书、根骨测试)、讲经法会、掌门坐化、长老争位、封禁后山、通缉叛徒;
  • 夺宝/夺地:灵眼之争、遗迹出土、两宗摩擦→逐格冲突(§5);
  • 坊市风波:鉴宝大会、拍卖会、有人卖假丹吃死人、魔道潜入;
  • 朝廷:缉妖司招募、加封国师、镇邪卫调动、灭一门"妖邪"的罗织案。

3.3 天象/时令(继承血月/雷劫/日循环)

  • 血月:妖兽活跃上限提高、魔事高发、破魔/成魔双向窗口;
  • 雷暴雨/雪暴/彗星/日食:影响移动、破境"时"维、世人恐慌与舆情;
  • 节气固定事件:冬至祭、上巳、中元(鬼节,与死后事/执念线强联动)、除夕。

3.4 个人类(玩家或 NPC 发起)

  • 传书邀约、红白请柬、寻仇、寻恩、拜师考验、师门考核、闭关之约;
  • 炉鼎/双修诱惑(明确做成危险的因果/道心抉择,不做风月消费);
  • 托孤、托付后事、借债、担保人违约连坐。

3.5 志怪/真相类

  • 鬼宅、狐灯、枯井、无名碑、托梦、阴兵借道(克制留白,见 01 §8);
  • 真相碎片产出事件(每世界 24~36 枚,数量随本世真相定制,与险地/大人物/前世痕迹绑定,不做打卡清单,见 18 §1)。

3.6 事件链与"不读档也合理"

  • 事件可有前后手(兽袭后:孤儿→收养/送人/流浪,十年后成为猎户或匪;救下的人可能在关键时辰出现);
  • 玩家不在线/已死亡,链继续走;世界不需要玩家也成立。

4. 事件抽样原则(内容设计约束)

  • 权重不只是随机:地域 danger、control、时节、血月、玩家因果、势力关系、传闻热度共同决定;
  • 密度克制:宁少勿滥。寻常日子要允许"无事发生"(日志写平淡的好事:集市热闹、新醅上市),大事才砸得响;
  • 事件文案必须给可行动的尾巴(可查、可问、可追、可装不知道),不能只是播报。

5. 势力战争的文字化呈现

  • 战争以格为推进单位:摩擦→封路→夺格→围城→破城/议和,每步产生战报事件;
  • 玩家视角按信息渠道分级:本城告急(亲历)/败兵传言(失真:人数越传越离谱)/朝廷邸报(官方口径,可能粉饰);
  • 玩家可选角色:守城、带信、护送家眷、发国难财、开门说降、趁乱取一物——不必做英雄,世界允许小人物的活法。

6. 战斗:抉择制自动实时演算(2026-09-23 用户定稿)

  • 三段式:① 遭遇抉择(动手/逃跑/理论/威慑/贿赂/欺骗/劝降/求援/避开…,按情境动态出现)→ ② 自动实时演算(底层实时,玩家战中不操作,只可观战/快进/看结果)→ ③ 战后处置(胜而敌活:放走/索取/逼问/抓捕/劝降/废修/处决/医治…;敌死:搜身/埋尸/曝尸/分尸取材/火化/毁迹/割首/献祭/报官…;敌逃/己败另有分支);
  • 特殊情境分支:野外妖兽、主动求战、好友同门切磋(点到即止)、擂台大比、入门大逃杀、秘境黑吃黑、军阵执法、血月妖潮——规则与处置各不相同;
  • 完整规则(三气、对峙面板、打法基调与物用许可、心魔照见、妖兽参数、平衡红线)全部见 15-combat-shenshen.md;
  • 与模拟层接口:战斗是输入种子可回放的实时子循环;战后事件(名声、战报版本、死亡/被俘、掉落、情报)回流事件总线。

7. 妖兽(继承五类,按 hex 地形出没)

妖 地形 识别剪影(转文字:第一句描写的任务) 特性
铁背蛟 高山 覆瓦背甲、长吻独角 甲厚血重
赤鬃狼 平野 瘦长跑手、九根红鬃 成群、速快
玄石魈 高岭 叠岩巨猿、背嵌妖晶 最重最伤
百足蜈 湿地 贴地节身、毒钩尾 剧毒
火妖狐 平野 三尾白梢、额焰印 最速、善惑(与道心线联动)
  • 血月上限提高(继承);妖有妖丹与材料,杀/放/驯(灵宠)三选都是因果;
  • 妖兽种类需持续扩充(二期),但每只必须"一句话能认出",不要色块怪。

8. 模拟层测试要求

  • 抽样分布、经济波动、人口更替、势力推格、传闻失真、五维合丹等全部写 Vitest 单测(给定 seed 断言结果与边界);
  • 提供"百年快进"调试命令:无玩家世界跑 100 年,断言不崩、人口/势力不失控(平衡回归基线)。