昨天在 qq 上和 bowen 探讨了《足球经理》(下文或称 FM)的原理,感觉意犹未尽。

FM 的本质其实是模拟(simulation):模拟一名足球经理人的职业生涯。但由于足球比赛(football game)本身就一种游戏,因此给用户的感觉就像是在玩游戏。事实上,FM 的设计者并不需要把它当成一款游戏来设计,它不需要经验值、奖励来帮助玩家取得成就感,也没有道具、boss 的概念,它的唯一宗旨就是真实(即使一些特性会打击玩家的积极性),越接近现实愿意玩的人就越多,由于成就感、虚荣心和各种刺激是现实中本来就存在的东西,因而玩家完全可以在模拟现实的过程中感受到它们。从这个角度看,引入积分系统以后的扑克游戏则一半是模拟,一半是游戏。

FM 的原理其实非常朴素,简单讲就是一台状态机加上一个随机数发生器。试想如果我们要模拟人体的神经系统,最直接的方法就是模拟每一个神经突触的活动,同样如果我们想要模拟一台计算机,也可以从每个逻辑单元开始。但不同的是(单核)计算机的执行是一个确定的过程,因为它的逻辑已经蕴含在了计算机硬件体系结构和程序员编写的程序之中,计算机在执行时虽然会根据不同的反馈进入不同的路径,但多次执行的结果应该是相同的。相反,FM 的模拟更接近于多核计算机,是不确定的。如果说普通的 RPG 是基于牛顿经典力学模型的话,那么 FM 则可以说是建立在概率论和控制论基础之上的。

一场足球比赛(包括足球和场上的每个球员)都可以看成是一个状态机,状态和状态之间的跃迁符合某些微观的概率分布。以射门为例,影响是否进球的因素包括射门球员的射术、抗压能力、射门角度、比赛日状态,和防守队员的位置、防守技巧以及守门员的反应快慢、扑救技巧等等。根据所有的相关因素游戏会计算出一个几率,这个几率再通过一个随机数发生器就可以转化为我们看到的结果:(1) 进球、(2) 打偏出界或 (3) 被守门员扑出,同时这个结果将作为输入驱动状态机进入下一个状态。诚然,玩家的决策(主观能动性)也会影响状态机中状态的转移,例如调整战术、更换球员。

每一次判定虽然都是随机的,有运气的成分,但整体上必然符合某种“规律”。一个球传丢了不代表什么,因为可以在接下来的几十秒内再抢回来,但如果一直传丢,那么要么是球员的传球技术有问题,要么就是战术有问题。同时是整体也存在于局部中,比如球队总是在伤停补时阶段丢球,一看发现是因为后防球员的注意力不够集中所致。

现实世界远比这复杂得多,而这种复杂性的根源是由于很多事情无法观察的,如果不能观察就不能量化,如果不能量化,就不能作比较,不能比较就很难做出决策,于是就只能凭借经验了。比如一个人领导力的高低,聪明的程度,意志力的强弱都是很难测量的,相反体育世界中的属性是相对比较好量化的,比如速度,力量,技术,这也是为什么只有“足球经理”而没有“职场经理”。

如果有一天 FM 的团队不做 FM 改做其他行当了,我也不会感到太惊讶,比方模拟公共场所发生突发事件(比如地震、恐怖袭击)时人群的行为,预测哪个出口可能发生大规模踩踏事件,比如根据一家公司的业务设定每名员工的“技术”属性,从而预测出一家公司未来五年内的业绩,又比如模拟美国总统选举结果等等。

但其实写一个这样的程序出来最难的还是怎么把现实当中的一件事分解成各个过程,然后抽象成一个个状态,并且提取出最关键的因素,然后计算出每个因素的影响的程度。据说 FM 在计算射正率时所使用的公式就是拍脑袋拍出来的。