【游戏测试专题】即时制MMO里那些比赛的事儿

2023-02-24 10:27发布

随着近年来电子竞技项目的风靡,MMO类游戏也开启了电竞发展的路线。PVP赛事是MMO游戏中高端玩家的重要展示平台,也是游戏中的重要营销热点。本文主要聊聊在即时制
1条回答
1楼 · 2023-02-24 10:57.采纳回答

随着近年来电子竞技项目的风靡,MMO类游戏也开启了电竞发展的路线。PVP赛事是MMO游戏中高端玩家的重要展示平台,也是游戏中的重要营销热点。本文主要聊聊在即时制MMO游戏中赛事的测试

对于测试来说,此类赛事需要非常谨慎。首先此类赛事没有试投放,一般都是直接全服上线,一旦出现问题影响面往往会比较广;另外PVP赛事会给胜利者带来荣誉,但是也会给失败者带来懊恼,如果玩家是因为某些战斗相关BUG导致失败,往往容易将问题进一步放大造成不良影响。


二、 赛前测试准备

在开始测试一个赛事玩法之前,首先需要对本项目中其他赛事或者其他竞品项目中的赛事流程有一点了解,有利于在需求分析阶段及时发现不合理设定,将问题扼杀在摇篮中。除此之外,赛前测试准备还包括时间节点梳理,根据不同的赛事类型配置测试环境等。

1. 时间节点梳理

MMO游戏中的赛事流程,往往时间跨度会比较大,在开始测试之前,应该先进行时间线节点和功能点的梳理,加强自己对赛事流程的熟悉,避免某些功能在不应该开放的情况下对外开放。


2. 测试环境准备

在准备测试环境之前,首先需要确认本次赛事是由谁来参赛,这边主要说说常见跨服赛事的三种形式:

l 跨服传送:玩家本尊跨服传送到比赛服务器,目前大部分赛事采用此类形式;

l 镜像服复制角 {MOD}:复制玩家角 {MOD}到镜像服参加比赛,通常用于参赛玩家不多,且没有开放跨服的游戏赛事中;

l 比赛服新建号:本服报名后到比赛服新建角 {MOD},常用于无差别类赛事,所有比赛角 {MOD}都是同等战力的。

(1)比赛服功能屏蔽

不管是哪种跨服赛事,均有个共同点,需要有一个或多个专用比赛服务器,而在比赛服务器中一般除了要用到的方法接口,其他方法接口应该保持禁用状态,尤其是涉及到交易、充值、投放等接口

案例举例:
某游戏中开放跨服赛事期间,来自不同服务器的玩家可进行物品交易,导致部分玩家利用不同服务器物价差异来牟利。

此外,在无差别赛事中,为了保证玩家之间战力的绝对公平,比赛服务器在功能上的限制往往是最多的。

比如系统直接提供玩家可选择的装备组合、宠物组合、需要的药品等,不允许玩家以任何形式获得各种货币,也不会出现需要消耗任何货币的情况(比如修理装备之类),不允许玩家偏离给定的技能装备组合,自行打造强化战斗属性的行为等。

在测试功能屏蔽的时候,需要确保内网和外网比赛服的功能屏蔽开关一致。这个在测试的时候可以考虑把内网比赛服的服务器ID临时改成外网比赛服的服务器ID来测试,也可以检查PlayConfig表(服务器玩法开关表)。

案例举例:
某游戏赛事对外开放以后,赛事服务器漏开放二套法宝栏功能,导致玩家不能正常切换第二套法宝,并提示“功能尚未开启”。
原因:二套法宝栏功能开关是配置在PlayConfig表中的,表中内网比赛服和外网比赛服开关配置不一致,内网填的1,而外网比赛服填的0。

(2)角 {MOD}数据检查

针对跨服传送的情况,需要检查跨服后角 {MOD}数据会不会有异常,需对比跨服前后装备、包裹道具、战斗属性数值是否一致。

针对镜像服复制角 {MOD}的情况,需要和玩家确认好复制角 {MOD}的时间,确保玩家镜像服的属性数据与本服一致,毕竟复制到镜像服后,因为镜像服功能限制,角 {MOD}属性基本定型。

