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

本文原载于今年(译注: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内存。经验告诉他删减内容到预计内存之内总是非常重要的,很多项目因此几近失败。所以现在,作为一种常规做法,他总是留一小块内存,到真正需要的时候再释放他们。

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

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

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

本文译者:kira0001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值