玩家发现了一条游戏公司反复使用了20年的“祖传程式码”,出现在多个游戏场景中
原文连结:https://www.techbang.com/posts/88570-game-code-20years
https://images.plurk.com/1NW7VxMbwI0fEKpWha8Zc0.jpg
有句老话说的好:“要是你的程式码还能用,就别去碰它。”一条沿用了20多年的“祖传
程式码”,让V社(Valve Software)成了这句话最忠实的践行者。
在Reddit论坛上,一名玩家最近偶然发现了《战栗时空》系列里的灯光闪烁频率有种奇怪
的既视感:
https://images.plurk.com/1rHTt62NSVQt3yhQAWpkrt.gif
注意到了吗?23年前的初代《战栗时空》里的灯光,居然和2020年诞生的《战栗时空:艾
莉克丝》有着同样的闪烁频率。
这名资深玩家立即意识到了事情的有趣之处,如果这不是什么彩蛋(经过验证后确实不是
),那只能解释为制作方的无心之举,如果是无心之举,那就意味着V社将一条放了20多年
的程式码搬到了新游戏上。
之后,有人发现了更戏剧的内容:这串程式码不仅历史悠久,甚至还见证了V社的游戏历史
。因为除了能在战栗时空全系列中找到相同的灯光场景,在V社的另一个知名系列《传送门
》里,也有不少类似景象。
这名玩家顺藤摸瓜,最后找到了这个场景的源头——1996年发售的经典FPS游戏《雷神之锤
》。
https://images.plurk.com/5nrb5S064Y76xGiTp60ft3.gif
玩家发现了一条游戏公司反复使用了20年的“祖传程式码”,出现在多个游戏场景中
从左上角开始,依次是《雷神之锤》《战栗时空》《战栗时空2》和《传送门》,将四个场
景放到一块后,虽然发光的设备不同,但可以很明显地看出它们维持着相同的闪烁频率。
在仔细研究了战栗时空已经开源的程式码后,另一位玩家给出了相对合理的解释。V社自初
代《战栗时空》诞生以来,一直使用26个字母来表示灯光的明暗程度,字母“a”代表完全
熄灭,“Z”则表示最大亮度。
而在这些游戏的源程式码中,都能找到一条“mmamammmmmammamamaaamammma”的程式码,
注释也正好是“灯光闪烁”:
https://images.plurk.com/1q8VzRl2sHiIMWBxcQms4G.jpg
玩家发现了一条游戏公司反复使用了20年的“祖传程式码”,出现在多个游戏场景中
所以在这20年的开发历史中,凡是涉及到需要“灯光闪烁”的场景,V社基本就是从原先的
程式码数据库中复制贴上,这才有了“祖传程式码”的说法,但真要细究,可能这段程式
码也不能算在V社的头上。
最早出现这个场景的是《雷神之锤》,这是id Software的创始人约翰·卡马克利用同名引
擎Quake制作的FPS游戏,而随后的初代《战栗时空》也同样基于该引擎的改良版开发而成
。
https://images.plurk.com/3JH80LQlNsguAE6Q5958DQ.jpg
▲ 初代《雷神之锤》
当初编写引擎的程序员随手打下了一串负责场景的程式码,之后便被V社原封不动照搬过去
;并且即使到了《战栗时空:艾莉克丝》,这个使用了不同引擎的游戏时,一旦需要“灯
光闪烁”,制作组还是会下意识地复制前作的程式码。
于是一代传一代,最终造就了一段“祖传程式码”,这也正好印证了编程领域的一句名言
:永远不要重复造轮子。
仔细想想,这也算是个制作组无意中留下的彩蛋了,发现这个秘密的玩家最后感慨道:“
现在当我看到这个不规则闪烁的灯光,我就好奇还能在多少游戏中看到这个场景。”
原文连结:https://www.techbang.com/posts/88570-game-code-20years
=======
不知道为啥imgur上传档案一直出错 只好先用噗浪
“要是你的程式码还能用,就别去碰它。”<-身为一个工程师 我能告诉你这是真的
大多数工程师在写程式都会有一个习惯 会先建一个library 然后一直从里面拉function出来用
就像你有一张素材图 你会在好几个物件上面用它当材质 然后你可能会在别的物件上面放那个物件
你永远不知道这个老程式改了之后出错会有多少东西出问题
千万不要去碰旧程式 顶多改改最末端的东西 要改宁愿自己建新的备着用(ry