案例举例:
某手游一次镜像服比武玩法,玩家来反馈镜像服的角 {MOD}没有他刚获得的牛逼属性。遇到这种情况,可以和玩家定好属性调整的截止时间,避免后续争议。

(3)模拟外网服务器架构

线上的跨服赛事往往会多个服务器的玩家汇聚到一组或者多组跨服服务器中参加,故而测试服务器需要尽可能一致的模拟外网的跨服架构来配置。

案例举例:
某手游中大型赛事的小组赛,出现只有两支战队能够被传送进比赛擂台场景完成比赛,其他战队没能被传送进场且随机判定了输赢。最后临时关闭玩法,线上紧急修复,玩法推迟了两个小时。
原因:
程序创建副本时未指定副本归属角 {MOD}id,而是默认值0,同一个ID的副本只能同时拥有一个,故而只能开启一个擂台副本,之后改成指定副本归属战队队长的ID。
因为内网测试环境只配置了两台本地服务器,只能同时开启一场擂台副本,没有能够暴露问题;另外自身没有对同时开启多个副本的用例引起重视,因为环境较难配置就放弃了验证。

三、 比赛流程

MMO类游戏中赛事常见的比赛流程包括以下几种:

1. 积分赛

积分赛,一般是作为大型赛事中的第一步筛选,所有成功报名的战队都可参与,通过若干场积分赛,选拔出总分前x名的战队晋级。需要注意的是,为了保证比赛的公平性,一般来说只要进入积分赛环节后,战队的成员则不可随意调整了。

积分赛排行榜在测试的时候可能只是一个小细节,但是对于高V玩家来说却是很重要的一个展示点,所以排行榜这边的细节需要注意,比如同分排行的显示和晋级情况,可以提前约定好如果积分相同按什么方式来决定出线队伍,比如按战力评分等。

积分赛一般根据不同赛事类型,或者报名战队数目,会有不同的实现方式。

(1) 匹配模式

适用于待筛选战队数很多的赛事,一般是随机匹配,需要保证匹配的公平性,需要考虑一些异常情况,比如匹配轮空等。

(2) 小组赛模式

适用于待筛选战队数不多且较为固定的类型,小组赛中每支战队与组内其他战队各打一场,组内前N名晋级。

2. 淘汰赛

淘汰赛一般是由积分赛晋级上来的战队进行下一步的筛选,两两分组对决,失败的队伍立刻淘汰,一般会有BO1(一局定胜负),BO3(三局两胜),BO5(五局三胜)三种形式。


淘汰赛需要考虑是否会出现无法决出获胜方的情况,比如因挂机被判为双败;因对手不在线或未进场导致轮空等情况。

3. 双败赛

双败淘汰制的比赛,一般分两个组进行,胜者组和败者组。在第一轮比赛后,获胜者编入胜者组,失败者编入败者组继续比赛。之后的每一轮,在败者组中的失败者将被淘汰,胜者组如果失败一次则被淘汰出胜者组降入败者组。

4. 线下赛

一些大型赛事的决赛会配合营销安排为线下赛,线下比赛由于考虑到现场设备网络等往往不那么可控,需要做好充足的准备。

(1)针对一些明显的可能失误的情况,程序中应该做好验证排查。

比如比赛已经进行到第五场了,这时候手误打了个开始第三场比赛的命令,或者设置冠亚季殿军的时候,设置了个并没有参赛的玩家战队等;

(2)准备好各种可能用到的预案指令,且需要重点测试!

包括却不限于:裁判现场和参赛玩家确认准备就绪,开启指定比赛,立即暂停比赛、重新开始比赛、确认比赛结果(现场比赛成员签字确认)、结算竞猜数据、公布比赛结果等;

(3)在比赛之前要明确和参赛玩家说明哪些情况会暂停比赛重新开始,可以准备一份书面的规则,这样可以减少之后的争议。


案例举例:
某次线下赛事出现玩家比完了,结果也公布了,后来反馈说因为各种客观原因导致没发挥好想要重赛的情况。鉴于这次教训,线下赛每场结束后均让双方参赛玩家现场签订确认比赛结果同意书才公布结果并进行下一轮。

