游戏场景在百度百科中的定义是游戏中的环境、建筑、机械、道具等。游戏场景通常可以理解为根据策划的要求还原出游戏中的建筑物、树木、天空、道路等可用元素(包含武器道具等)。游戏场景的测试不仅仅要测试上述部分,还包括了程序、用户体验等其他方面的问题。
在拿到了正式美术资源之后,首先关心的就是场景的寻路和碰撞问题。寻路是游戏中人可以行走的区域,碰撞是场景中得物体所占的空间。对于这2个问题,不同的游戏有着不同的处理方式。 有的是服务端有一份数据,客户端生成一份数据,然后2份数据进行对比就可以很方便的找出不一样的地方。但是我们的游戏不是这样做的,美术在做好场景后,生成2份文件放在服务端,一份寻路文件,一份碰撞文件,然后客户端部分没有放这2份文件,而是引擎在加载模型的时候,根据模型的属性自动生成了寻路与碰撞。所以对于我们的测试来说就要测试服务端的正确性,测试服务端与客户端的一致性,测试客户端的表现。
测试服务端的正确性:首先查看的是美术输出的文件是不是会跟发布的美术资源对应。有时候可能美术在导出的时候可能忘了提交,然后就会出现对应不上的情况。在出现了对应不上的情况下,就会出现客户端表现上是可以穿越的,而实际上是不可以的或者相反的情况。
这里先讲一下寻路属性和碰撞属性的关系。只有模型的寻路属性勾选的情况下,该模型才参与寻路。这里的参与寻路指的不一定是形成寻路,也可能是形成阻挡而影响寻路。碰撞则对模型形成阻挡作用。寻路属性是碰撞属性的基础,只有在勾选了寻路属性的基础上碰撞属性才有效。没有勾选寻路的情况下(不管有没有勾选碰撞),人物都是无法通过的,等同于是有阻挡的;在勾选寻路的情况下,模型没有勾选碰撞,那模型就是可以穿越的。只有勾选了碰撞之后,模型才会起到阻挡的作用。
在提交正确的情况下打开场景编辑器,加载相应的文件,在场景编辑器中打开寻路界面,检查寻路是否有不合理的地方(比如寻路面包括了一颗大树,这就是不正常的)。这时候可以试着自己查找下问题的原因。像寻路面包括了一颗大树的情况,是大树没有勾选碰撞属性,将大树勾选碰撞属性后,更新下,就可以看到正确的寻路界面了。这样可以快速发现一些明显的没有勾选碰撞而产生寻路异常的问题。然后再打开碰撞界面,观察碰撞体跟寻路面有没有重合的部分,有重合的部分就是错误的。因为人是有体积的,在寻路面跟碰撞体重合的地方,会出现人的半截身子嵌在场景物体里面的诡异情况,这种情况是不允许的。用这种方法会查找到一些比较隐蔽的问题(比如一个小石头的碰撞体做的很大,美术本来就不想让玩家经过,那这种检查就能找出来)。
测试客户端与服务端的一致性:本来编辑器就是引擎提供的,一般来说美术通过场景编辑器编辑好场景,编辑器输出的寻路文件和引擎在客户端自动生成的寻路信息是一致的。所以,在服务端的寻路文件的正确性已经得到保证的情况下,如果客户端的寻路出现问题,就说明引擎的加载存在问题也就是说客户端与服务端的寻路信息产生了不一致,一般这种问题在验证客户端表现的时候就可以发现。
测试客户端的表现:首先确保服务端的寻路信息已经正确,然后在客户端中打开寻路功能,在场景中按照寻路信息区大致跑一遍,如果人物走到了场景中的不该走到的地方或者寻路的信息区有中断的情况,则说明引擎加载客户端的寻路信息出现了问题。
在测试完客户端的寻路之后,就可以关闭寻路,真正的去游戏中体验游戏场景了,这时进行的就是合理性测试了。合理性测试可以分为下面几种:
- 美术方面:在跑地图的过程中,你就会发现美术存在的一些问题。比如路面或屋顶上存在着阴影闪烁;物体上出现了深色的色块;美术的碰撞做的太大,例如树的碰撞模型为一个很大的长方体,导致很远的地方就不能朝树的方向走去;模型的阴影闪烁;阴影缺失;模型的材质,贴图;灯光;最高效果与最低效果下引擎的渲染、不同分辨率下场景的表现;
- 技能特效:技能特效与美术资源的冲突。比如地表贴花,就是有斜面等情况下贴着地面的特效会有一部分嵌进地下,或者映射出地面的边块(就是在地面上显示了地块方正的边角);特效残留;技能特效与墙面等碰撞的冲突导致技能未到达墙面而特效开始播放;桥,阶梯等特殊地方的鼠标点击效果(鼠标点选地上有特殊效果,特殊地方可能会没有);
- 程序方面:地图坐标和雷达或者区域地图坐标显示一致;地图衔接点(传送点)的功能正确;地图上标记点的同步刷新(比如地图上显示任务的坐标点);地图上其他附加功能的实现(比如点击地图自动寻路);场景地图加载的时间;场景太大采用的动态加载会不会人走太快而却出现寻路信息没加载出来;加载过的场景资源的释放;未探索区域与已探索区域的区别;场景切换;
- 游戏设定不合理:场景出现了不该出现的东西比如马路上出现蘑菇,热带雨林的场景中树木很少,有大片的草地;冰原上出现了一些非耐寒的动植物;
- 用户体验方面:场景是否可调可视范围和摄像机角度;有方向引导性的路要设计的宽一点,不能设计成一条小径;锁定视角的情况下,树木等不要挡住道路;人物不要长时间被场景遮挡住;在摄像机角度和远近可以调整的情况下,人物将视角调到远景时,远处要有相应的景色,而不是什么都没有的黑色;
场景测试是一个有很大的工作量的工作,有很多琐碎细小的工作要做,需要耐心与毅力,需要全面,不遗漏。在测试的过程中,我们也可以向美术学习专业的美术知识,不断的充实与提高自己,然后就可以更快地找出问题,更快地解决问题。