回合制与即时制的辨析
兵棋当中的回合制与即时制,是一对存在很大争议的术语,常常出现在计算机兵棋开发过程中,而往往争论者会厚此薄彼,择一而为之。因此需要深入分析两者的原理,统一指导开发者。
通常我们说的回合(Turn),更适合的翻译术语是轮,将轮分解为若干时段(Segment),进而再分解为若干时节(Phase)【注1】。有的时候时段并不作为一个术语,而是用来解释另一个术语,比如“Impulse”,这个词尚无妥帖的中文翻译,在日语兵棋规则中就直接音译成片假名“インパルス”,大致上表示执棋的某人根据意图去行动的时段【注2】。
轮-时段-时节的组合被主要用于确定走棋次序,也就是轮次表【注3】,从本质上说它并不是对时间的刻画,而是对操作的刻画,只不过刻画在“剧情”以内看似用到的度量仍是时间,相反对“剧情”以外的执棋的某人来说则没有任何时间度量。像围棋比赛中对棋手长考计时或者下快棋,是额外的度量,跟比赛核心是无关的。
而真正刻画时间,同时确切表达交战周期的词汇——回合(Round),很少被正确理解。我们要特别注意——在描述轮次的时候,往往第一轮会存在特殊的时段,后面的轮次没有这些时段——这就明显提示我们,不能将刻画操作所借用的时间度量等同于对时间的刻画,必须拆解成轮次(Turn)与回合(Round)两个概念。但是以往的文献对“轮次”与“回合”,以及“轮次表”与“回合表”的辨析是混同的【注4】。
为什么要拆出两种时间度量?实际上不是拆出两种时间度量,在轮次中体现的不是一般认知中的“时间”,而是次序,也就是前面所说的“对操作的刻画”。问题在于,我们对时间的定义就是用来刻画物体运动的顺序性,所以人们很容易反过来认为在兵棋上次序问题和时间问题是一回事。
举例来说,我们刻画了炮火准备的次序在发起地面冲击之前,但并不是刻画炮火准备的时间在发起地面冲击之前,这是两个截然不同的概念。在连续发起地面冲击之间并非必须存在一次炮火准备,然而只要有一次炮火准备,它就必须放在发起地面冲击之前,这是次序问题而非时间问题。从逻辑学的角度看,全称量词任意(Arbitrary)“∀”并不等同于存在量词存在(Exist)“∃”。也就是说根据常识,在兵棋上每个交战周期并不会因为跳过一次炮火准备而缩短,如果次序等同于时间就不符合常识了。
要想让行动次序和交战周期重合到一起,是一个非常精密的过程。假设炮兵部队受阻或者迷路,抵达阵地晚了,只要发起地面冲击的部队延后冲锋,炮火准备的次序就没有打乱,但是后续行动的时间就要跨入原本的下一个交战周期了。反过来如果地面冲击如期进行,后续行动的时间仍落在这个交战周期之内,炮火准备的次序就被打乱了。
我们在考量推演者能力的时候,不能将次序问题等同于时间问题,用时间刻画次序只是一种便利,不能反过来用次序刻画时间——正如通常我们不是在坐标轴上画出次序来度量时间(“祖孙悖论”)。所以交战周期必须是一个独立于行动次序的区间变量,回合不能等同于轮次。
因为次序问题的本质是排队论中的排队规则,本身不涉及时间。把兵棋推演的机制想象成一种服务,对每一步行动要提交一个裁决判断,很多步裁决的需求排队在一起,由人充当服务机构一个接一个完成。服务的对象(又叫顾客)是裁决判断,与服务机构构成服务系统,兵棋不是服务系统,完成裁决所需要的要素才是服务系统。棋都摆上,不推,就没有裁决需求,也就没有顾客;推了没人裁,也就没有服务机构。如果由一个人裁决就是一个服务台,由多个人裁决就是多个服务台,多服务台能够并行处理,提高效率。
顾客到达服务系统称作输入过程,那么顾客是怎么到达服务系统的呢?只要走棋,在一定时间内完成一定动作,导致一次裁决判断,就认为是顾客到达服务系统。这里要注意,小到算子能不能进山地格这种“自主判断”都是一次裁决。因此顾客到达服务系统的分布规律是含时的(裁决的产生涉及时间)。
服务机构“接待”每位顾客必须依照排队规则,兵棋的排队规则一般都是隐含的常识,没有哪本规则书上明说,即先到先服务和优先服务,这两种都属于等待制。有的时候先服务某个顾客,裁决结果对后续行动有利,我们当然愿意往前排,这就是先到先服务;像炮火准备则是典型的优先服务,只要有就必须先于其他。
有的时候,为了使战斗经过更加合理,必须划定优先服务的顺序,比如鱼叉的战术回合规定了按照“计划→运动→预定开火→探测→反应开火→结算”的顺序,既可以理解为轮次,也可以理解为优先服务。因此轮次在兵棋外部的根源是军事理论和条令规定,对兵棋自身而言则是排队规则的一部分,在这部分中仍然有先到先服务。
要特别注意的是,在排队规则中,还有一种损失制,又叫即时制。这个即时制与题目中的不一样,指的是顾客遇到排队不能即刻服务便离去,从离去角度讲是损失制,从即刻服务角度讲确实是即时制。如果只有一个服务台,就没有即时制;如果有多个服务台,则有即时制,顾客到另外的服务台去,理论上只要服务台多于顾客就一定有一个不用排队的服务台,而通常我们可以认为兵棋的排队规则中没有即时制。
那题目中的即时制指的又是什么呢?我们从一个特例来看。
在六角格上的机动最大值,等同于尺规的中继回合航程(这里以鱼叉为代表),使得每个六角格看上去相当于尺规的战术回合航程,这里就出现了六角格规则和尺规规则的对立统一。
战术回合是运动连续性(数学术语叫连续统)的离散差值区间,将一个单位时间(又叫模型最小时间常数)分解成步长(Time-step),每个步长描述了使模拟保持意义的连续运动片段【注5】。触发单位时间分解为步长的机制是冲突(这里用作分析推演的一个术语:Collision),也就是一方的行动或能力与另一方的行动或能力产生冲突/碰撞/事故,分解步长是为了确定冲突的半精确时空(精确要分解到瞬时点,半精确只需到步长段)。
很明显,六角格的ZOC机制正是为了产生冲突,使得运动停在半精确时空,这就是六角格与尺规的统一性。
尺规分解步长存在步长数,30分钟分成10个3分钟步长,3分钟分成6个30秒步长,10和6是固定的,这是按照时间分解,速度不同则空间也不均匀;六角格分解步长也存在步长数,却是按照空间分解,每格的实际距离是固定的,速度不同则时间也不均匀;这是两者的对立性。
无论一般的六角格兵棋也好,还是鱼叉这种尺规兵棋也好,“回合制”这种模糊的概念都不是必要的,反而都是所谓的“即时”在计算处理上的数学分割,即龙格-库塔法。在按最小时间常数移动的距离内产生冲突,要确定其半精确时空,在数学或计算科学中是取一半距离并留下有半精确时空的一半,再重复取一半直到半精确时空落在某一个使模拟保持意义的步长;鱼叉是从起点直接取十分之一个步长,半精确时空不在里面就取下一个直到在为止;六角格兵棋同鱼叉一样也是从起点取到半精确时空出现为止。
所谓的“即时”意在突出对抗双方同时操作,它的对立面是先后手,不是“回合”。实际上即使按照上述分割过程,分割本身没有禁止同时操作,因为分割是对时空的处理,只会影响服务系统的输入过程,而不会影响排队规则。
比如两艘驱逐舰同时发现对方、同时打出6枚反舰导弹、同时锁定全部来袭导弹、同时用“二拦一”战术打出12枚防空导弹,在裁决时看谁的导弹飞更快,先发生冲突者享受先到先服务。如果一样快,在任何条件下都不能区分谁先到,就多服务台同时服务。而先后手的困境是,如果先手是飞得慢的一方,却能不合常理地享受先服务,所以大多数涉及拦截的先后手兵棋都将后手方拦截的动作提前到不属于自己的轮次中。由此看来,先后服务与先后手是没有关系的。
于是,没有先后手的六角格兵棋和尺规兵棋,即使声明是“回合制”,本质上依旧是即时制,出现这种混乱源自对“回合”概念与“轮次”概念的混淆。我们不能因为看见“回合制”就认为存在先后手,也不能因为看见“回合制”就认为不是即时的。
我们对兵棋即时制的要求,不能以时钟流逝的每一秒都有算子在动为标准,因为我们真正关心的不是实时态势回显这类问题,而是冲突发生时刻的态势分析。只有将推演过程分割成一段段时间切片,我们才能处理所谓锁定后退的局部分析。
-----------------------
【注1】杨南征,《虚拟演兵——兵棋、作战模拟与仿真》,解放军出版社(2007),第51~53页。
【注2】塞巴斯蒂安·J·贝,《印太濒海指挥官》兵棋规则,第6页:“An impulse is a segment within the stage when a specific player executes Core Actions.”
【注3】同注1。
【注4】彭希文主编《兵棋——从实验室走向战场》,国防大学出版社(2013),第83~85页。此书对“回合”及“回合表”的描述与注1如出一辙。
【注5】王其藩,《系统动力学》,上海财经大学出版社(2009),第81~83页。