一个模拟世界不会告诉你它错了,它只会继续运行,并且看起来很合理。大发娱乐为此给系统配了一张体检单,从守恒、分布、因果和重复运行四个角度逐项检查,看世界到底在哪里跑偏。

跑偏往往不是崩溃,而是“很合理”

程序崩溃是最好发现的错误。模拟游戏里更难缠的是另一类:世界照常运转,居民照常上班,价格照常波动,只是某个环节悄悄偏离了应有的规律。玩家可能过了很久才发觉,“这座城市怎么没人生小孩”,或者“这个市场怎么永远不涨价”。

学术界对此有一个说法:验证是生成式社会模拟的核心难题。Larooij与Törnberg于2025年在《Artificial Intelligence Review》发表的综述,梳理了35篇同行评议的生成式基于智能体建模论文,报告约43%的研究只依赖主观评估,也就是看人或者大模型觉得“像不像”;只有大约一半使用了外部的客观验证。另有一项独立评测,由Santos等人于2026年发表在arXiv,用大巴黎和上海的真实移动数据检验两个基于大模型的城市模拟器,发现它们生成的行为在叙事上说得通,但与真实的出行距离、停留时间等规律存在显著差距。

这两项研究都是针对特定的模拟器和数据,不代表所有系统,但它们指出了同一件事:“看起来合理”是很弱的证据。大发娱乐的模拟世界同样面临这个问题,所以需要一套不依赖主观感受的检查办法。

游戏和科研有一点不同:游戏不需要预测真实世界,但需要让玩家在长时间游玩后仍然觉得世界前后一致。这个目标比“预测准确”低,却也更具体,它可以拆成能被程序检查的条目。下面这张体检单,就是按这个思路排出来的。

先认识跑偏的五种样子

症状 模拟示例 可能的原因
守恒被破坏 城市总人口无故增加,或某个账户凭空多出一笔钱 模拟器的计算漏洞,或模型输出被直接写入状态
分布失真 所有居民的通勤时间几乎相同 决策模板复制过度,个体差异被抹平
节律缺失一天里全城客流没有早晚高峰 行为缺少时间约束,只按空间选择
停滞或漂移 运行几十周后价格不再变动,或通胀无限走高 反馈回路过强或缺失,参数不平衡
对提示措辞敏感 换一种说法,同一居民的选择明显不同行为依赖文本细节,而不是状态变量

这五项并不是凭空罗列。第五项的依据之一是Santos等人的发现:他们提到行为多样性对提示配置不稳定。第四项则与游戏经济运行100周以后容易“死掉”的问题直接对应,长时间运行才会暴露。

第一层:守恒与不变量,最便宜也最先做

不变量是无论怎样运行都必须成立的条件。人口的增减必须能追溯到出生、死亡、迁入迁出;资金在账户之间流动,总量的变化必须等于外部注入减去流出;库存的减少必须对应一笔销售或损耗。每个模拟步结束后,程序自动对账,出现差额就立刻报警,并记录发生在哪一步、涉及哪些实体。

这类检查的价值在于不需要任何“真实数据”。它只依赖模拟器自己的规则,因此可以每一步都跑。凡是模型输出直接写入状态、绕开了模拟器的路径,最容易在这一层被抓到,这也是大模型只规划、模拟器负责计算这条分工必须严格执行的原因。

第二层:分布对照,看整体而不看个别

单个居民合理,不代表整体合理。第二层检查的是统计分布:通勤时长的分布形状、收入的分层比例、消费在不同价格档的占比、每周搬家的居民数。做法是先确定“参照分布”,来源可以是公开的统计规律,也可以是设计目标(比如设定“大多数居民通勤在半小时内,少数超过一小时”),再把模拟结果与参照比较。

需要强调的是,对大发娱乐城市AI这种游戏系统而言,参照分布很多时候是设计意图,而不是现实的测量。这时要明确写成“与设计目标一致”,不能写成“与现实吻合”。前者可以检验,后者需要真实数据,两者不能混淆。

第三层:模式复现,检验因果链而不只是数值

数值对得上,不等于机制对。第三层检查的是事件之间的因果方向。比如:新地铁开通后沿线房价应上升,而不是下降;工厂关闭后周边居民应先出现收入下降,再出现搬家。这些方向性的预期写成一份“模式清单”,每次修改规则之后自动重跑,看是否都还成立。

