PTT推薦

[閒聊] 玩家發現了一條遊戲公司反覆使用了20年的

看板C_Chat標題[閒聊] 玩家發現了一條遊戲公司反覆使用了20年的作者
s7503228
(情報屋)
時間推噓87 推:88 噓:1 →:34

玩家發現了一條遊戲公司反覆使用了20年的「祖傳程式碼」,出現在多個遊戲場景中

原文連結:https://www.techbang.com/posts/88570-game-code-20years

https://images.plurk.com/1NW7VxMbwI0fEKpWha8Zc0.jpg

圖 玩家發現了一條遊戲公司反覆使用了20年的

有句老話說的好:「要是你的程式碼還能用,就別去碰它。」一條沿用了20多年的「祖傳程式碼」,讓V社(Valve Software)成了這句話最忠實的踐行者。

在Reddit論壇上,一名玩家最近偶然發現了《戰慄時空》系列裡的燈光閃爍頻率有種奇怪的既視感:

https://images.plurk.com/1rHTt62NSVQt3yhQAWpkrt.gif

圖 玩家發現了一條遊戲公司反覆使用了20年的

注意到了嗎?23年前的初代《戰慄時空》裡的燈光,居然和2020年誕生的《戰慄時空:艾莉克絲》有著同樣的閃爍頻率。

這名資深玩家立即意識到了事情的有趣之處,如果這不是什麼彩蛋(經過驗證後確實不是),那只能解釋為製作方的無心之舉,如果是無心之舉,那就意味著V社將一條放了20多年的程式碼搬到了新遊戲上。

之後,有人發現了更戲劇的內容:這串程式碼不僅歷史悠久,甚至還見證了V社的遊戲歷史。因為除了能在戰慄時空全系列中找到相同的燈光場景,在V社的另一個知名系列《傳送門》裡,也有不少類似景象。

這名玩家順藤摸瓜,最後找到了這個場景的源頭——1996年發售的經典FPS遊戲《雷神之鎚》。

https://images.plurk.com/5nrb5S064Y76xGiTp60ft3.gif

圖 玩家發現了一條遊戲公司反覆使用了20年的

玩家發現了一條遊戲公司反覆使用了20年的「祖傳程式碼」,出現在多個遊戲場景中

從左上角開始,依次是《雷神之鎚》《戰慄時空》《戰慄時空2》和《傳送門》,將四個場景放到一塊後,雖然發光的設備不同,但可以很明顯地看出它們維持著相同的閃爍頻率。

在仔細研究了戰慄時空已經開源的程式碼後,另一位玩家給出了相對合理的解釋。V社自初代《戰慄時空》誕生以來,一直使用26個字母來表示燈光的明暗程度,字母「a」代表完全熄滅,「Z」則表示最大亮度。

而在這些遊戲的源程式碼中,都能找到一條「mmamammmmmammamamaaamammma」的程式碼,註釋也正好是「燈光閃爍」:

https://images.plurk.com/1q8VzRl2sHiIMWBxcQms4G.jpg

圖 玩家發現了一條遊戲公司反覆使用了20年的

玩家發現了一條遊戲公司反覆使用了20年的「祖傳程式碼」,出現在多個遊戲場景中

所以在這20年的開發歷史中,凡是涉及到需要「燈光閃爍」的場景,V社基本就是從原先的程式碼資料庫中復製貼上,這才有了「祖傳程式碼」的說法,但真要細究,可能這段程式碼也不能算在V社的頭上。

最早出現這個場景的是《雷神之鎚》,這是id Software的創始人約翰·卡馬克利用同名引擎Quake製作的FPS遊戲,而隨後的初代《戰慄時空》也同樣基於該引擎的改良版開發而成。

https://images.plurk.com/3JH80LQlNsguAE6Q5958DQ.jpg

圖 玩家發現了一條遊戲公司反覆使用了20年的
▲ 初代《雷神之鎚》



當初編寫引擎的程序員隨手打下了一串負責場景的程式碼,之後便被V社原封不動照搬過去;並且即使到了《戰慄時空:艾莉克絲》,這個使用了不同引擎的遊戲時,一旦需要「燈光閃爍」,製作組還是會下意識地複製前作的程式碼。

於是一代傳一代,最終造就了一段「祖傳程式碼」,這也正好印證了編程領域的一句名言:永遠不要重複造輪子。

仔細想想,這也算是個製作組無意中留下的彩蛋了,發現這個秘密的玩家最後感慨道:「現在當我看到這個不規則閃爍的燈光,我就好奇還能在多少遊戲中看到這個場景。」

原文連結:https://www.techbang.com/posts/88570-game-code-20years

=======

不知道為啥imgur上傳檔案一直出錯 只好先用噗浪

「要是你的程式碼還能用,就別去碰它。」<-身為一個工程師 我能告訴你這是真的

