前人经验总结

“又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。

谨以此文献给那个自己为你奉献3年青春与激情的开发团队。还有团队成员:PPL、YT、YK 、TYF、LGL、CHL、CDY、CB、DPD。

1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!

2、一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。

3、软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在MM比较多的团队中。在软件项目团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。

4、详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。

5、书籍是人类进步的阶梯,对软件开发人员尤其如此。书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些家伙出的书,!00%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。

6、不要仅局限于对某项技术的表面使用上,哪怕你只是偶尔用一、二次。“对任何事物不究就里”是任何行业的工程师所不应该具备的素质。开发Windows应用程序,看看Windows程序的设计、加载、执行原理,分析一下PE文件格式,试试用SDK开发从头开发一个Windows应用程序;用VC++、 Delphi、Java、.Net开发应用程序,花时间去研究一下MFC、VCL、J2EE、.Net它们框架设计或者源码;除了会用J2EE、 JBoss、Spring、Hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!

7、在一种语言上编程,但别为其束缚了思想。“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由,所以也没有哪门语言是“包治百病”的“灵丹妙药”。编程语言对开发人员解决具体问题的思路和方式的影响与束缚的例子俯拾皆是。我的经验是:用面对对象工具开发某些关键模块时,为什么不可以借鉴C、C51、汇编的模块化封装方式?用传统的桌面开发工具(目前主要有VC++、Delphi)进行系统体统结构设计时,为什么不可以参考来自Java社区的IoC、AOP设计思想,甚至借鉴像Spring、Hibernate、JBoss等等优秀的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时,为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式?为什么一切都必须以个人、团队在当然开发语言上的传统或者经验来解决问题???“他山之石、可以攻玉”。

8、养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。众所周知,对软件开发人员而言,有、无经验的一个显著区别是:无经验者完成任何任务时都从头开始,而有经验者往往通过重组自己的可复用模块、类库来解决问题(其实这个结论不应该被局限在软件开发领域、可以延伸到很多方面)。这并不是说,所有可复用的东西都必须自己实现,别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没有知识产权、版权等问题,关键是自己实现后能真正掌握这个知识点,拥有这个技能。

9、理论与实践并重,内外双修。工程师的内涵是:以工程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发语言、应用语言工具解决工作中的具体问题、完成目标任务是软件工程师的主要工作,但从软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工作。学习、掌握软件产品开发理论知识、软件开发方法论,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的软件产品研发问题,才是真正的软件工程师的工作。站在成熟理论与可靠方法论的高度思考、分析、解决问题,并在具体实践中验证和修正这些思想与方式,最终形成自己的理论体系和实用方法论。

10、心态有多开放,视野就有多开阔。不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。请及时发布自己的研究成果:开发的产品、有创意的设计或代码,公布出来让大家交流或者使用,你的成果才有进化和升华的机会。想想自己2000年间开发的那些Windows系统工具,5、6年之后的今天,还是那个样子,今天流行的好多Windows系统工具都比自己的晚,但进化得很好,且有那么多用户在使用。并且,不要保守自己的技术和思想,尽可能地与人交流与分享,或者传授给开发团队的成员。“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大家都懂,但有多少人真正能做到呢?

11、尽量参加开源项目的开发、或者与朋友共同研制一些自己的产品,千万不要因为没有钱赚而不做。网络早已不再只是“虚拟世界”,网上有很多的开源项目、合作开发项目、外包项目,这都是涉猎工作以外的知识的绝好机会,并且能够结识更广的人缘。不要因为工作是做ERP,就不去学习和了解嵌入式、实时、通信、网络等方面的技术,反过来也是一样。如果当他别人拿着合同找你合作,你却这也不会,那也不熟时,你将后悔莫及。

12、书到用时方恨少,不要将自己的知识面仅仅局限于技术方面。诺贝尔经济学奖得主西蒙教授的研究结果表明: “对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。可见,掌握一门陌生的学问远远没有想想的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自己的影响圈、尽量扩大自己的关注圈。财务、经济、税务、管理等等知识,有空花时间看看,韬光养晦、未雨绸缪。