另外,为了公平起见,线下赛的真机应该为同款同系统,尤其是手游的比赛,因为手游玩家一般来自不同渠道,故而在线下赛开始之前需要配合程序做好角 {MOD}的迁移工作,而且需要注意,迁移后的角 {MOD}不能影响玩家本来的角 {MOD},且之后玩家获得的游戏内部的投放奖励,应该发放回他本来的角 {MOD}中。


四、 其他常见功能

1. 结算流程检查

比赛的目标就是胜利,所以明确的结算规则是玩家能否快速上手的诀窍之一,对于玩家来说是至关重要的。一场比赛结束的方式有很多种,每种方式都需要考虑如何判定胜负:

l 一方杀死另一方,好说不解释;

l 双方均未死亡,平局?按人头判定?按DPS判定?

l 双方都死亡?

l 一方或双方挂机;

l 一方或双方未进场或人数不足;

l ……

另外还需要注意结算的时候的延迟以及一些边界情况,比如结算后是否还会受到敌方伤害,结算后攻击死亡的情况等。因为类似情况一旦发生就很容易引起舆论问题从而造成负面影响。

案例举例:
某游戏一次大型赛事,一轮比赛结算后还可攻击,到下一轮时,玩家处于死亡状态,无法参与战斗,影响正常比赛流程,引发了较大的争议。

2. 竞猜

一般大型赛事大多会有竞猜功能,来增加全民的参与度,故而在测试赛事的时候,也不能忽略了竞猜功能的测试。

竞猜项目往往受具体赛事内容影响较大,测试的时候需要注意临界值的情况。比如人头差8,则需要考虑人头差大于,等于,小于8的情况;

竞猜的赔率往往计算比较复杂,且动态变化,一般与双方战队之前的胜率、当前双方已经被押的金额等有关,在测试的时候需要确认赔率公式计算正确且需要验证最后结算的赔率是按自己当时竞猜时候赔率还是最终赔率来计算的。关于赔率的计算,还需要保证如果玩家无差别的两边押,应该必然小幅亏损。

为了竞猜的相对性公平,竞猜一般不允许下注有自己参赛的比赛场次。

另外竞猜一般涉及的金钱数额会比较大,在测试的时候需要留意调整下竞猜获得金钱的预警功能,避免误报预警。

3. 观战

大型赛事为了提高赛事的影响,会增加非参赛玩家观战的功能。根据实现方式不同,观战可分为场内观战和场外观战两种。

(1)场内观战,观战玩家进入战斗场景,隐身观战。

场内观战在大型赛事中往往比较受限,首先因为战斗场景人数受限,一般是同一场景最多只能几百人,可能引发一些逻辑BUG。比如场景人数满的时候,参赛玩家掉线,可能就回不来原来的战斗场景了;或者参赛玩家的技能被作用在了观战玩家身上等等。再者大型赛事往往是跨服玩法,跨服观战的话需要先把玩家传送到跨服,这个行为一般不太可取。

(2)场外观战,观战玩家隐身进入公共观战场景,此地图与战斗场景一致,支持不限人数,允许跨服,允许观看者进行适度自由操作的观战。

测试比赛观战的时候需要留意,观战最好能与实际比赛有一定时间的延迟,不能让观战成为比赛成员作弊的方式,比如因为观战看出对面选手的策略从而赢得比赛。

案例举例:
某游戏比武大会中,一方魅者隐身,对方可通过小号观战,能看到那个隐身的魅者身上有加血飘字,从而能找到这个魅者,故而魅者隐身技能就废了。
原因:在观战显示伤害飘字的代码中,之前没有考虑玩家是否可见,代码修改前
修改后,只有当玩家可见的时候才会显示伤害飘字。

4. 数据存储及跨版本的问题

大型赛事由于其时间跨服较大,在这期间可能不可避免会出现服务器维护或者偶现服务器宕机重启之类的情况,故而需要注意在比赛的每个阶段重启服务器的数据保存问题。比如创建战队阶段的时候的战队数据、积分赛期间的战队场次和积分排行、淘汰赛期间的对阵场次等。

赛程跨版本的时候,尤其是在新版本有调整赛程等情况,需要注意应该先用上个版本build造数据,然后用修改后的版本build模拟后续流程的方法来看该改动是否会对后续流程有影响。