大多數工程師在寫程式都會有一個習慣 會先建一個library 然後一直從裡面拉function出來用

就像你有一張素材圖 你會在好幾個物件上面用它當材質 然後你可能會在別的物件上面放那個物件

你永遠不知道這個老程式改了之後出錯會有多少東西出問題

千萬不要去碰舊程式 頂多改改最末端的東西 要改寧願自己建新的備著用(ry

--
https://i.imgur.com/cwNHMPB.png

圖 玩家發現了一條遊戲公司反覆使用了20年的
https://i.imgur.com/JsjWVt9.png
圖 玩家發現了一條遊戲公司反覆使用了20年的
https://i.imgur.com/E7YduYM.png
圖 玩家發現了一條遊戲公司反覆使用了20年的
https://i.imgur.com/FprCNk0.png
圖 玩家發現了一條遊戲公司反覆使用了20年的
https://i.imgur.com/SS2B6YF.png
圖 玩家發現了一條遊戲公司反覆使用了20年的
https://i.imgur.com/NwfCs6o.png
圖 玩家發現了一條遊戲公司反覆使用了20年的

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.132.75 (臺灣)
PTT 網址

WhoChaos07/23 12:47有趣

lordaelon07/23 12:47簽名檔優質

YuzanJhang07/23 12:47太酷了吧

DarkyIsCat07/23 12:47

vsepr5507/23 12:49這就是oop的奧義

wk41593707/23 12:49滿有趣的

bobby475507/23 12:49有趣

gn0221823607/23 12:49高重用性的最佳實作

a233443607/23 12:49這也沒甚麼必要改吧

none04907/23 12:50酷欸.jpg

lazarus112107/23 12:50就跟Lorem ipsum dolor sit amet一樣意思吧

lazarus112107/23 12:51業界總會有些經常拿來使用的東西

Ericz700007/23 12:51也才小東西而已 沒什麼好改的吧

ppgame07/23 12:52你這篇文也反覆使用

dannyshan07/23 12:52公司內部素材?

ga200622198507/23 12:52為什麼我看那GIF好像有音樂==

k96060807/23 12:52op了 你這也是祖傳反覆使用嗎

s750322807/23 12:53!? 原來有人發了嗎

s750322807/23 12:53哇靠真的耶

naya741596307/23 12:53能從燈光閃爍看出既視感也是滿厲害的

tym748207/23 12:54多一事不如少一事

jim92421107/23 12:54舊程式還真的是不要動,動了出其他問題更麻煩

iam071807/23 12:56想到魔獸包包

saiga1241607/23 12:56蜀漢老麵嘛wwwww

r8527060707/23 12:57#1W-LQKA1 (C_Chat)

RevanHsu07/23 12:57魔獸16格包就是動了風水大變 被山寨魔獸超越==

stomachache07/23 12:59這舊聞了吧

kaj198307/23 12:59魔獸包包怎麼了?XD

chrisjeremy07/23 12:59這是真的 別沒事妄想重構(血淚

lomorobin07/23 13:00記得COD系列最早的引擎也是從Quake改的 不知道有沒有

lomorobin07/23 13:00類似的發現

truegod00007/23 13:01代表當時寫得好 XD

haoboo07/23 13:01輪子不要重新發明本來就是程設的基本概念吧

noname91230107/23 13:02初代工程師寫到叫媽媽?

crazy634155607/23 13:04好酷ㄝ

NoLimination07/23 13:04魔獸原始16格包:後來版本可用包越來越大 有玩家問

NoLimination07/23 13:0416格包能加大或更換嗎? BZ一開始居然回:16格包寫

NoLimination07/23 13:04在包包系統最上面 貿然更動可能毀天滅地

Oskar07/23 13:05其實算是 致敬、彩蛋 ? XDDDD

inte629l07/23 13:05真的沒事不要重構公司的code 出事你要扛的

NoLimination07/23 13:06過了一段時間後說:其實研究後加大也沒很難

j02201507/23 13:07表示當年有神手

NoLimination07/23 13:07然後魔獸別種意義上的崩毀就是另一個故事了

kaj198307/23 13:08感謝回答,還有這種小故事XD

kinosband07/23 13:08有趣

NicoNeco07/23 13:12我也是先想到蜀漢老麵XDDD

CactusFlower07/23 13:12mmamammmmmammamamaaamammma

rofellosx07/23 13:12不是bug本來就別碰

cww791107/23 13:12滿好玩的

WindSucker07/23 13:14抓到抄襲

waitan07/23 13:16太環保了吧

lomorobin07/23 13:17其實Quake引擎是開源的

CowBaoGan07/23 13:19side effect是個很可怕的東西 沒事真的別亂改...

Giornno07/23 13:19能抄就抄,能沿用就沿用,真的不得已要改也只改一部分,

Giornno07/23 13:19才是工程師的生存之道

CowBaoGan07/23 13:19有需求我寧願自己寫新的

chihlee556607/23 13:20這段code比你資深

ocean1107/23 13:21傳家寶

bitcch07/23 13:21這還滿常見的 那段程式應該是包在共用模組內了

sunnydragon707/23 13:23是的,手癢去造新的只會讓自己陷入debug輪迴

aaaaajack07/23 13:23笑死,發現這個也太厲害

shampoopoo07/23 13:24祖傳程式碼 好可愛的稱呼XD

sunnydragon707/23 13:24沒事別亂碰去重構

iamnotgm07/23 13:25真的最早寫的和底層的code不要隨便去動 會出大事

dripcoffee07/23 13:27http://i.imgur.com/t7yVASk.jpg

圖 玩家發現了一條遊戲公司反覆使用了20年的

oldriver07/23 13:2916格包改版的當天就出bug了 真的是沒事不要動

jokerjuju07/23 13:30XDDD

aegius1r07/23 13:30V社: ...對! 這是彩蛋!

jerrys058007/23 13:30XDDD

newyellow07/23 13:33從今天起 這也變成一個彩蛋了!

hotrain1307/23 13:34oop優點啊

LYS556607/23 13:34不得不說這個閃動也很有靈性 不然就不會祖傳了

tetratio07/23 13:35滿有趣的

buke07/23 13:42這都是前人的血淚

FKL07/23 13:42不過我聽人這段程式碼其實有問題

FKL07/23 13:43https://bit.ly/3zmmAb2

FKL07/23 13:46https://bit.ly/3x0al2g

CaTkinGG07/23 13:51也許是太難改沒人想碰XD

ilohoo07/23 13:52可以跑的程式碼就是沒問題的程式碼,有問題的是規格問題

shec121307/23 13:53能動,就不要動

Vladivostok07/23 13:54暴雪就是改了十六格包後跌落谷底,不要不信邪。

onejoeluo07/23 14:100x5f3759df之後,又一個常數傳說

abc2275393907/23 14:23// 我也不知道這段在幹嘛 最好別動它

spfy07/23 14:26新人工程師最常犯的錯誤:我覺得這邊應該要改掉

arcanite07/23 14:28蜀漢老麵XDD

energyy110407/23 14:29這麼大的專案很容易改一小段就整組壞掉

rippleofmoon07/23 14:31Half life到底要不要出三了

lbowlbow07/23 14:32完全同意,老東西要嘛整個放棄要嘛死都不要改

snowcloud07/23 14:32沒測試,要refactor 老code 太危險,當然就盡量不要改

lomorobin07/23 14:33新人:這一行mmaamma是啥 老人:我是你就不會多問

Bencrie07/23 14:34你們的版控是裝飾品嗎 XD

kaj198307/23 14:37可以用幹嘛改?不能用的時候再說

HHH555JJJ07/23 14:43Legacy Code

MDay5607/23 14:45很酷 XDDDD

mirror022707/23 14:48俄羅斯也有一個當了20年的總統 還好啦

k79897686907/23 14:53工程師:PM叫我複製貼上就好

bobyhsu07/23 14:57到底有沒有人在看內文.. 這都能說因為太難?

s94281607/23 15:04System.out.println("Hello World!");

acpupu07/23 15:09mmamammmmmammamamaaamammma

butten98607/23 15:10發現的肯定是鐵粉

dargen7807/23 15:10我是不知道這難不難,但我聽過有遊戲刪了一張資料夾裡完

dargen7807/23 15:10全沒關聯的圖片就會完全啟動不了的

tobe010507/23 15:11名字都不用改呢

storyo1141307/23 15:11大驚小怪,除非要最佳化不然能跑的東西變error會哭

seatan07/23 15:22文組覺得不思議~不過閃燈QQ怕

xiaohua07/23 15:44imgur其實有大小跟時長限制

cn556607/23 15:51這就是legacy啊 只要不會出錯大家都會respect

cn556607/23 15:51誰敢在pull request上動這段保證被reject

JamesChen07/23 15:55稍微有點程式經驗的人都會這樣做事情。

age20007/23 16:07推個

chasegirl07/23 16:21Ptt都不知道反覆用幾年了

willson200007/23 16:44發現這件事的人太酷了

dk248624807/23 16:55OOP

broodkey07/23 18:06雖然說沒什麼好改的,但是能用20年還原封不動也是很有..

broodkey07/23 18:06.紀律

papple23g07/23 18:27how to make flash light. google.copy.paste

tt8otw07/23 18:51蠻有趣

tweence07/23 21:30

cheng3150707/23 21:37蠻好玩的

questionboy07/23 21:55可以過卡馬克那關 應該是夠厲害了

PigBlood07/24 03:38XDDDD

dixieland99907/24 11:35一堆人在挖HL的彩蛋,畢竟不知道V社到底藏了多少

yudofu07/25 00:57工程師結婚的時候送新娘的是他阿嬤給他的祖傳程式碼