游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2622|回复: 0

解析如何完善游戏结构稳定性

[复制链接]

65

主题

171

帖子

641

积分

高级会员

Rank: 4

积分
641
发表于 2011-9-7 14:34:00 | 显示全部楼层 |阅读模式
作者:Andre Dittrich

  建立稳定性对于我们来说一直都是一个重要的议题,但是当游戏真正进入开发阶段时,游戏和工具的稳定性就变成了技术团队应该考虑的重要议题之一。因为在这时候将会有最多人参与进游戏开发环节,等待着游戏中潜在的漏洞或遗漏道具的出现,同时这也意味着需要投入更多资金加以修复。所以,保持游戏结构的稳定性是一项非常重要的任务。

  遗憾的是,我现在并没有“能够解决所有问题”的处方。我想在此与你们分享我们曾经使用过的一些措施。



迭代次数规则

  拥有一个稳定的游戏结构真的很重要,但是你也不能因此破坏了整个团队的迭代次数。游戏关卡设计者经常会提出一个小功能的改变请求,或者只是需要负责部门快速修改一个主要的漏洞等,并且要求在下一个问题出现前完成这个任务。而这时你也不想看到他花了几周的时间等待这些改变的完成吧。

  如果你的编程团队同时拥有10或20名甚至更多工程师,而你却仍未采取任何措施去维持游戏结构的稳定,那么你的游戏将会面临至少一个的游戏漏洞,而因此阻碍游戏的发行。

  主要问题便是,应对措施需要你挪出更多的日常费用,而这也成为造成缓慢迭代次数的关键原因。所以现在你能做的便是维持日常开支和游戏结构稳定性相平衡。

自动化结构系统

  你需要持续集成服务器(CIS)!当“真正的”漏洞扰乱了你的游戏结构已经算很糟糕了,但是更糟糕的是一些小小的漏洞都能够轻易毁了你的游戏。你是否曾经在一天早上走进办公室却发现不能编译游戏?因为一些排印错误,或者还未收到相关文件,还是隐藏错误的合并信息?有多少人因为这样那样的错误白白浪费了一个上午的时间?很显然,这些漏洞都是可以避免的。

  CIS的主要功能是让你在检查变化过程中持续保持引擎的正常使用,确保引擎和工具的正常编制。当然了,我们还有一些简单快捷的冒烟测试,能够帮助你明确什么时候能够打开引擎进行操作。

  但是你能做的还有更多。白天,你需要随时关注着引擎结构的运行,让它们保持越快的速度,同时你还需要进行冒烟测试。晚上,我们能做的就更多了。我们通过运行自动化测试,以获得测试阶段和游戏阶段中的内存使用和性能状况的相关数据。这些数据主要用于支撑内部网站的图表描绘。这些图表将能够帮助你观察性能和储存状况的突然变化,以及平缓的开发过程。

  适当核对一些评论,能让你在游戏遇到问题前适时阻止最坏情况的发生,或者,至少你可以最快并最有效地意识到问题的发生(而不需要技术援助或其他程序员浪费大量时间去寻找问题的根源)。

  既然谈到了自动化测试,我们就来说说单元测试。我曾经体验过单元测试,尽管我不得不承认这充其量只是一种教我们如何去做的测试方法。我们将单元测试框架在游戏开发的早期整合进Unreal Engine中的Unreal Script和kismet功能中。我们之所以选择用单元测试编写AI编码,是因为这种测试能让我们自行编写而无需要依靠中间件代码做辅助。

  而我们的主要错误便在于我们尝试了一些综合测试,并浪费了大量时间于这些测试过程中。有一段时间,我们甚至将“单元测试”贯穿于游戏的每一个功能中。当因为其系统的变化(而非测试编码的漏洞)导致测试失败后,我们便不得不花费更多时间于修补这些测试漏洞,并最后终止单元测试。

  在我们的下一款游戏中,我想通过一些单元测试以测试我们编码中的重要部分。综合测试主要适用于那些已完成且不容易改变的功能,所以意味着你不得不将这种方法置于开发过程的后期。

