游戏枪械数值与平衡性测试探讨
前言
—————你怎么又想要搞枪械了?
距离上一篇自己写的射击游戏文章已经过去了将近大半年了。
同时,新进的项目组的核心玩法是枪械射击,领导十分自信,把核心的战斗、PVP、武器枪械模块丢给了我负责(笑)。但接触下来,虽然能靠自己往常的射击游戏经验能保底把一个武器测得没有BUG,但是也发现了自己对游戏的枪械设计缺少了系统性的认知。与项目组的策划请教后,受益匪浅,遂有此文。
本文会先介绍常见的游戏枪械设计中,运用到的大部分数值,其中大概分为「强度数值」「手感数值」「机动性数值」「其他数值」四个模块。
其次会从笔者的角度下提出自己的想法,这也是本文的主题——为什么全世界做了这么久的射击游戏,枪械平衡依然无法让玩家满意?
在文章的最后,也站在了测试的角度上,针对“PVP枪械难以平衡”这一痛点,作出了自己的一点思考。
枪械平衡性指标
—————什么指标可以衡量一把枪械的强度呢?
在介绍数值之前,先抛出两个十分核心衡量枪械平衡性的指标:
TTK(Time To Kill)
简单地说就是枪械击杀一名敌人所需的时间,一个游戏的常规TTK很大程度决定了这个游戏的体验走向,可以说基本上所有枪械数值都是围绕着TTK这一指标进行设计的。
这里就不展开讲了,之前的一篇文章《传统?现代?PVP射击游戏风格浅谈》笔者做过相对更详尽的解释。
枪械KD(Kill / Death)
而枪械KD,是一个通过对比线上已有的枪械KD比值,可以很直观感受到目标枪械与其他枪械之间综合强度的差别。但通常需要大量数据样本,并且针对不同水平的玩家需要分开看待。
枪械数值
—————又有什么样的数值可以影响枪械的强度呢?
强度数值(决定武器上限)
- 伤害:单发射击造成的伤害
- 伤害倍率:打头2倍伤害,打腿0.5倍伤害
- 射速:单位时间内射击次数,或者是两发子弹之间的射击间隔。值得一提的是,射速对于实际TTK有很大的关联性。主要理由是玩家空枪时,可以更快的跟上下一发子弹,降低空枪惩罚。
- 子弹速度:子弹在空中飞行的速度
- 子弹穿透力:子弹在命中可穿透材质后方的目标时,造成伤害的衰减幅度
- 弹匣容量:弹匣里能够装载的子弹数量
- 换弹时间:完成换弹需要的时间
- 伤害衰减:命中目标距离越远,伤害越低
可控性数值(锚定枪械受众:轮椅枪or高手枪?)
- 后坐力:开火过程中,射击每一发子弹带来的镜头向不同方向的偏移,通常细化为纵向后座力、横向后座力、最大后座力
- 后坐力回复:开火过程中向枪口初始位置方向的持续回复力,常见单位是角度/秒,比较影响点射、小连发的射击方式
- 子弹下坠:子弹飞行过程中受重力影响导致的子弹下落
- 子弹散发(随机弹道):保持开火时,每发子弹落点不同
- 开镜抖动(呼吸抖动):保持开镜状态时,为了模拟真实呼吸情况增加的镜头偏移
- 命中减速:命中敌方目标时对敌方施加的减速效果
- 受击晃动:开镜状态下被子弹命中,模拟受击效果做的小幅镜头偏移
机动性数值
- 各方向基础移动速度:不同姿态下手持武器,朝向各个方向的移动速度。值得注意的是,通常手柄的移动速度处理会比键盘「WSAD」的八向复杂得多。
- 各状态移动速度(奔跑、冲刺、慢步、开火、开镜)
- 跳跃速度
- 翻越速度
- 下落速度:此处的下落速度指的是人物的下落速度,通常人物下落速度与子弹下坠速度不同。
- 滑铲速度:滑铲状态下的移动速度,通常由加速、保持、下降三个阶段组成
- 开镜速度:武器开镜状态下的移动速度
- 跑射速度:武器保持开火状态下的移动速度
- 换枪时间:切换不同武器所需要的时间
其他数值
- 手柄辅助瞄准:很难描述,各个项目组的方案皆有不同
- 卡壳率:塔可夫中特有的指标
- 枪口火焰:开镜连续开火时,较大的枪口火焰会影响视野,通常与武器配件互相影响
- 开镜视野:你喜欢红点还是全息?
- 敌方名片高亮显示距离:最近几部COD新增的指标维度,准心瞄准敌人时显示名称的距离,会影响玩家的索敌成本
- 子弹模型大小:影响命中率
- FOV:部分游戏枪械开镜时会定死一个FOV,以限制玩家的视野。通常来说FOV越高视野越大,能得到更多战场上的信息。
为何枪械强度难以平衡
—————让多少设计师头秃了呢?
OK,现在你是一个PVP对抗游戏项目组的测试哥们儿,现在你临危受命接到了一个任务,测试项目组已有枪械的平衡,你会怎么做?
方案一:打桩模型,计算固定时间内输出量的平衡性
看都不用看,完全没有用。
方案二:寻求拥有专业射击游戏经验人员进行判断
让一位拥有很强游戏理解的职业射击游戏选手来平衡游戏,确实能得到更多的视角来看待当前的武器平衡。
但是相对的,只针对职业选手的意见来平衡游戏,通常会降低游戏的娱乐性。游戏终究面对的还是多数娱乐玩家,在偏袒多数娱乐玩家的同时,尝试落地职业选手的意见,其实是很难的一件事。
此外,即使是职业选手,多数情况下都会由他自己的个人偏见。比如说一位选手习惯近距离高机动作战,在提出意见的时候可能偏向于强化冲锋枪或者霰弹枪这种近距离武器,削弱狙击枪这种远距离武器。
不过确实,经验丰富的玩家在体验游戏时,很容易发现设计上的一些低级缺陷,这也是为什么招聘游戏测试岗位时要求应聘者有较多游戏经验的原因。但这种做法终究有局限性,少数人很难代表大部分玩家。
方案三:组织大规模项目组内部人员跑测,统计枪械KD
首先,做游戏的不一定会打游戏。让整个项目组一起跑测,统计到的KD数据可能只会符合极低段位的实际情况。
其次,消耗人力过多,老板看到整个项目组一起打一两天游戏他能忍得了么?
方案四:开启线上阶段性测试,统计枪械KD
通常这是一个不错的方案,统计到的KD数据会更加全面,也是大多数游戏正上线前会做的事情。
但是同样的也有弊端,一次大规模的线上阶段性测试会消耗人力非常多的人力。
而且此时游戏内容不足,简单地说就是没有足够的地图供玩家体验,可能只有一两张测试地图,不足以体现出各武器在不同交火距离下的表现。
可尝试的平衡性测试方向
—————想要尝试
机器学习——让黑盒黑得更彻底一点
简要说明:使用机器学习算法,根据大量外网在线玩家的战斗数据,建立「枪械数值」与「强度指标」的关系模型,通过关系模型评估枪械的平衡性。
可以预见的优势是,可以快速进行大规模的多种枪械强度测试,后续出新枪设计数值时也有较为准确的强度预判。同时不需要耗费大量人力。而劣势则是,需要大量外网战斗数据来训练模型。
步骤一:游戏项目组收集大量外网战斗数据,用于训练模型。
步骤二:平衡测试组对数据进行处理(采集、清理、样本生成等)。
步骤三:进行模型训练与调参,训练好的模型存到模型库供项目组使用。
步骤四:项目组分析利用模型,输入「枪械数值」指标,快速输出「强度指标」。
步骤五:实时监控外网数据,周期性入库新的数据,调整模型,达成循环。
AI自动化——每天给你跑一亿条用例,总能找出问题吧?
灵感来源于2023年的GDC中,EA工程师分享的《战地5》AI测试机器人,以及AutoPlayer发展历程。
DICE的《战地》以及《星球大战》系列游戏在不断地迭代,这种多人大战场游戏很难使用传统的人力手工测试满足测试需求,于是开发了一系列的自动玩家机器人,用于测试各种模式,比如说建造塔楼、炸毁目标、驾驶坦克和飞机等,这些机器人便是所谓的AutoPlayer。
如果我们把这些机器人专注于玩家对抗,同时设置在不同的地图场景,每次对抗完成后切换武器配置直至遍历完成所有组合,然后统计测试数据。或许就能得到类似于线上外网玩家的战斗数据集,甚至可以直接得到一把枪械的「强度指标」。

结语
—————给自己的一些鸡汤
无论是梳理枪械的数值类型,还是尝试思考如何做平衡性的测试,都能让我重新认识到做测试做深的话,要接触的东西太多了——游戏设计、程序实现、玩家心理……但我是个稍有点自负的人,别人能做到的,我也能做到,并且能做的更好……!
长路漫漫,但终归在脚下,别人在走,我就要用跑的,明天就打开B站大学,去学习机器学习吧!
相关
—————想看更多?
https://new.qq.com/rain/a/20231008A05SX800
https://www.zhihu.com/people/zhou-min-ke/posts