13、本文的总结与反思:不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软件开发知识的建议,做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜任工作即止。提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。软件专业知识的很多方法和原理,可以很容易地延伸、应用到生活的其它方面。在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质,尤其是那些目标不在技术方面的朋友

一个老程序员的心得

  不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
   1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。(广州达内,中国高端IT培训专家。 www. tarena.com.cn/guangzhou不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
   2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
   3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。(IT培训咨询QQ:787031304;)简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
   4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
   5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
   6. 多与别人交流。(达内科技IT培训,先就业,后付款!)三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
   7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
   8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。

揭秘:《剑网3》开发全过程

转载自http://job.17173.com/content/2008-11-20/20081120172521681,1.shtml

作者:西山居工作室/剑网3/程序 Readme

  
编者按:西山居作为国内知名的游戏工作室,十余年来积累和沉淀了很多东西,无论是美术还是策划或程序或测试,无论是早期的《中关村启示录》、还是现在的《剑侠情缘》系列。金山官方博客将会邀请西山居美术、策划等同事为我们分享游戏制作过程中的点点滴滴。希望通过这些,能够让大家更多地了解到游戏是如何“炼”成的,也希望通过此,为有志于游戏行业的朋友们提供一些指导和建议。

  剑侠情缘叁为什么要自己开发引擎?

  剑侠情缘叁是西山居的第一款全3D网络游戏,使用的是我们自主开发的剑侠叁3D引擎。也许有人会好奇的问:市面上有这么多的游戏引擎,为什么不选择成熟的引擎而要选择自主研发呢?你们真的有信心能做的出来?这个问题就需要从金山的传统说起了。金山是一个以技术立业的公司,我们的核心竞争力在于自主研发能力。从WPS到毒霸再到剑侠情缘网络版,都是从无到有,自主研发出来的。全3D网络游戏代表着网络游戏的发展趋势,而其中的核心技术之一就是3D图像引擎。3D图像引擎技术的理论基础是计算机图形学,这是一门成熟的学科;而在开发剑叁3D引擎之前,我们使用过一款商业化的引擎,在技术上有了一定的积累。有了理论的指导和实际的经验,我们对自主开发并完成一款3D引擎有相当的信心。我们也希望通过引擎的开发建立一支稳定高效的团队。在剑叁引擎的开发过程中,我们的团队始终保持着对技术的不懈追求,不断的完善着3D引擎的功能和效果。同时通过和美术策划同事的合作,我们在引擎相关工具的制作上也积累了大量的经验。这些收获为我们今后追求更高的目标打下了坚实的基础。

  我们做了什么?

  从立项到现在,剑侠情缘叁经过了多年的开发。在这漫长的过程中,我们都做了些什么呢?我们主要的工作包括3D图像引擎和相关的工具的开发。

  图像引擎的作用,是把抽象的数据转换成图像显示到屏幕上。剑叁采用的是由多张地图组合成为整个游戏世界的方式。我们把每张地图都称为一个场景,玩家的人物就在各个场景中活动。场景由多个部分组成,比如说大地我们称为地表;地上的房子、树、城墙什么的,被称为物件;玩家的人物,NPC等活动的元素,被称为活动物件。3D引擎的作用,就是组织好地表和分布其上的物件和活动物件,把它们按照策划和美术同事的设计完美的显示出来。

  在剑侠情缘叁开始之前,我们做了一个小的演示程序。这个演示的主要目的是测试一些关键的技术是不是可行,效果如何,并且为美术同事制定美术元素制作规范提供参考。当时,剑侠情缘叁是一个采用传统2D游戏斜45度视角的游戏,
所以我们的演示程序也是按照这个要求来做的。通过这个Demo,我们主要测试了2D逻辑下的场景管理,3D模型和特效的显示,骨骼和顶点动画技术。

技术测试的3D引擎项目炸弹人

在这个Demo里玩家可以控制一个人物在场景里来回跑动,放置炸弹。玩法和以前FC上的炸弹人类似。当然这个Demo不是说剑侠情缘要做成这样的游戏,他的目的是帮助我们测试上面提到的关键技术,证实已知的方法是确实可行的。测试完成的相当不错,这些技术到现在的都还在使用中。

  有了良好的测试结果, 我们就准备开始大干一场了。在M1的期间(PS,
M是指里程碑,是我们对项目一个目标阶段的说法),我们制作了地图编辑器和特效编辑器。有了地图编辑器,美术同事可以给地表刷上不同的图,表现出草地、沙地之类的变化,然后在刷好的地表上,摆放上房子、路灯、树等等物件,再加上NPC,一个基本的场景就完成了。我们就可以进入到场景里,活动活动腿脚,欣赏下美丽的风景,和NPC做做友好的交流;有了特效编辑器,我们就可以制作火焰、雨雪、水花这些华丽的效果,把这些东西也放到场景里面,画面就显得更有生气了。

  随后我们的工作主要是一些修整和完善。等到WOW推出之后,我们发现2D方式的斜45度视角和WOW的全开放视角比起来,在表现力和游戏体验上都有相当的差距。所以整个项目组在讨论之后,在剑侠情缘叁M2.1的时候作出了一个重大的决定。我们放弃了斜45度锁定视角,转而采用全开放的视角。

  这个决定对3D引擎的影响是巨大的。本来我们采用斜45度视角只要把以前2D游戏的场景管理方式稍加修改就可以了,但改成开放视角之后,需要采用全新的场景管理方式。更要命的是,这个变化不只影响到我们3D引擎,
还影响到美术的的制作。

M1时的剑叁3D引擎截图

  对程序来说,3D场景的管理,是有着成熟的技术理论的支持的。经过一段时间的努力,我们完成了程序上的调整。但是这并不代表整个项目调整的完成。全开放视角对美术的场景制作的观念也带来了巨大的冲击:
以一个房子来说,
在开放视角下,玩家可以从各个角度各个距离观察这个房子,而以前45度锁定视角,玩家只能在一个固定的角度和有限的距离范围内来查看。这就对房子的制作精度有了更高的要求。很多美术之前出于效率考虑采用的优化方法,比如说只制作能被看见的部分,就不能再被使用了。

  开放视角带来的另外一个问题,是可视距离增大带来的场景复杂度的上升。以前斜45度视角只能看到有限的范围,而开放视角之后,如果在平视状态下,视野范围会比以前大很多倍。在程序上,我们采用了LOD技术来动态的调整场景的复杂度,以达到效率上的要求。而对美术来说,
场景的规划比以前有了更高的要求,把很多的东西集中的堆在地图某些区域之内是绝对不被允许的。
如何合理的规划一张地图上的物件,物件应该如何制作才能在画面效果和运行效率间找到平衡, 这些都是急需解决的问题。

  因为美术同事也是第一次制作全3D的地图,缺乏全3D场景的制作的经验。所以他们也做了一个Demo,一张模板地图。最终的选择是剑侠情缘叁的新手村地图。就好像玩家今后都诞生于新手村一样,我们其他所有的地图也都诞生自新手村地图。通过这张地图的制作,美术同事总结出了地图制作和物件制作的规范。那个过程是痛苦而快乐的。痛苦在于很多之前的美术工作被完全的推翻和制作上作出的许多调整;快乐在于开放视角带来的全新游戏体验:忽然可以看到一个广阔的空间的震撼,是每一个从锁定视角游戏过渡到开放视角游戏的玩家都难以忘却的。

 

2008年11月20日 17:25:21  
发表评论/查看评论

 

M2.1改版之后的剑叁3D引擎

  在程序的调整完成之后,我们的程序员爆发出了旺盛的创造欲望。那时显卡的可编程管线技术已经比较普及了,所以我们修改了3D引擎,正式加入了对可编程管线的支持。对于热爱画面表现胜过一切的3D图像程序员来说,
这就好像打开了通往新世界的大门。基于贴图模板的四层地表贴图、法向量贴图、水面反射、全屏幕特效、环境光阻挡图,
预渲染阴影图、柔体,剑侠情缘叁的画面就像从侏罗纪公园回到了现实中。

  在那之后一直到现在, 3D引擎组除了继续美术工具的制作之外,提高渲染效率和效果的变成了我们的主要工作。

  更高的渲染效率,意味着图像引擎可以承受更高的场景复杂度,也就是说可以在场景里面放置更多的东西,
让画面显得更丰富,从而提高整体画面感觉。在这方面我们通过优化场景管理和渲染流程,
并采用了一些DX9的新技术,效率得到了显著提升。然后我们充分使用了这部分优化带来的空闲性能,实现了大规模地形植被(地上长满了各种各样的植物),动态光影(从此不再只有刀光没有剑影了),
并整合了物理引擎(长袖飘飘的效果)。

  在美术的工具上,在完成基本功能之后,我们的工作重点放在了工具的易用性上,主要的方向是制作工具的自动化。举个例子来说,比如需要在地图上的两个地方之间勾出一条道路。以前的做法,是美术用类似画笔的工具在这个路线上画上道路的贴图。设想一下,如果两个点之间有一公里远,那么美术同事就需要用笔刷一点点的涂完这个一个公里的长度。如果有这样一个工具,只要在两个点之间连一条线,并在两点之间根据需要设定一系列的关键点,然后点“确定”,瞬间就可以自动生成一条连接两点,并且经过所有关键点的道路,世界会变得多么美好。

目前的3D引擎效果

  剑叁3D引擎的历史到这里基本上就介绍完了,更多的历史在等待着我们去书写。剑侠情缘叁背负着西山居的光荣与梦想,体现着金山对技术的执着追求,能够参与这样一个激动人心的项目,是我们每一个人的荣幸。

部分同事在去年愚人节剑叁发生大头事件的合照

 

“西山居出品,必属精品!”

  “剑网3真稳定!剑网3真好玩!”

  “不卡号、服务端程序连续运行144小时不崩溃!”

  上述是剑网3项目组全体成员要实现的伟大目标!

软件开发周期性测试

  也许你会问,为什么我们这么重视产品的“稳定”?因为这是结合了西山居人多年研发和运营网络游戏的丰富经验总结出来的,游戏功能可以逐个版本进行完善,游戏流畅度可以一步一步去改善,但是如果在游戏运营过程中,经常出现服务器宕机,客户端程序崩溃,这对于我们广大玩家来说,无疑是当头一棒!极大的影响游戏乐趣。

  我们是如何来实现“稳定”这个目标的?剑网3的测试人员平时都在做些什么呢?通过本文,你将对剑网3的质量团队有初步的了解。也希望大家以后能够给予剑网3这个产品更多的支持!

  剑网3是西山居目前研发时间最长的项目,差不多研发了5年了!“质量第一”是西山居工作室实现精品游戏的第一步,如果质量关没有通过的话,宁可将产品发布时间表推迟,也不能发布一个不稳定的产品出去。

  总体来讲,剑网3的质量人员主要分为“游戏测试工程师”和“测试开发工程师”。当然还有SQA(质量保证组),SCM(配置管理组),这两个组主要工作是项目管理方面。质量人员平时的主要工作是与策划或程序员讨论功能需求设计,进行测试设计(如编写测试方案和测试用例),编写测试报告。

日常代码测试

游戏测试工程师主要的任务目标是确保剑网3的各个游戏功能按照策划案被完整地、正确地实现,实际制作出来的游戏场景与任务要与策划设计的一致,发现的问题或BUG多数为策划设计类和功能类的BUG。例如,游戏场景的风格是否与策划内容一致(如策划设计的是雪地场景,实际实现的也应该是雪地场景,不能在这个场景中出现不协调的场景元素。),功能NPC的功能是否正确实现(如命名为“饰品店老板”的NPC不能同时卖武器),音效是否正确实现(如刀击与棍击的音效是不同的),等等。

  游戏测试工程师的基本要求是对我们的游戏功能和需求非常熟悉。如果你深入玩过多款不同类型的游戏并能够很好的理解游戏系统,并且有一定的编程基础(编译语言不限),就能够更好的帮助发现BUG和提升游戏的可玩性等游戏质量。

游戏测试工程师平时的主要工作有:按版本进行系统测试或功能测试,跑场景(检查障碍、物件、任务、怪物分布等等)、测试怪物AI、检查和测试物品掉落机率、检查NPC对话、测试武功技能等等。同时还会做兼容性测试(如:显卡、CPU、操作系统等等)、易用性测试(如界面操作顺畅度、界面友好度等)。


代码测试工作流程定义

  测试开发工程师主要的任务目标是保障程序代码的质量,同时开发和提供各种调试、测试需要用到的辅助工具,测试开发工程师还需要通过“代码走查”和“单元测试”来发现程序代码规范性问题和潜在的BUG。“让计算机做善长做的事情”----
是测试开发工程师做事的一个重要理念,所以我们开发出了一些自动化的测试工具,如可以自动检查配置表错误的检查工具,可以帮助测试工程师自动跑任务的游戏机器人等。因为我们在每天的凌晨会自动构建版本(通常叫做Nightly
Build),然后会进行自动化测试,所以测试开发工程师每天早上上班第一件事就是看自动化测试报告,这样可以及时地发现每个版本的问题,及时修复。

  测试开发工程师的基本要求掌握较好的编程能力和程序调试能力,有一定的软件系统设计能力,同时对所开发的产品的相关领域知识有一定的了解和掌握,如我们开发的是网络游戏,那么就要会Socket编程,图形编程(如2D或3D),数据库设计与操作等。

  为了更好的说明剑网3质量人员主要的工作任务,给出以下示意图:

  如上图所示,测试开发工程师主要是确保“系统设计—详细设计与编码”这个阶段的相关质量,如系统设计是否合理,算法是否是最优的,代码可读性如何、有没有BUG等等。要特别提出的是,测试开发工程师的工作可以在版本还没有完整编译出来之前就可以开展,也就是说,只要程序员把设计文档写好,或者代码提交到代码库,测试开发工程师就可以开始进行测试了。在游戏测试工程师的工作之前就可以发现一部分BUG。避免这些BUG遗留到系统测试阶段。而游戏测试工程师侧重于发现集成环境下出现的BUG和产品化方面的BUG。

  当然,除了上述说到的要有“专业”的能力外,还需要其它方面的能力,简单地说就是“工作能力”了。网络上有一篇文章,大意是“测试人员必备的十大素质”,有耐心,细心,良好的沟通能力,很好的抗打击能力,较好的总结能力,洞察力,对问题的敏感能力等等。说实话,如果你真的可以同时做到了这些,我可以称你为“神”了!不过作为一名优秀的软件测试工程师(不管是游戏测试或是测试开发),会编程、有耐心、对问题有较好的敏感性、良好的沟通能力确实是做好软件测试工程师的比较重要的前提条件。

就拿耐心来说吧,大家都知道,在游戏研发过程中,会经历无数次的版本集成,也就是说会出无数个版本,对于游戏测试工程师来说,基本上每个版本提交测试后,都需要去将各个场景的任务跑一遍(任务个数成百上千噢。。。),同时还要检查每个NPC和怪物的位置和功能等等,这样做久了肯定会累的。自己想不清楚的话,可能会放弃,如果想清楚了,工作中也经常有一些比较有趣的事情发生。比如为了测试方便,我们的测试工程师们在游戏里一般都是“上帝”。呵呵,其实就是在游戏里可以使用各种各样的“GM指令”啦~~~有了GM指令,你可以随意设置你的角色的等级,获得所有高级装备,学会各种门派的顶级武功,去任何你想要去的地方,这样,各大怪物BOSS当然不在话下,你想怎样孽待这些怪物都可以。哇哈哈~~~不过,有时为了尽量模拟游戏发布后,玩家可能碰到的问题,还是会限制使用“GM指令”的。记得曾经发生过一件很有趣的事:某日测试工程师A创建了一个角色,要测试NPC的一些动作,把村子里面的一个教武功的NPC和周围几个其它NPC杀了,连地上走动的小鸡都不放过,这时在旁边做其它测试的同事发现不能从这个NPC接任务了,然后就开始把追杀他!

工具开发流程

  至此,各位应该对剑网3的测试有了初步的了解了吧?

  总之,我们的目标是做一款精品游戏,做一款好游戏!剑网3的质量保障人员是我经历过的项目中人数最多的,也是最有实力的一支队伍,有了这样一支队伍,再加上一批有做精品游戏理念的项目其它成员,我相信我们能够把剑网3的质量做得足够好,让大家顺畅地、开心地游戏。