玩家发现了一条游戏公司反复使用了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
作者: DarkyIsCat (黑肉猫娘赞) 2021-07-23 12:47:00
酷
作者:
vsepr55 (vsepr55)
2021-07-23 12:49:00这就是oop的奥义
作者: bobby4755 (苍郁之夜) 2021-07-23 12:49:00
有趣
作者: gn02218236 2021-07-23 12:49:00
高重用性的最佳实作
作者:
a2334436 (<lol>)
2021-07-23 12:49:00这也没什么必要改吧
作者: none049 (没有人) 2021-07-23 12:50:00
酷欸.jpg
就跟Lorem ipsum dolor sit amet一样意思吧业界总会有些经常拿来使用的东西
作者:
Ericz7000 (Ericz7000nolan)
2021-07-23 12:51:00也才小东西而已 没什么好改的吧
作者:
ppgame (虎紋蜜瓜)
2021-07-23 12:52:00你这篇文也反复使用
作者:
k960608 (雾羽‧浪沙)
2021-07-23 12:52:00op了 你这也是祖传反复使用吗
作者:
tym7482 (Max)
2021-07-23 12:54:00多一事不如少一事
作者:
iam0718 (999)
2021-07-23 12:56:00想到魔兽包包
作者:
RevanHsu (The Aquanaut)
2021-07-23 12:57:00魔兽16格包就是动了风水大变 被山寨魔兽超越==
记得COD系列最早的引擎也是从Quake改的 不知道有没有类似的发现
作者:
haoboo (萨伊克斯)
2021-07-23 13:01:00轮子不要重新发明本来就是程设的基本概念吧
作者: NoLimination (啊啊啊啊) 2021-07-23 13:04:00
魔兽原始16格包:后来版本可用包越来越大 有玩家问16格包能加大或更换吗? BZ一开始居然回:16格包写在包包系统最上面 贸然更动可能毁天灭地
作者:
Oskar (奥斯卡)
2021-07-23 13:05:00其实算是 致敬、彩蛋 ? XDDDD
作者: NoLimination (啊啊啊啊) 2021-07-23 13:06:00
过了一段时间后说:其实研究后加大也没很难
作者:
j022015 ( ˊ ﹀ˋ)
2021-07-23 13:07:00表示当年有神手
作者: NoLimination (啊啊啊啊) 2021-07-23 13:07:00
然后魔兽别种意义上的崩毁就是另一个故事了
作者:
NicoNeco ((゚д゚≡゚д゚))
2021-07-23 13:12:00我也是先想到蜀汉老面XDDD
mmamammmmmammamamaaamammma
作者: cww7911 2021-07-23 13:12:00
满好玩的
作者:
waitan (微糖儿>////<)
2021-07-23 13:16:00太环保了吧
side effect是个很可怕的东西 没事真的别乱改...
作者:
Giornno (乔鲁诺.乔三槐)
2021-07-23 13:19:00能抄就抄,能沿用就沿用,真的不得已要改也只改一部分,才是工程师的生存之道
作者:
ocean11 (深海)
2021-07-23 13:21:00传家宝
作者:
bitcch (必可取)
2021-07-23 13:21:00这还满常见的 那段程式应该是包在共用模组内了
作者:
iamnotgm (ä¼½è—之黑)
2021-07-23 13:25:00真的最早写的和底层的code不要随便去动 会出大事
作者:
oldriver (oldriver)
2021-07-23 13:29:0016格包改版的当天就出bug了 真的是没事不要动
作者:
newyellow (newyellow)
2021-07-23 13:33:00从今天起 这也变成一个彩蛋了!
作者:
hotrain13 (最幸é‹çš„人!!)
2021-07-23 13:34:00oop优点啊
作者:
LYS5566 (明灯❺❺❻❻)
2021-07-23 13:34:00不得不说这个闪动也很有灵性 不然就不会祖传了
作者:
buke (一坪的海岸线)
2021-07-23 13:42:00这都是前人的血泪
作者:
FKL (失眠)
2021-07-23 13:42:00作者:
ilohoo (ilohoo)
2021-07-23 13:52:00可以跑的程式码就是没问题的程式码,有问题的是规格问题
作者: shec1213 (旭爷) 2021-07-23 13:53:00
能动,就不要动
作者: abc22753939 (maple) 2021-07-23 14:23:00
// 我也不知道这段在干嘛 最好别动它
作者:
spfy (spfy)
2021-07-23 14:26:00新人工程师最常犯的错误:我觉得这边应该要改掉
作者:
arcanite (不问岁月任风歌)
2021-07-23 14:28:00蜀汉老面XDD
作者:
lbowlbow (沉睡的小猫)
2021-07-23 14:32:00完全同意,老东西要嘛整个放弃要嘛死都不要改
作者: snowcloud (雪) 2021-07-23 14:32:00
没测试,要refactor 老code 太危险,当然就尽量不要改
新人:这一行mmaamma是啥 老人:我是你就不会多问
作者:
MDay56 (他妈妈冲击波)
2021-07-23 14:45:00很酷 XDDDD
作者: k798976869 (kk) 2021-07-23 14:53:00
工程师:PM叫我复制贴上就好
作者:
bobyhsu (专业收费代洗文章)
2021-07-23 14:57:00到底有没有人在看内文.. 这都能说因为太难?
System.out.println("Hello World!");
作者:
acpupu (shabadibiduwabadiyeah)
2021-07-23 15:09:00mmamammmmmammamamaaamammma
我是不知道这难不难,但我听过有游戏删了一张资料夹里完全没关联的图片就会完全启动不了的
作者: tobe0105 (Kanaheei_) 2021-07-23 15:11:00
名字都不用改呢
作者: storyo11413 (小便) 2021-07-23 15:11:00
大惊小怪,除非要最佳化不然能跑的东西变error会哭
作者: seatan (小海炭) 2021-07-23 15:22:00
文组觉得不思议~不过闪灯QQ怕
作者:
xiaohua (大花)
2021-07-23 15:44:00imgur其实有大小跟时长限制
作者:
cn5566 (西恩)
2021-07-23 15:51:00这就是legacy啊 只要不会出错大家都会respect谁敢在pull request上动这段保证被reject
作者: age200 (Sleeping horse) 2021-07-23 16:07:00
推个
作者:
chasegirl (chasegirl)
2021-07-23 16:21:00Ptt都不知道反复用几年了
作者:
broodkey (broodkey)
2021-07-23 18:06:00虽然说没什么好改的,但是能用20年还原封不动也是很有...纪律