查看原文
其他

游戏的社会物理学初探

Pob 腾讯游戏学堂 2022-11-17

文 | Pob

腾讯互动娱乐 研究员


科学并非必然以数学工具为基础,但是一门可以定量演绎的科学必须有数学的辅助。游戏是一个有机的系统,以游戏本身的规则为基础,又掺杂了人的复杂行为;如果游戏是一门科学,其规模和领域细分程度也必然繁杂。本文以剑侠情缘“历代名将”团战任务为切入点,初步探索如何用数学的理论来辅助游戏的设计和体验的优化。文章或有欠缺之处,欢迎指出,讨论。


一. 游戏的人群体行为过程-《剑侠情缘》“历代名将”团战



历代名将是一个涉及多个联盟和游戏boss之间互相对战的游戏任务。游戏可以按照Fig. 1粗略的理解:有两个联盟(游戏中称为“家族”)和以一个历史人物设计的boss,游戏的目的是尽量对boss造成伤害,对boss造成的伤害高者胜利;另外,联盟之间依然可以进行对战。在游戏过程中,每个联盟的参战人数可能达百人;对战中,联盟会有专人进行对战指挥。指挥人员会通过游戏中的语音功能要求所有参加对战的本联盟玩家到某个传送点进行集合,进入副本地图,并要求玩家尽快冲刺到boss处进行攻击输出;如果死掉,尽快重新到达集结点并重复游戏过程。


[ Fig. 1 “历代名将”游戏过程示例 ]


如Fig. 1所示,两个联盟的玩家在冲向boss的过程中,有可能因地形原因提前遭遇并进行对战;在boss处,联盟1,联盟2和boss每一方都会对其他两方造成伤害。


对于如上所述的一个游戏配置,那么在游戏进行之前,我们可能会有以下的问题:哪个联盟会赢得任务?赢面和联盟战力之间的量化关系是什么?赢面和集合点的关系?赢面和地形的关系?各方之间互相造成的伤害是多少?


总而言之,我们能不能用一个数学的方法来量化地描述整个游戏从开始到结束的动态过程呢?和其他使用数学工具的理论一样,要达到这个目的,我们需要对游戏进行抽象化。


二. 如何抽象游戏:“历代名将”游戏本质



我们需要将游戏过程抽象为数学可以描述的对象。抽象的过程分为两步,首先对游戏的空间进行抽象,然后在该空间里对游戏的动态过程进行抽象。


1. 游戏空间的抽象


为了能够方便的用数学工具来描述游戏的场景,我们把游戏里的环境描述为图(graph)。如Fig. 2所示,我们对二维空间抽象为图,每个节点(node)代表一个玩家可以处于的位置,相邻的节点之间通过有向边进行连接。玩家可以通过有向边从一个node移动到另一个node。只要graph的node数量足够多,任何一个游戏场景里的空旷地面都可以用这样一个图来表示。实际上,一个三维空间也可以用这样的图来表示。


[ Fig. 2 对游戏中的二维地面抽象图,每个节点代表代表一个玩家可以处于的位置,边表示玩家可以移动的路径 ]



游戏中的环境往往不是空旷的,比如地面上可能由墙体,河流,山川等等玩家无法到达的位置。对于无法到达的位置,我们将空间graph中对应的node进行移除,如Fig. 3所示。


[ Fig. 3 用移除的点来表示游戏场景中无法到达的位置 ]


游戏空间和现实不一样,游戏场景可能有传送点,玩家可以瞬间从一个位置通过传送机制到达另一个位置,我们可以通过加边(link)的方式来表示这些传送点;类似的,我们可以把多个graph通过加边的方式进行多场景的连接。另外游戏中其他的交通结构,比如河流上的桥梁,也可以用类似的方法表示。当然,不同的交通结构,对应的边的欧式距离是不一样的。如Fig. 4所示。


[ Fig. 4 传送点,多场景等通过在graph上添加额外link的方式来表示 ]


2. 游戏过程的抽象


在“历代名将”中,游戏过程涉及大量的玩家,玩家在地图各处相互对战。游戏的本质是各联盟的战斗力在整个游戏空间中的分布。各联盟的玩家集体冲向boss,并在死亡后重新进入游戏传送至集合点,整个过程可以看做在集合位置和boss位置之间有个源源不断的战斗力流。当两个联盟遭遇时,联盟之间的玩家会进行战斗互相造成伤害,可以看做是战斗力在这些位置的衰减,而战斗力的衰减速度可以看做在相应位置各方战斗力的函数。


在抽象的graph上,上述游戏过程就变成了各方战斗力在图上的分布。我们可以对graph上的每个node进行分析。如Fig.5所示,在graph所表示的游戏空间中:某node上的某一联盟的战斗力通过有向边流出至与其相连的nodes,使得邻居nodes上该联盟的战斗力增加,而该nodes上该联盟的战斗力减少;而邻居nodes的战斗力通过指向该点的边流入该node,使得邻居nodes上该联盟的战斗力减少,而该node上该联盟的战斗力增加。


[ Fig. 5 游戏战斗力动态过程分析 ]


三. “历代名将”游戏过程的数学描述



有了上述对游戏的抽象描述,我们可以对每个联盟在每个node上的战斗力用数学方程描述。


对于一个联盟,在某个node上,其战斗力在一段时间内的变化量为:


