网站大量收购独家精品文档,联系QQ:2885784924

(调试游戏程序的学问.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(调试游戏程序的学问

1.1 调试游戏程序的学问 作者:Steve Rabin, Nintendo of America Inc. 邮箱:steve@ 译者:沙鹰 校对:万太平 调 试游戏程序,和调试任何其它软件的代码一样,都可能是一项艰巨的任务。一般说来,有经验的程序员能迅速地识别并纠正哪怕是最难的bug,但是对于新手而言,改bug可能更像是一件难以处理的,并且容易使人灰心丧气的任务。更糟的是,当你初步着手开始寻找bug的根源时,永远也不会知道究竟要花费多长时间才能找到。此时不必慌张,要像个训练有素的程序员,集中精力寻找bug。一旦你消化了本文介绍的技巧和知识,你将能够击退最“凶猛”的bug,重获对游戏的控制。 运用本文描述的五步调试法,困难的调试过程也可能变得简单一些。训练有素地运用该方法,将确保你花费最少的时间在寻找和定位每一个bug上。在你着手对付一些有难度的bug时,牢记一些专家技巧也很重要,因此本文也收集了一些有价值的、经过时间考验的技巧。然后本文还列出了一些有难度的调试情境,解释了当遇到一些特定的bug模式时应当做些什么。因为好的工具对于调试任何游戏都很重要,本文还将讨论一些特定的工具,你可将这些工具嵌入你的游戏中,从而帮助调试一些游戏编程所独有的调试情形。最后让我们回顾一些在前期预防bug的简单技术。 1.1.1 五步调试法 老练的程序员们具有一种超能力,能够迅速地、驾轻就熟地捕捉到即使是最不可思议的bug。他们总是神奇地、近乎直觉地知道错误源自何方,这一点实在令人敬畏。他们之所以显得天才,除了因为拥有丰富的经验外,还因为他们对于勘探和减少需排查的可能的原因的方法训练有素、融会贯通。下面给出的五步调试法旨在重现他们所熟练掌握的技能,助你在跟踪bug的问题上形成一种有系统的、且注意力集中的风格。 1.1.2 第一步:始终如一地重现问题 不论是什么bug,重要的是,你应当了解如何能够始终如一地重现它。 试图纠正一个随机出现的bug常会使人感到挫败,而且通常不过是浪费时间。事实是,几乎所有的bug都会在特定的情境下可靠地重现,因此发现这个情景和规律就成为你的、或贵公司测试部同仁的工作。 让我们举一个假想的游戏bug为例,在测试员报告里写道:“有时候,游戏会在玩家杀死敌人时死机(Crash)。”不幸地,像这样的bug报告太过于含糊,而且由于这个问题看上去不是百分之百会出现的,多数时候玩家仍可以正常地摧毁敌人。因此当游戏crash时,必然还有一些其它相关因素。 对于不容易重现的bug,理想情形是创建一系列“重现步骤(Repro Steps)”,说明每次应怎样才能重现bug。例如,下面的步骤极大地改善了之前的bug报告。 重现步骤: 1.开始单人游戏。 2.选择在第44号地图上进行Skirmish也就是多人练习模式的游戏。 3.找到敌人营地。 4.在一定的距离开外,使用投射类武器(Projectile Weapon)攻击在营地里的敌人。 5.结果:90%的时候游戏死机。 显然,重现步骤是一种很好的方法,测试人员藉此帮助其他人重现bug。不过,精简可能导致bug发生的事件链(Chain of Events)的过程也是至关重要的,其原因有三。第一:对当时bug为何发生提供了有价值的线索。第二:提供了一种比较系统地测试bug是否已被彻底改正的方法。第三:可用于回归测试,确保bug不再卷土重来。 尽管这里的信息没有告诉我们bug的直接诱因,它使我们能够始终重现bug。一旦你确定了bug发生的环境,你就可以进行下一步骤,开始搜集有用的线索。 1.1.3 第二步:搜集线索 现在你能够可靠地使bug重现,下一步请你戴上侦探的鸭舌帽并搜集线索。每条蛛丝马迹都是排除一个可能的原因并缩短疑点列表的机会。有了足够的线索,bug的发源地会变得明显。因此为了明了每条线索并理解其潜台词,付出的努力是值得的。 不过有一点要注意,你应当总是在心里质疑每一条已发现的线索,是不是误导的,或不正确的。举例来说,我们被告知某个bug总发生在爆炸之后。尽管这可能是一条非常重要的线索,但它仍然可能是一个虚假的误导。时刻准备着放弃那些与收集来的信息冲突的线索。 还是以上面的bug报告为例,我们了解到游戏的crash发生在玩家使用投射类武器攻击某个特定的敌人营地的时候。究竟关于投射类武器和从远处攻击这两者,有什么特别之处?这是需要深思的重点,但也不要耗费太多时间思考。亲临其境,观察错误究竟是如何发生的,因为我们需要获取更多的确凿的证据,而留连于表面的线索是获得实际证据最不有效的方式。 在本例中,当我们进入游戏,并实际观察错误的发生时,我们会发现游戏死机发生在一个“箭”对象里,错误的症状是一个无效指针。进一步的检查显示,该指针本来是应当指向那个发

文档评论(0)

wwy463wj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档