崇祯模拟器 Playtest · published
这一版没有新玩法,只做一件事:让同一件事,在所有地方说同一句话。
从前一个数字在项目里存了好几份。你在面板上看到一个数,问大臣得到另一个数,塘报里写着第三个数——三处都不算「坏」,只是从来没人让它们对过账。这一版就是把这些副本一份一份合掉。旧存档完全兼容,读档自动升级。
━━━ 你能直接看见的五件事 ━━━
这五条是玩家反复提的。这一版逐条走了完整回合(真模型、真存档、真结算),不是看代码看出来的结论。
一、让李若琏去抓人,结果李若琏被下狱了
这一族没有复现。误下狱三场、误杀三场,各跑三轮真模型:拟旨的、查案的、督办的、监斩的、押解的、缓刑的,一个都没被误伤。另一套人事专项十五项也全绿,包括「赦了又抓」——赦免下来的人,塘报绝不许当季反手再把他拿了。
但压测撞出一句新的:「骆养性并不应答,只展开诏书,露出『赐帛』二字」——押解官奉旨开读,诏书上那两个字是给被押解的人的,判定却把读诏的人算成了死者。补了两道闸:人名在引号外、死状词在引号内,那是被引述的文字,不算处置;词表里原先有「宣旨」却没有「开读」「展开诏书」「捧诏」这一族,也补上了。
引号闸不能简单写成「引号内一律不算」:「诏曰:『某某赐帛自尽』」那是真判死。判的是两者在不在同一个引号里,一外一内才豁免。
二、任命 A,结果 B 莫名换了职;孙承宗该能内阁首辅兼兵部尚书
兼职从前是必然失效的。一道旨授三个职,提取只报头一个,后面「仍兼掌兵部事」整句被吞掉,人拿到了首辅,兵部那一职凭空不存在。
先补了提取规则(一旨授数职,逐职各出一条),命中率从零升到约一半——这是模型输出的稳定性,再加几句话也只是把概率往上推。所以又加了一道兜底:旨文里明写而提取漏报的兼衔,按旨文补。三道收窄:只给已在名单里的人补衔(绝不凭旨文引入新人名)、职名必须能归一成规范职名(「掌兵部事」→「兵部尚书」,归一不出就不补)、已有该职不重复补。
现在是:内阁首辅·兵部尚书·中极殿大学士,三职俱在。「殃及第三人」也钉住了:一道任免旨,除本人与被挤位的那位之外,全朝职衔一处都不许动。
三、私聊议定了营建,营建册里一件都没有;大臣说燧发枪造好了,府库一点结果都没有
私聊那条路是通的(上一版已修),这一版验了全链:与工部尚书议定 → 挂成差事 → 差事届期 → 真进了城池面板的营建册,本省府库真的扣钱。
但发现另一个入口是断的:你直接在待颁清单里手写一道「着工部于某地兴建某仓」再颁布——这条路压根不认营建之议。旨下了、塘报也叙了,营建册里一件没有。现已接上,并做了两道去重,同一道旨再颁一次不会立两遍。铸器落库也验了:明旨鼓铸火器、限期解京,武库实册真有增项。
四、克复了后金,舆图上热区却不显示
账(领土归属)、旗(城旗归属)、面板热区(此地隶不隶版图)三处现在必须同答,任何一处不认都会被测试当场拦下。
顺带把「旗与地」理顺了:一面城旗就是一座城,打下城才算收复了那块地。此前旗的归属要回头去读省级归属,而省级归属又要等旗先变——两者互为因果,绕不开就只好开特例放行,代价是「一兵未发,整省易主」。现在旗是唯一真源,省级归属是它的投影。
五、削减开支,结果反而少钱
这条确实存在,是两处缺口叠在一起。
其一,幅度只认一种语序。「着内宫用度裁减一半」认得出,「着裁减内宫用度之半」——动词在前、幅度在后、中间隔着名目——一个字都抓不到,整句静默跳过。两种写法只支持一种,是最难发觉的那类缺口:常用写法一直好使,所以从没暴露。
其二,塘报报上来的名目是现编的,形如「内宫裁省充边饷」——主语在、费目词却没有,归不到「内宫用度」那一线。结果账上立了一条三十万的进项,而内宫用度那一行二十五万分文未减。你翻开岁计册:旨下了、用度没动,只多出一笔来路不明的钱。
两处都补上了。现在:内宫用度 25 万 → 12.5 万,内帑每季净额 10.4 万 → 18.7 万。
还有第三处,是这一版后半程补的:推演能报上来的事件类型里,压根没有「调整常项成数」这一类。九条国之常经(宗禄、京营驿传、百官俸禄、内宫用度、赏赉营建、盐课、关税、捐纳、田赋)本就是「把那一行调大调小」,而事件表里只有「新立一条项」「停掉一条项」,推演那一侧只能绕道。现已补上,模型可以直说「内宫用度调至五成」。至此这条链两头都通了:你写的旨文一头,推演报上来的一头。
顺带一条:调兵令三处不同步
你右键舆图下调兵令,舆图上当即多出一道虚线箭头,而军情牌和省府面板什么都没变,照旧写着「驻辽东」。同一支军,图上说它要走、牌上说它没事,颁布之后又忽然在途。三处现在都说得出这道令,措辞也与「在途」分明——令未颁不等于已开拔,混了就等于告诉你大军已经出发,而实际一步未动。
━━━ 这一版的主线:一份体检,从 58 条降到 0 ━━━
上面那些是症状。这一版立了一份「世界态一致性体检」:把同一份世界态同时喂给你看的那一侧和大臣看的那一侧,逐项断言两边答的是同一句话。首次运行报出 58 处不一致——人事 23、军队 16、财政 8、疆域 6、建筑 5。
现在是 0。挑几处说:
大臣手上那份职官表,与你面板上的从来不是同一份。你在面板上把某人下了狱,大臣照旧当他在任议事——光是两条写入路就红了十八条。修法不是给每个写入端再补一次同步(那是在增加同步边,N 个写入端就要记 N 次,漏一次就是一个 Bug),而是让注入那一侧永远从真源现算。这也解释了为什么以前「重启一下就好了」——那道对齐此前只挂在读档链上。
营建这本册,大臣那一侧根本不存在。你面板上明明在建的工程,在私聊、差事复命、廷议、塘报四条通道里一概查不到。玩家当面问「那座仓办得如何」,大臣只能顺着话现编——编出来的进度还会被提炼成见闻,进下一季塘报。
一支军在两座城的面板上各出现一次。驻军的归属键是「省」不是「城」,辽东下头有锦州、盛京两座城,同一支关宁辽军点两回。
在途之军有两个「在哪」。舆图说福建水师在日本,兵部实册说「在途·自福建开赴日本」现驻福建——实册那一侧才是对的。棋子现在画在现驻地,去向写进名牌。
赴外洋之军会从你正看的那张图上消失。前脚下令、后脚少一支水师,只能理解成「船没了」。现在实位棋子留在原地,目的地那张图上另出一枚略小的「来援」指示棋,标明是谁的援军、还有几日到。
同一笔钱两个取整。「本季欠解辽东」在浮窗上是 55.7 万、在大臣册子上是 55.74 万;玩家立的项额是任意数(比如二万三千四百五十六两),册子一取整就成了二万三千五百两。现在两侧同一个口径,非整之数照实写。
「结算后还剩多少」这两个数,大臣手上根本没有。那是浮窗框底常驻、你最盯的两个数;你转头问「下季还剩多少」,大臣只能自己拿净额去减,减出来的必然与面板打架。现在两侧同调一个函数。
史实档里两套账并存:浮窗按剧本走,注文按公式走,同一份世界态两个说法。
━━━ 大臣不再什么都知道,顺带省了不少钱 ━━━
这是玩家提的另一件事:「你问户部多少钱是合理的,但你问户部什么人当什么官,他理应是不知道」。
此前的知情范围只管两件事:在不在位、是不是厂卫近侍——管不了「是不是他那一摊」。于是户部尚书张口就报得出往季某职由谁担任。现在分了专档:往季职官归吏部、逐府库存银归户部,别部之臣据实答「此非臣职掌所司,请下某部查覆」。内阁总揽百司、司礼监与内廷近侍代天子查事,一律放行——要立的是六部之间的横向边界,不是把皇帝身边的人也一并挡住。
顺带做了一件对你钱包有好处的事:岁计、军器、物资、诸军见驻这四本大册,从前是见谁都发一整套,占了大臣提示词的四成有余;而任何一位大臣用得上的至多两本——兵部尚书手上那本岁计逐项收支,他既不管也答不着。现在只发给本管之臣,别部之臣改走查档。
实测(同一份世界态,第七季):
内阁首辅、司礼监一类总揽之臣 8374 字(照旧全带)
户部尚书 7516 字(省 10%)
兵部尚书 7188 字(省 14%)
礼部尚书 3919 字(省 53%)
越是「不该什么都知道」的那一位,省得越多;越往后期册子越厚,省下的也越多。上一版那次注入瘦身是 11145 → 7710(省 31%),两次叠在一起,你每次找大臣说话的开销明显低了一截。
关键是裁掉的同步挪进了「问到必须查档」那张清单:只裁册不改清单,大臣以为册上有、就不去查、直接编一个,那比不裁更坏。真模型验过:册被裁掉的那一侧确实会去查档,且答出的数与本管之臣一字不差。
━━━ 新立绘:西洋人物十八张 ━━━
从前召见一位西洋人,配出来的立绘常常是绯袍纱帽或明甲——整套判据说的都是本朝衣冠,拿去配一个佛郎机铳师,出来必然是错的。
这一批画了六型西人,各具青年、中年、老年三态,共十八张:耶稣会士(传教士、西儒、历算之士)、海商船长(番舶主、洋商、通事)、雇佣军官(铳师、炮师、教习操练的洋将)、贵族女子、商家女眷、平民女子。
配图的次序是先分男女,再看身份,最后落年龄:性别配错是一眼可见的错,身份配偏了只是不够贴切。年龄不交给模型算——模型未必算得清「此人在崇祯元年几岁」,引擎按生年落档更稳。模型选错性别也会被硬闸复判改正。
判据只认「这个人是西洋人」,不认「这件事跟西洋有关」:「佛郎机」「红夷」在本作里首先是炮名(佛郎机铳、红夷大炮),收进来就会把督造红夷大炮的孙元化式人物配成传教士;「通西洋事务」「西洋火器」说的也都是事不是人。这些都刻意排除了。
顺带把立绘定夺收成了一个入口。从前两处各写一串同样的三层判断,这一批要再插两道,抄两遍必然分岔——这也是这一版的主题。
━━━ 一句老实话 ━━━
上一版我们说「已修这两个字值多少,取决于有没有人回头去查」。这一版想补一句:回头去查也还不够,得让它自己每天都在查。
这一版加的那份一致性体检,目标状态是恒绿——红几条,就是同一个事实还有几条同步边没消掉。它不是修完就丢的一次性检查,而是往后每次改动都要跑的那道闸。上面那五件玩家反复提的事,之所以能一条一条落到实处,靠的不是这一次修得多仔细,而是它们从此有了一个不会忘事的看门人。
还想补一句,是这一版后半程学到的:拆掉一段旧代码,比加一段新代码更需要证据。查抄那两条旁路,看一眼就知道该拆——可「看着像多余」和「真的多余」之间,隔着一次对照实测。我们先跑了六种旨意各两轮,确认结构化那一侧一次没漏、旁路一次没补到东西,才动的手;动完又跑了一遍确认没拆出窟窿。上一版栽的那个跟头,正是没跑就动。往后凡拆闸,一律先取证。
祝诸位君侯言出法随,名实相副,中兴可期。