该node上战斗力变化量 = - 流出node的战斗力 + 从邻居nodes流入该node的战斗力 - 该node战斗造成的战斗力衰减


我们用w_i表示该联盟在node i上的战斗力,用a_ij表示战斗力从node i到node j之间单位战斗力流动的速率(a_ij与node之间欧式距离定义有关),则战斗力从node i到node j流动的速率为w_i*a_ij,战斗力从node i流出的总速率为;同理,战斗力流入node i总速率为;而该联盟因战斗造成的战斗力衰减可以表示为:


function(node i处该联盟战斗力,node i处其他势力战斗力)


即在node i处该联盟和其他敌方战斗力的函数(当然也可以将node i扩展到node i一定距离范围内的周围的邻居),该函数与游戏的数值设计有关。其原因显而易见:敌方相对战斗力越高,联盟的战斗力衰减越快;相反的,联盟相对战斗力越高,联盟战斗力衰减越慢。这里,我们可以简单地假设,其中表示所有其他敌方的集合,为战斗力衰减系数。将上面战斗力流入,流出和战斗造成的衰减综合起来,对于graph中的node i,战斗力w_i的变化量符合以下方程:



让w=[w_1, w_2, ..., w_N]^T,其中N表示graph中node的个数,可以把上面的方程写成紧凑的形式:



上面方程中,图的信息用其拉普拉斯矩阵L表示(Laplacian),其第i行j列的元素为a_ij,对角线元素为,即该列元素之和的相反数(据我所知,如果a_ij != a_ji,graph为非对称,Laplacian并没有一个统一的定义,此处我们可以认为以上定义是非对称graph的Laplacian)。如果去掉方程右端表示战斗的项,余下的部分就是graph上的热力学方程,描述了战斗力在游戏空间内流动的动态过程。用热力学方程或其他描述物理系统的工具来描述人类行为并不是一种罕见的研究方法,这类研究往往被称为社会物理学。相应地,在游戏的框架下,我们可以认为这也是一种物理学——游戏社会物理。


以上方程刻画了战斗力在整个任务过程中的动态过程。对每一个战斗方,我们都有上面一个方程,每个方程有N个未知数(每个node上的战力),虽然方程数和未知数数量一样多,但是上述方程解不唯一,因为Laplacian非满秩,其0特征值的个数和联通子图个数相等;在联通图上,有一个0特征值。这里我们对每个联盟额外列出一个总战斗力方程:



整个方程系统在给定初始条件(t=0时,战斗力的分布)的情况下可以联合起来求解并描述整个游戏战斗过程。如果让dw/dt=0,则可以求解战斗的最终结果。


在“历代名将”任务中,玩家在死亡后往往会重新进入进入集结点,所以可以稍微修改在集结node处的方程,加一项该联盟在所有其他node处损失的战力之和,就可以描述这个过程;另外boss可能会呆着一个位置不动,可以去掉boss的战斗力流动项。这里都不再赘述细节。


四. 实验demo



下面Vid. 1给定一个求解上述方程的例子(尤其是25秒后,其中绿色和数值对应boss的战斗力):游戏里boss处于地图的最右上角,两个联盟分别在地图的左侧中部和底测中部集结,双方玩家分别通过最短路径冲向boss,双方路径中间有墙体隔离;两个联盟和boss最终在右上角相遇并进行混战;各联盟损失的战斗力会重新在出生点处集结。在这个demo里,方程里的a_ij(其中ij边为水平或垂直的边)流动系数给定方法为:如果i点离boss点近则使得a_ji = c1, a_ij = c2;否则,a_ij = c1, a_ji = c2,其中c1>c2为两个任意常数。另外对角线边的欧氏距离是水平竖直边的sqrt(2)倍,对应地,使对角边的战力流动系数a_ij为水平竖直边的1/sqrt(2)。


[ Vid. 1 一个战斗任务的动态过程 ]


我们可以仔细观察上述过程中在几个关键位置处各方的战斗力变化过程,如Fig. 6所示:整个游戏过程最终达到一个稳定态dw/dt=0,虽然两个联盟初始战斗力都是100,但是由于其流动路径的不同,左边集结的联盟最终获得胜利。游戏在达到最终结果前(0<t<5),也有一些复杂的战力动态变化,留给有兴趣的读者观察。


[ Fig. 6 各关键点处各方战斗力变化过程 ]


通过方程的求解,我们很容易的回答在不同配置下谁会赢,赢面和战斗力,地形之间的关系,boss输出的伤害,各方战斗力动态对比等等。


五. 总结



本文以“历代名将”这个任务为切入点,探索社会物理学方法在游戏动态过程建模中的可行性。通过一步步对游戏的数学物理抽象,我们建立了一套描述游戏过程的方程。希望通过本文,抛砖引玉,欢迎有兴趣的读者继续讨论各种游戏场景数学理论的建立方法,最终形成一套整体的游戏设计和体验优化的理论体系。


评论有奖


点击【在看】并留言

留言区1、3、9楼层的三位同学

将会获得腾讯游戏学院企鹅博士公仔一个



*官方将于2021年8月4日17:00整进行截图

中奖名单以截图为准

扫码添加鹅博微信号

中奖结果将通过鹅博士公布~

让鹅博知道你在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存