脏代码技巧 之 写程序的黑暗英雄

[当日程表紧张而游戏即将发售时,程序员会用一些脏代码技巧来保证游戏按时完工。本文原载于今年(译注:2009年)早些时候发售的Gamasutra姊妹出版物《Game Developer magazine》,记载了9个真实的脏代码技巧的例子,本文是其中的一个。]

程序员通常都是些追求条理和严谨性的家伙,他们总是尽最大努力保持代码的整洁和优雅。但当情况紧急,日程表不容变更,而游戏即将发售时,“把它完成”的优先级就会超过代码优雅。

在这种情况下,一个过度加班疲惫不堪的程序员更倾向于抛弃最佳方案,而以一种难以令人满意的的hack方式来完成代码,这里我们编辑了来自现职开发者的9份证言,记录了当他们不能遵循编程规范,不得不用一些技巧来挽救项目。

- Brandon Sheffield

9. 写程序的黑暗英雄

在即将迎来我参与的第一个专业游戏项目 —— 一个90年代后期的PC游戏 —— 的beta阶段时,我还只是个刚毕业的新手。那就像坐过山车一样令人兴奋。内容全部整合好了,而且游戏看起来很棒。只有一个问题:内存使用量超出了预计。

因为大部分内存都是被模型和纹理用掉的,所以我们和美工一起删减美术资源以节省内存开销。我们缩小图片,大量删除模型,压缩纹理。有些做法美工可以接受,有些就只能推倒美工才得以实行了。

我们删了1M又1M,经过几天艰苦的努力,我们抵达了某种临界 —— 再也没有什么可以删的了。除非我们砍掉游戏的一些主体内容,不然再没有任何办法可以削减内存使用量了。我们精疲力尽地统计了当前的内存用量,发现还是多出1.5M!

这时,我们这里最有经验的程序员之一 —— 一个曾在“美好的久远年代”混迹开发领域数年的前辈 —— 决定接手这件事。他把我叫进他的办公室,我心想又要来一场劳心伤神的内存争夺战了吧。

可是,他只是打开一个源文件然后指着其中一行:

static char buffer[1024*1024*2];

说,“看到了吗?”然后轻轻一按,删掉了这行代码。搞定!

也许是察觉到我眼中的震撼,他向我解释说他在开发的早期阶段加进了这2M内存。经验告诉他删减内容到预计内存之内总是非常重要的,很多项目因此几近失败。所以现在,作为一种常规做法,他总是留一小块内存,到真正需要的时候再释放他们。

他走出办公室,然后宣布他已经把内存使用量减至上限之内,后来他被看作是这个项目的英雄。

尽管被这种野蛮的做法“震惊了”,我还是不得不承认我对他的做法很感兴趣。我还没想到在哪里可以用上这招,但我知道了在有些时候,当你面对障碍时,为了应对困境而事先藏起一些内存真的非常有意义。时间和经验带来的改变可真是有趣。

- Noel Llopis

--------
本文译自GAMASUTRA的 Dirty Coding Tricks  ,原文作者:Brandon Sheffield

本文译者:kira0001

anyShare分享到:
      
This entry was posted in 分类?没有. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.
  • http://twitter.com/mine260309 Lei Yu

    事实上,有经验的程序猿会先分析一下memory map,包括.bss段,看看有哪些大数组,哪些是没用的哪些可以缩小。如果真有这么一个数组,应该还是比较容易发现的吧。。。

    • Yafei Zhang

      您说的只是理论情况, 我认识的正常思维的程序员还是会先借助profiler的

    • http://www.blog1980.info/ lyman

      您这要求对于 game 行业的人来讲太高了

      • Anonymous

        在嵌入式领域这个是基本的素质....

  • hai zheng

    有意思

  • http://glacjay.is-a-geek.org/blog/ Jay True

    “有些就只能推倒美工才得以实行了”。推倒美工是字面意思?还是写错了?

    • http://www.weibo.com/u/1763247875 kira0001

      这个用词是我个人的恶趣味,本意应该是“有些就只能强迫美工接受了”。
      翻译的过程挺无聊的,在这种小地方做点手脚自娱自乐一下,还有希望同道中人读到这里能会心一笑^_^

  • la0wei

    在此问个和文章无关的问题,望博主指教下,最近注册用户名的时候经常发现已经被注册了,于是想到利用数字和字母的相似性,比如wh1te(用数字1代替字母i)这样。我不记得用什么为关键字在baidu空间中找到过一篇文章,详细讲述了这种网络文化,博主能给些线索吗

  • 作者

    http://www.weibo.com/u/1763247875
    平时多流汗,战时少流血
  • 关于黑客志

    黑客志是一个多人协作的群体Blog,旨在为国内开发者提供新鲜和高质量的黑客文章。我们的文章主要来自Hacker News,如果您也想和我们一道传播黑客精神,请立刻加入我们!

    立即加入!

  • 版权声明

    本网站所有文章版权归原作者所有,请根据作者选择的文章版权,在协议允许的范围内进行使用,或联系作者获取授权。

  • 关注我们

    新浪微博 Google+ Twitter RSS

无觅相关文章插件,快速提升流量