3

玩家发现了一条V社反复用了20年的祖传代码

 2 years ago
source link: https://www.yystv.cn/p/8037
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

玩家发现了一条V社反复用了20年的祖传代码

游戏史 3天前
游戏史 > 玩家发现了一条V社反复用了20年的祖传代码

有句老话说的好:“要是你的代码还能用,就别去碰它。”最近,一条沿用了20多年的“祖传代码”,让V社成了这句话最忠实的践行者。

在Reddit论坛上,一名用户最近偶然发现了《半条命》系列里的灯光闪烁频率有种奇怪的既视感:

注意到了吗?23年前的初代《半条命》里的灯光,居然和2020年诞生的《半条命:爱莉克斯》有着同样的闪烁频率。

这名资深玩家立即意识到了事情的有趣之处,如果这不是什么彩蛋(经过验证后确实不是),那只能解释为制作方的无心之举,如果是无心之举,那就意味着V社将一条放了20多年的代码搬到了新游戏上。

之后,有人发现了更戏剧的内容:这串代码不仅历史悠久,甚至还见证了V社的游戏历史。因为除了能在半条命全系列中找到相同的灯光场景,在V社的另一个知名系列《传送门》里,也有不少类似景象。

这名用户顺藤摸瓜,最后找到了这个场景的源头——1996年发售的经典FPS游戏《雷神之锤》。

从左上角开始,依次是《雷神之锤》《半条命》《半条命2》和《传送门》,将四个场景放到一块后,虽然发光的设备不同,但可以很明显地看出它们维持着相同的闪烁频率。

在仔细研究了半条命已经开源的代码后,另一位玩家给出了相对合理的解释。V社自初代《半条命》诞生以来,一直使用26个字母来表示灯光的明暗程度,字母“a”代表完全熄灭,“Z”相反,表示最大亮度。

而在这些游戏的源代码中,都能找到一条“mmamammmmmammamamaaamammma”的代码,注释也正好是“灯光闪烁”:

所以在这20年的开发历史中,凡是涉及到需要“灯光闪烁”的场景,V社基本就是从原先的代码库中复制粘贴,这才有了“祖传代码”的说法,但真要细究,可能这段代码也不能算在V社的头上。

最早出现这个场景的是《雷神之锤》,这是id Software的创始人约翰·卡马克利用同名引擎Quake制作的FPS游戏,而随后的初代《半条命》也同样基于该引擎的改良版开发而成。

初代《雷神之锤》

当初编写引擎的程序员随手打下了一串负责场景的代码,之后便被V社原封不动照搬过去;并且即使到了《半条命:爱莉克斯》,这个使用了不同引擎的游戏时,一旦需要“灯光闪烁”,制作组还是会下意识地复制前作的代码。

于是一代传一代,最终造就了一段“祖传代码”,这也正好印证了编程领域的一句名言:永远不要重复造轮子。

仔细想想,这也算是个制作组无意中留下的彩蛋了,发现这个秘密的玩家最后感慨道:“现在当我看到这个不规则闪烁的灯光,我就好奇还能在多少游戏中看到这个场景。”


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK