如此多的游戏都以其源码被臭名远扬且混乱/低效的特性而闻名。Terraria就是最典型的例子,有如此脆弱的心理障碍的源码,它并且不需要被混淆。

但这不是唯一的例子。Minecraft在Notch创立之初就有大量的不规则短意,当时就有一大片的静态变量,明确了一些物品被何种工具影响,而工作台和炉子就是其中之一,因为这就是它们为什么在老版本中需要那么久才能被破坏。

但更进一步。我的最爱游戏就是SuperTux 0.1.3(特别是这一版本;而尽管此游戏仍持续被开发今日,后续版本都会失去这一“游艺式”的感觉),我有时会因为SDL 1.2而使用它的源码作为参考,因为这是很有用的事情,对于制作老式系统的游戏特别有价值,然而,它又已经不被大多数人再使用。

而尽管它并不是相对Terraria的源码那么糟糕,它的源码仍然很令人恼怒。它不仅使用的风格难看而且极其不一致,使用过GNU风格、又过“休闲”风格,间隔符在有的地方出现有的不出现的状况,对于其代码用的是纯C还是纯C++是非常困惑的,因为又混杂了两者,对于不加注明的变量会神奇般地在无处不在(可能是在某个头文件上声明了但又在完全不同的地方被使用了),我可以再继续下去。

只是这些是我所经历过的三种,但模式似乎是典型的。

我要问的问题是:为何如此。尤其是对于开源的游戏,它们的源码是可以无缝无闭而获取的,最不需要是不需要进行反编译或是脱雾处理。

我是个业余人,为了使我的源码看起来“好看”我经常在制作过程中不小心为过度抽象而付出代价,似乎真正的游戏开发者们似乎并不在意这一点。

或许我是傻瓜(我当然是),但为什么发现专业的程序员们都写出了如此糟糕又如此成功的源码?