案例举例:
某游戏一次跨服联赛中,策划在赛事进行中修改了比赛流程,程序实现引入了新的数据字段,但是之前外网数据并没有对该字段进行处理,导致玩法跑到修改后的流程后,新加的字段没有取到数据,决赛流程没有正常开启。

5. 压力测试

一般来说跨服赛事在最初一轮筛选(也就是积分赛)的时候,需要预估下参与的玩家数量,如果参与的玩家数量会很多,这个时候需要重点关注最高人数下战斗负载,大量玩家同时传送进入战场的负载等。另外可以多准备几组备用比赛服务器,将玩家分布在多个服务器中比赛。

案例举例:
某手游一次节日活动,跨服副本开放后,所有玩家都被传送到一个跨服服务器,人数远大于该服务器能承载的上限,导致很多人报名后无法进入玩法。

6. 风险预案

任何玩法上线都不能保证一定没有问题,尤其是这种较高复杂度的大型赛事,所以需要提前做好相应的风险预案。关于线下赛的之前已经说过,这边也不多说了。整个玩法过程中需要有完整的log体系,收到反馈需要能够第一时间通过log排查问题。

常规预案包括:开关、重赛、补偿、惩罚。

开关:往往属于最简单粗暴的类型了,一般遇到不可控的情况且问题暂时还不能定位,直接关闭玩法是最好的控制方法了。

重赛:重赛机制是所有大型赛事必备的预案了,虽然希望用不到,但是这套机制必须重点测试,往往用到的时候都是很紧急的时候。

补偿:补偿是目前最通用也是最有效的安抚玩家的方法了。可以上线前优先配置好补偿邮件,到时候如果有问题可以迅速处理。

惩罚:针对可能出现的打假赛、消极比赛等情况可以提前制定惩罚规则以及相应惩罚措施命令,如取消比赛资格或者判输之类,万一到时候线上有相应情况可以方便处理。

7. 预留处理问题的时间

虽然大家都很努力尽量避免线上BUG,但是“0BUG”目前来说还是只是一个很美好的愿望,但是不管怎么说,如果能在第一时间,甚至是玩家还没发现问题的时间把BUG修复也是很好的。故而在功能制作的时候,需要考虑留足应急处理的时间

案例举例:
某手游某次跨服玩法中,原定12:55跨服服务器准备好上报到中央服,13:00开始玩法,后因为策划需求临时调整,把开玩法时间改到了18:00,不过上报时间没改。等外网12:55后,程序后台查询发现本该上报的服务器并没有正常上报,后发现是代码逻辑不对,因为正式环境和测试环境差异,这块测试的时候也不容易发现。原定只有5分钟的处理时间是远远不够的,只能说这次是非常侥幸了,有比较长的修复时间,故而外网玩家没有发现问题。

8. 关于投放

一般来说,此类赛事的投放主要分三种,线下实物或金钱奖励、荣誉、游戏中的道具奖励。

线下实物或金钱奖励:这块一般由运营同学负责发放,本文不作过多讨论;

荣誉:荣誉一般是大部分参赛高V玩家的主要追求了,除了排名奖励外,往往还包括玩家在每局比赛中的一些高光点,比如连斩多少,或者是终结多少连斩等,玩家会有意愿将其分享到其他平台展示。

游戏道具奖励:这块往往是我们测试投放的重心。针对不同的比赛形式,投放的测试也是会有区别的:玩家本尊跨服到比赛服去的话需要特别注意投放获得的时机,跨服获得投放比较容易出现刷类问题;如果是复制角 {MOD}到镜像服或在比赛服新建号的形式,需要注意投放一般是要发给玩家本服的角 {MOD}的,而且大部分情况下本服角 {MOD}此时还是离线状态的,需要确保本服角 {MOD}上线后能正常收到。

案例举例:
某游戏曾出现过在跨服参加战场、竞技场,获得的军资和战勋是预期两倍的问题。因为军资和战勋在跨服可获取的白名单中,故而结算时跨服获得了一次,回到本服又获得了一次,导致获得了预期两倍的数值。

五、 总结

本文主要介绍即时制MMO类游戏中的赛事测试一些注意事项,其中有部分内容感谢部门其他项目组的相关经验总结,还有近几年来我们游戏自己遇到的一些坑点,希望能对大家有所帮助。