這個程序員瘋了,竟然用寫匯編游戲,狂賺3000萬美元!
誰是歷史上最厲害的游戲開發人員?
是瑞典程序員Markus Persson嗎?他開發了《我的世界》,以25億美元的價格賣給了微軟,成為了億萬富翁。
圖片
是美國程序員Eric Barone嗎?他一個人干了一個游戲團隊的活:策劃,設計,編程,測試、美工、音樂,開發了《星露谷物語》,賣了2000萬份。
圖片
是美國程序員John Carmack嗎?他開創了第一人稱射擊游戲,開發了《Doom》《Quake》等經典游戲,發明了眾多革命性技術,如“快速平方根算法”,卡馬克反轉,表面緩存等。
圖片
不,他們都不是,有史以來,最厲害的游戲開發者蘇格蘭程序員Chris Sawyer,他開發了《過山車大亨》。
圖片
為什么他這么厲害呢?
首先,他是一個獨立的開發者,和Eric Barone一樣,獨自一人開發了一個龐大復雜的游戲,在PC游戲時代,《過山車大亨》賣了1000萬份,能擊敗它的只有《模擬人生》。
其次,他使用匯編語言開發了《過山車大亨》,把電腦性能壓榨到了極致,游戲1999年發布,即使是當時性能最差的電腦,也能運行《過山車大亨》。
你沒看錯,這個游戲99%的代碼是用匯編寫的,只有少量的 C 代碼用于與 MS Windows 和 DirectX 交互。
很多同學都在應用層用高級編程語言寫業務邏輯,很難體會到用匯編寫游戲意味著什么。
一個簡單的hell world , 在Python就一句話 print("Hello World!)
但是在匯編中就變得復雜無比。
data segment
string db 'Hello,World!$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset string
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
你需要操作CPU的各種寄存器來設置參數,調用系統中斷來輸出。
直接和硬件打交道,極其底層,極其麻煩。
沒有對CPU和硬件的精深理解,根本寫不了。
匯編不僅難寫,更是難讀。這里沒有變量名輔助記憶,相比于高級語言,匯編代碼的復雜度可以說是呈指數級增長。
除非你要學習/編寫編譯器、操作系統、嵌入式代碼,否則,盡量不要去碰它。
和很多大牛一樣,Chris Sawyer從小就開始玩計算機,玩游戲,玩得不過癮就自己寫。
16歲就在Memotech MTX500上用Z80匯編寫游戲,并且主動把游戲郵寄給Memotech 公司進行發行,賺了點小錢。
高中畢業后,Chris上了格拉斯哥斯特拉斯克萊德大學,學的是計算機科學和微處理器。
80年代,PC時代正式開啟,MS-DOS一統天下,Chris在一家游戲公司做了很多把Amiga游戲移植到DOS平臺的工作,對底層編程,尤其是匯編建立了精深的理解。
用他自己的話來說:“我已經在 x86 匯編中編程了很長時間,我很少需要用手冊來查找東西。”
1994年,Chris受到《鐵路大亨》的啟發,開發了《運輸大亨》,大獲成功,版稅成為他源源不斷地收入來源。
Chris在歐洲和美國四處旅行時,迷上了過山車。
他去過數百個游樂園,玩了700多次過山車!
最瘋狂的時候,他甚至兩周時間參觀了美國14個主題公園,只是為了坐過山車。
正是由于對過山車的熱愛,他在制作《過山車大亨》時,考慮了各種各樣的細節,讓玩家身臨其境。
在游戲中,玩家需要扮演游樂園經營者角色,目標是從頭開始建造一個主題公園。
玩家需要改造土地,貸款獲取資金,修建游樂設施,建造各種過山車(從木頭到鋼制的),旋轉木馬、卡丁車、摩天輪、鬼屋、迷宮、電影院和各種驚險游樂設施。
還需要安排機械師來修理設施,清潔工來打掃衛生,保安來避免破壞,還需要安排藝人穿著夸張的服裝跳舞,為排長隊的人們提供娛樂,甚至整個公園的浴室也必須精心布置。
一切的目的都是讓客人滿意,樂在其中。
圖片
在實現技術上,Chris選擇了匯編,因為在1998年,電腦的性能還不夠高,《過山車大亨》需要成千上萬的游客在公園中游玩,多個過山車在不同的軌道行駛,不同的音樂和音效可以相互重疊播放,營造出一種喧囂的氛圍。
圖片
此時Java已經誕生,但是它主要用于服務器端編程,做這樣的游戲肯定是不行的。
C++應該可以,但是對Chris來說,匯編才是一個自己做出極致優化的編程語言。
2
在蘇格蘭的一個小村莊里,Chris開始了《過山車大亨》的開發。
他裝備了兩臺 PC:一臺快速的用于編碼,另一臺較慢的用于測試。
后來,游戲的要求是Intel Pentium 90Mhz 和至少 16 MB RAM。
他的辦公室還放著一臺點陣打印機、一臺傳真機、一本關于 x86 匯編代碼的袖珍指南,以及500 多頁的參考書,這對他來說已經足夠了。
由于使用匯編語言,Chris并沒有良好的IDE可以使用,微軟的Microsoft Macro Assembler (MASM)中自帶了一個編輯器,Chris就用它來編程。
圖片
《過山車大亨》是唯一一個用x86匯編寫的游戲嗎?
絕對不是,用匯編其實是90年代中期之前常見的做法,因為機器性能很差,沒有專用的GPU,用匯編來提高性能是常見的做法,比如《帝國時代》也使用了大量匯編。
圖片
但是,那些游戲都是由團隊完成的,只有《過山車大亨》,是Chris一個人用匯編一行行地碼出來的。
兩年的瘋狂編碼,用匯編對性能極致壓榨,《過山車大亨》于1999年上市發行。
《過山車大亨》遇上了好時候,1999年,大約四分之一的美國家庭連上了互聯網。
人們使用郵件,即時通訊工具,論壇等新興的互聯網工具來分享各自玩游戲的體驗。
品質過硬,速度飛快的《過山車大亨》以前所未有的速度吸引了一批狂熱的追求者。
僅僅在美國,1999年就賣了驚人的70萬份!
最終,Chris從《過山車大亨》等游戲中賺了3000萬美元。
真正的熱愛加上精湛的技術成就了《過山車大亨》的巨大成功。
他寫的游戲指南長達60多頁,經常引用現實中的過山車游樂園,他對游樂園的熱愛甚至體現在那些抱怨食物太貴和需要去洗手間的游客身上。
如果Chris對過山車不那么熱愛,雖然他也能做出過山車游戲,但是絕對無法給玩家帶來無與倫比的沉浸感,玩家也就不會自發傳播。
而使用匯編則帶來了最優異的性能,保證能在幾乎所有電腦上玩得飛起。
有意思的是,兩個游戲愛好者用C語言開發了一個《過山車大亨》的開源實現,修復了原有的一些問題,添加了一些多人游戲,高清支持,作弊代碼等功能,感興趣的同學可以去看看:https://openrct2.org/
如需轉載,請通過作者微信公眾號coderising獲取授權。