同事审核

  这可以说是改善游戏结构稳定性的最好方法了。它不仅能够帮助你真正改善游戏结构稳定性,同时也能够促进你们团队成员间以及与发行者之间的关系,达到一种三赢局面。

  这个方法很简单:当有人想要核对改变时,他需要得到其他同事的审核才能继续进行。当然了,这种方法只有在很正规的执行过程中才有效。同时,审核人员还应该真正理解那个改变是什么,它是如何变化的,并且为什么会发生变化等等。

  审核中不存在所谓的“愚蠢的问题”。如果你在审核过程中有任何不理解的问题都必须提出来。特别是针对那些高层或领导人而言,因为他们经常认为自己不应该低头去咨询一些愚蠢的问题。需要的话,你还可以向他人咨询相关意见。你也可以批评类型或一些细节问题。只要你认为额外或有利于改善的审核有帮助,那么就果断地执行这一方法把。它不仅能够帮助你判断改变是否有效,同时也能够让你与同事共享观点和相关知识。

  所以,你在最后得到了什么?通过审核你只能发现一些显而易见的问题,并想出相应的解决方法。但是你甚少能够发现那些真正复杂的漏洞或者相关副作用。所以,那些未被发现的问题将会在后来的自动化系统,质量评价中被发现,更糟糕的情况是,它们会一直维持到用户发现为止。

  因为人们总是会对一些通常看不到的东西特别在意,所以这个过程也提供给他们相互学习的机会。至少这两个人都知道相关改变的细节,因此有了一定的存在感,而不会轻易离开公司。

  在你的团队中,队员们能够谈论你的工作,并确保这项工作能够在被发现漏洞之前得到完善(游戏邦注:如果你的审核者发现了那一段你认为无误的代码是错的,那么这个场面将非常尴尬)。团队成员能够交谈,他们具有共同的语言,他们理解每一位成员的优势和劣势。

  在同事审核过程中需要记住的一些事:

  耗时:确保每个人都知道这是一件花时间的工作,估算出所耗时间。

  每次登记都应该接受审核:很多“简单”或“小型”的登记也会造成很多错误。

  同事愿意做审核:如果没人有时间接受审核,那么这一工作看起来真的很烦人,所以你应该针对次问题想出相关解决方法。

  阐明谁来做审核工作:你应该更加重视这一环节,如果你发现一个由登记引起的漏洞,那么你应该确保这时候有两个人能够帮助你解决这一问题。

登记评论

  刚开始我并不清楚登记评论为何能够改善游戏结构的稳定性,因为一旦漏洞被登记在案,那么便不能改变了。好的登记评论能够让我们更容易找到问题所在。结构化格式评论更有效。想象一下你坐在电脑屏幕面前打算从100条登记评论中找出引起AI漏洞的根源,真的要抓狂了吧。最快最简单的方法便是,尽可能地选取那些有帮助的信息。我们正是采取这种方法找到很多“难以发现”的漏洞。

  但是事实上,如果你能够合理使用登记评论这一方法,它确实能为你带来不少好处。你可以使用资源控制系统以获取相关区域每天登记人员的自动化邮件,以及这些登记人员的资料。这一系统不仅有利于获取登记评论,同时也能够让程序员,QA人员以及开发者了解相关登记信息。

结构测试

  这是一项困难的任务,并且需要内部质量评价资源和一些额外工具作辅助。基本问题很简单:在登记改变之前,如果你不确定这个改变是否准确,那么就测试看看。

  我想每个人都了解这种糟糕的感觉吧,即当你按照一种早期的编程方法做出改变,而这种编程同时也触及了很多其它编程内容(假如那个最初的编程人员已经去世了,而你将不得不在你的中间件中改变这一编程)。你并不知道这么做有何副作用,而且你也找不到任何自动化测试方法,而这时唯一的方法就是——测试。

  最适合测试这项工作的莫过于QA人员了。所以,你需要创建一个游戏的局部结构(或者具有代表性的一部分),并将其发给QA团队以测试改变。在等待期间你也可以检验你的改变,或者继续寻找其它漏洞。

  为了尽可能实现这一举措,你需要采取一些有力的辅助工具。我们正在使用Unreal Engine的结构工具。使用Unreal Frontend能帮助我们针对各种平台创造出更好的游戏结构。这个工具能够按照你的想法面向不同平台加工你的游戏。如果没有这个工具,我们便不得不使用中央处理器(支柱服务器)来维持我们的游戏结构。

  QA人员通过使用简单的网页界面将游戏结构复制到他们的电脑上或XBOX(微软游戏机)上。所以你可以创建一个游戏结构,并将其复制到网络文件夹上,发电子邮件给QA人员说明是在哪里发现这一结构。但是当整个过程变得更简单时,人们会更青睐于这个方法,并且不会轻易放弃它。为了让整个过程更加顺畅,我们同样也建立了一系列严格工作流程。

  但是,即使你完美地按照上述方法进行改善,也不能保证你的游戏完全没有漏洞,但是这么做却能让你花更多时间去检查并发现其它重要且有趣的漏洞,最重要的是,能够更好地完善你的游戏结构稳定性。

翻译:游戏邦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-24 04:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表