这与Castillo于2025年在arXiv上提出的思路相通。他用6个大模型对比957名人类参与者在外卖配送场景中的决策,报告部分模型在结果上通过了等效检验,但从决策过程看,这些模型却表现出人类没有的“人工过程”,并因此提出既看结果等效、也看过程等效的双重验证框架。放在模拟游戏里,就是既检查数值,也检查数值背后的因果顺序。

第四层:多次重跑,区分规律与运气

只跑一次得到的结果,无法区分是规律还是偶然。所以第四层是同一场景用不同随机种子重复运行多次,观察关键指标的波动范围。Tomašević等人于2025年在arXiv上报告的做法是:对一个科技论坛场景独立模拟30次、每次30天,再与真实论坛数据比较;他们发现用户数、日活等指标的置信区间与真实数据重叠,但模拟帖子的毒性明显更高。这个结果说明,重跑可以同时发现“对得上的地方”和“对不上的地方”。

在游戏里,这一层还有一个实际用途:判断玩家的操作到底造成了多大影响。若同一个决定在不同种子下,结果的差异比“做与不做”的差异还大,那么系统给玩家的反馈就是噪音,需要降低随机性或增加缓冲。

四层之间有先后顺序,也有分工。前两层便宜,可以每个模拟步都跑;后两层昂贵,要在版本更新、规则修改或参数调整之后集中跑。一个实用的做法是把它们排成“日检、周检、版本检”三档:守恒检查随每一步运行,分布对照每游戏周汇总一次,模式清单和多次重跑在每次发布前完整执行。

校准:发现偏差后改什么,不改什么

验证发现问题以后,需要校准。校准是一个回路:先定位偏差出在哪一层,再调整对应的参数,然后重新跑四层检查,直到偏差回到可接受范围。下面是一个模拟示例

假设检查发现,运行52周后,城市的租金与收入之比从设计目标的三分之一一路上升到一半以上,居民陆续迁出。定位后发现,租金调整规则对空置率很敏感,而空置率又受迁出影响,形成了正反馈。校准的选项有三个:给租金每期涨幅设上限,加入居民对租金的容忍度个体差异,或者放宽新住宅的建设条件。每个选项都改动一个变量,单独运行多次,比较结果。这里要遵守的原则是一次只改一处,否则无法知道哪一处起作用。

校准之后,还要留一份变更记录:改了哪个参数、从多少改到多少、依据哪一项检查、复测后的结果。半年以后有人质疑“为什么租金上限是这个值”,这份记录就是答案。大发娱乐经营AI与城市AI共享一部分参数,例如居民的价格敏感度,记录还能提醒改动会波及哪几个模块。

校准也有边界。不能为了让曲线好看,去改动本来正确的机制;也不能对着某一次运行的结果拟合参数,否则换个种子就失效。所以调参用的种子和检验用的种子要分开。

历史与战略模拟:验证更难,要说得更谨慎

城市和经济有可以对照的统计规律,历史模拟则很不同。玩家改变了历史,之后的事件没有“真实答案”可比。AI历史模拟能检验的只有内部的因果一致性:一个事件发生的前提是否在此前的时间线上成立,改变之后的后续事件是否被重新判断。这种检查可以做,但它不能证明模拟“接近历史”,只能证明它没有自相矛盾。

战略类模拟也有类似的边界。给对手AI加了更强的适应能力以后,需要检查的不是“它赢了多少”,而是“它有没有用到不该知道的信息”。这是一条可以审计的规则:对手每一次决策所依据的输入,都应该记录,并核对其中没有玩家在战争迷雾里的位置。大发娱乐战略模拟把这一项列为必须通过的检查,因为“聪明”与“作弊”的区别,只有靠日志才能分清。

没有验证过的东西,要如实说没有验证

大发娱乐的设计叙事里,验证体系是一份还在扩展的清单,不是一张已经结业的证书。本文所有示例数字都是假设场景,用来说明检查逻辑。任何一项功能,只要没有通过对应层级的检查,就应该被标为“未经验证”,而不是用“真实”“精准”一类的词去包装。

判断一个模拟世界是否值得信任,最直接的问法不是“它看起来像不像”,而是“它做过哪些检查,哪些检查没通过,又是如何处理的”。能拿出这份记录的系统,比一个只会说自己合理的系统要可靠得多。