[閒聊] 玩家發現了一條遊戲公司反覆使用了20年的
玩家發現了一條遊戲公司反覆使用了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
--
https://i.imgur.com/cwNHMPB.png
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.132.75 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1627015561.A.AA8.html
推
07/23 12:47,
2年前
, 1F
07/23 12:47, 1F
推
07/23 12:47,
2年前
, 2F
07/23 12:47, 2F
推
07/23 12:47,
2年前
, 3F
07/23 12:47, 3F
推
07/23 12:47,
2年前
, 4F
07/23 12:47, 4F
推
07/23 12:49,
2年前
, 5F
07/23 12:49, 5F
推
07/23 12:49,
2年前
, 6F
07/23 12:49, 6F
推
07/23 12:49,
2年前
, 7F
07/23 12:49, 7F
推
07/23 12:49,
2年前
, 8F
07/23 12:49, 8F
→
07/23 12:49,
2年前
, 9F
07/23 12:49, 9F
推
07/23 12:50,
2年前
, 10F
07/23 12:50, 10F
→
07/23 12:50,
2年前
, 11F
07/23 12:50, 11F
→
07/23 12:51,
2年前
, 12F
07/23 12:51, 12F
推
07/23 12:51,
2年前
, 13F
07/23 12:51, 13F
推
07/23 12:52,
2年前
, 14F
07/23 12:52, 14F
推
07/23 12:52,
2年前
, 15F
07/23 12:52, 15F
→
07/23 12:52,
2年前
, 16F
07/23 12:52, 16F
→
07/23 12:52,
2年前
, 17F
07/23 12:52, 17F
→
07/23 12:53,
2年前
, 18F
07/23 12:53, 18F
→
07/23 12:53,
2年前
, 19F
07/23 12:53, 19F
推
07/23 12:53,
2年前
, 20F
07/23 12:53, 20F
推
07/23 12:54,
2年前
, 21F
07/23 12:54, 21F
→
07/23 12:54,
2年前
, 22F
07/23 12:54, 22F
推
07/23 12:56,
2年前
, 23F
07/23 12:56, 23F
推
07/23 12:56,
2年前
, 24F
07/23 12:56, 24F
→
07/23 12:57,
2年前
, 25F
07/23 12:57, 25F
→
07/23 12:57,
2年前
, 26F
07/23 12:57, 26F
→
07/23 12:59,
2年前
, 27F
07/23 12:59, 27F
推
07/23 12:59,
2年前
, 28F
07/23 12:59, 28F
推
07/23 12:59,
2年前
, 29F
07/23 12:59, 29F
→
07/23 13:00,
2年前
, 30F
07/23 13:00, 30F
→
07/23 13:00,
2年前
, 31F
07/23 13:00, 31F
推
07/23 13:01,
2年前
, 32F
07/23 13:01, 32F
推
07/23 13:01,
2年前
, 33F
07/23 13:01, 33F
推
07/23 13:02,
2年前
, 34F
07/23 13:02, 34F
推
07/23 13:04,
2年前
, 35F
07/23 13:04, 35F
推
07/23 13:04,
2年前
, 36F
07/23 13:04, 36F
→
07/23 13:04,
2年前
, 37F
07/23 13:04, 37F
→
07/23 13:04,
2年前
, 38F
07/23 13:04, 38F
推
07/23 13:05,
2年前
, 39F
07/23 13:05, 39F
還有 44 則推文
→
07/23 14:26,
2年前
, 84F
07/23 14:26, 84F
→
07/23 14:28,
2年前
, 85F
07/23 14:28, 85F
推
07/23 14:29,
2年前
, 86F
07/23 14:29, 86F
推
07/23 14:31,
2年前
, 87F
07/23 14:31, 87F
→
07/23 14:32,
2年前
, 88F
07/23 14:32, 88F
推
07/23 14:32,
2年前
, 89F
07/23 14:32, 89F
→
07/23 14:33,
2年前
, 90F
07/23 14:33, 90F
推
07/23 14:34,
2年前
, 91F
07/23 14:34, 91F
推
07/23 14:37,
2年前
, 92F
07/23 14:37, 92F
推
07/23 14:43,
2年前
, 93F
07/23 14:43, 93F
推
07/23 14:45,
2年前
, 94F
07/23 14:45, 94F
推
07/23 14:48,
2年前
, 95F
07/23 14:48, 95F
推
07/23 14:53,
2年前
, 96F
07/23 14:53, 96F
推
07/23 14:57,
2年前
, 97F
07/23 14:57, 97F
噓
07/23 15:04,
2年前
, 98F
07/23 15:04, 98F
推
07/23 15:09,
2年前
, 99F
07/23 15:09, 99F
推
07/23 15:10,
2年前
, 100F
07/23 15:10, 100F
推
07/23 15:10,
2年前
, 101F
07/23 15:10, 101F
→
07/23 15:10,
2年前
, 102F
07/23 15:10, 102F
推
07/23 15:11,
2年前
, 103F
07/23 15:11, 103F
推
07/23 15:11,
2年前
, 104F
07/23 15:11, 104F
推
07/23 15:22,
2年前
, 105F
07/23 15:22, 105F
推
07/23 15:44,
2年前
, 106F
07/23 15:44, 106F
推
07/23 15:51,
2年前
, 107F
07/23 15:51, 107F
→
07/23 15:51,
2年前
, 108F
07/23 15:51, 108F
→
07/23 15:55,
2年前
, 109F
07/23 15:55, 109F
推
07/23 16:07,
2年前
, 110F
07/23 16:07, 110F
推
07/23 16:21,
2年前
, 111F
07/23 16:21, 111F
推
07/23 16:44,
2年前
, 112F
07/23 16:44, 112F
推
07/23 16:55,
2年前
, 113F
07/23 16:55, 113F
推
07/23 18:06,
2年前
, 114F
07/23 18:06, 114F
→
07/23 18:06,
2年前
, 115F
07/23 18:06, 115F
推
07/23 18:27,
2年前
, 116F
07/23 18:27, 116F
推
07/23 18:51,
2年前
, 117F
07/23 18:51, 117F
推
07/23 21:30,
2年前
, 118F
07/23 21:30, 118F
推
07/23 21:37,
2年前
, 119F
07/23 21:37, 119F
推
07/23 21:55,
2年前
, 120F
07/23 21:55, 120F
推
07/24 03:38,
2年前
, 121F
07/24 03:38, 121F
→
07/24 11:35,
2年前
, 122F
07/24 11:35, 122F
推
07/25 00:57,
2年前
, 123F
07/25 00:57, 123F