在游戏开发中运用测试

摘要:
测试的好处有很多,这里我总结下我在游戏开发中使用测试所感受到的最实在的好处。在维护公司游戏的时候,我就向部门总监建议过,我们的游戏要加入单元测试,老大想了想告诉我很难,和我举了一些实际的例子,说这个功能怎么怎么样,怎么可能独立测试呢。但是当我参与到游戏开发中时,我始终有这个信念,一定要做单元测试,于是我对引擎做了诸多改良,在设计功能时也会考虑将来如何测试,所以现在我的游戏引擎是可以支持单元测试的。

我对测试的重视是从接触《测试驱动开发的艺术》这本书开始的,那时我还在做web网站开发。尽管项目没有对测试做要求,但我还是为自己编写的serviceservlet加上了单元测试,从那以后我一直受益于测试。

测试的好处有很多,这里我总结下我在游戏开发中使用测试所感受到的最实在的好处。

1、协同开发时,便于确认到底是谁的错,自己的,还是别人的。

我是负责开发游戏服务端,项目初期客户端和服务端都需要编写网络通信组件,解析网络数据包。开始我们经常在数据包上遇到问题,客户端一会说没收到服务端的数据包,一会说数据解析不正确,是不是服务端加密错误了。这个时候就需要一种方式证明我没错,是你错了。一种没有什么效果的方法就是复查自己的代码,但通常查不出什么错误,因为我在审查代码的时候,心里会有一种自我暗示,说“我的代码不会错的”,所以很难发现错误。查不出错误,就会指责是对方错了,这样你来我往,慢慢就会发生扯皮的现象。我的方法是,自己模拟客户端发包收包,如果我模拟的客户端可以收到包,我就会让客户端程序员来看,他就会认可我的代码,重新分析他的代码。有时候测试发现我模拟的客户端也收不到包或收包错误,那么我就会认识到这很可能是服务端错了。那么自己就会换一种心态去审查代码,这次是“相信自己的代码有错误”,所以会比较容易得发现错误。


2、 列出测试清单,驱动开发进程。

首先申明,我这里说的“测试驱动”不是《测试驱动开发的艺术》提倡的方式,我觉得我只能说是“半驱动”。在完成游戏的攻击,受击部分时,我就使用了“半驱动”法。首先先实现基本的技能基础结构,一边实现思路也跟着一边清晰起来,实现后我才开始着手列出测试清单,测试又推动实现的细化。比如考虑受击过程,我列出如下清单(凭印象写出):

a、测试受击方处于不同状态时,被不同类型的技能命中后,状态的变化情况

b、测试同时命中多个单位

c、测试一个技能多次命中同一单位,受击方扣血,状态的变化情况

d、 测试多个技能同时命中同一单位,受击方的状态变化情况

……

开发时,可以以测试为目标,逐个功能去开发,比起这个类扩展完了,再去扩展另一个类的方式要高效的多。

我现在开发的方式是,先开发,在编写测试,然后通过测试再完善开发,是一个不断迭代的过程。


3、 修改之前设计的代码,你能通过测试来保证你的修改没有引入未知的错误。

有些较基础的代码,去修改它,可能会牵一发而动全身,如果是很早之前写的代码,你可能会忘记该具体会影响到哪些地方。这时候,运行一遍测试,就是最好不过的方式了。

题外话:《测试驱动开发的艺术》对我影响较大,对大的影响是让我开始重视测试,并让我对测试抱有信心,任何项目都可以引入测试。在维护公司游戏的时候,我就向部门总监建议过,我们的游戏要加入单元测试,老大想了想告诉我很难,和我举了一些实际的例子,说这个功能怎么怎么样,怎么可能独立测试呢。如果用公司原来开发的游戏引擎,确实是不可能做单元测试的。但是当我参与到游戏开发中时,我始终有这个信念,一定要做单元测试,于是我对引擎做了诸多改良,在设计功能时也会考虑将来如何测试,所以现在我的游戏引擎是可以支持单元测试的。我想改变来自于信念,首先你要相信自己一定能做到。

免责声明:文章转载自《在游戏开发中运用测试》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java服务端极光推送整合Ios、AndroidNABCD需求分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

最适合女生的五大紧缺游戏开发职位

最适合女生的五大紧缺游戏开发职位  游戏公司的工作,在年轻人眼里意味着创意、高薪水和激情,游戏公司的时尚气息和富有创造性的氛围更是吸引很多优秀人才加入的重要因素!  因为三八妇女节的缘故,每到这个时期大家就格外关注女性问题,这次,让我们一起来研究一下游戏行业有哪些适合女生从事的职位吧!  纵观如今的游戏行业,我们可以很明显的发现男女比例过分失调,很多公司除...

【Unity3D入门教程】Unity3D播放音频和视频

前言 在游戏开发的过程中,我们经常会用到播放音频和视频,我们今天给大家带来一种简单的播放音频和视频的方法,使用的是Unity自带的函数。本文的内容参考了宣雨松所写的《Unity3D游戏开发》一书,特此致谢。   1 播放音频 首先,Unity支持的音频格式有wav、mp3、ogg等。在场景中创建一个空物体GameObject,并为其添加AudioSourc...

【转】推荐给大家的7本游戏开发书

1、游戏设计的 100 个原理 世界知名的游戏设计界权威的见解和阐释,深刻揭示原理对游戏设计的启发和价值。 本书首次将游戏设计师的想法中最好的一部分变成一个工具包。作者在书中整合了众多游戏设计秘笈,概括并阐释了 100 条重要的方法、原理和设计哲学。这些原理是从游戏设计的各个流派中收集而来的,并且从创新、创作、平衡和解决问题这 4 个角度来组织并加以...

(转载)游戏开发完整学习路线(各个版本都有)

游戏开发完整学习路线(各个版本都有)   在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的。 一 平台与编程语言选择 首先,游戏开发的平台就有很多类型:  个人主机平台:Windows、Linux、Mac OC; 移动平台...

当我读《体验引擎:游戏设计全景探秘》时我在想什么

写在前面 这本书长这样 当看到它的中文书名时,我以为是讲引擎的书,但并不是。书的内容可见它的英文书名,直译过来是“游戏设计:设计体验入门书”。 我把它归到“不用敲代码也能读下去”类别。 一些感想 这本书所说的“体验引擎”,用我的话概括就是“抽象来说游戏是什么”。这本书按“游戏是什么”,“用什么填充了游戏”,“游戏制作流程中一些重点”依次来组织内容,...

Photon——Application LoadBalancing 负载均衡应用

Application - LoadBalancing 负载均衡应用        This article explains the server-side implementation of the LoadBalancing application.      本文解释服务端是如何实现LoadBalancing应用程序的。   Content...