首頁 > 科技

「3D遊戲之父」考古「諾基亞時代」手遊,網友:求支援智慧手機!

2021-06-23 16:18:58

月石一 發自 凹非寺量子位 報道 | 公眾號 QbitAI

還記得它們嗎?

對00後們來說,也許有些陌生,但是80後、90後的遊戲玩家們,應該再熟悉不過了~

《毀滅戰士RPG》、《獸人與侏儒》1和2、《德軍總部RPG》等等……滿滿的回憶啊~

這些遊戲的開發者,最近發了幾條推特,其中提到,自己曾經開發了這幾款遊戲的「功能手機」版本

風輕雲淡說出這話的大神,就是被稱為「3D遊戲、FPS遊戲之父」的約翰·卡馬克(John Carmack),他也是遊戲公司id Software的創始人之一(FPS:第一人稱射擊)。

這段話直接在網上引發了一波回憶殺。

考古經典遊戲

事情的起因是這樣的,卡馬克的兒子想要玩《獸人與侏儒2》,而高通公司的BREW平臺上已經沒有模擬器和檔案了。

△2015年,約翰·卡馬克之子(圖源:大神的Twitter)

好在,J2ME(java移動)版本仍在流傳,可以進行模擬,於是大神父子倆開啟了一場「復古冒險」。

雖然,遊戲可以在KEmulator(在電腦上運行的java模擬器)上運行,但是音訊存在問題,而且在遊戲中死亡後就會掛起

好吧,我們是程式設計師,應該能修復它。

於是父子倆轉向了開源軟體freej2me,這次沒有發生掛起的問題,但是音訊卻更糟了,需要用補丁修復。

此外,卡馬克發現,儘管遊戲是為100MHz以內的移動CPU設計的,可模擬器卻佔用了大量CPU。

經過探索,最後他們通過Flight Recorder(記錄引擎)和JDK Mission Control(實時監控),發現根本原因在於:明確地呼叫垃圾收集(GC)。

因為在一些手機上,每一幀都必須呼叫system.GC(),以避免出現問題。

在128k的手機上和在多GB堆記憶體的桌上型電腦上,進行GC掃描是非常不同的,在現代計算機上,一個操作的速度要慢10倍以上。

怎麼辦?

雖然無法改變遊戲的原始碼,但是JVM有個很好用的參數:-XX:+DisableExplicitGC,可以禁止程式碼中顯示呼叫GC。

此外,卡馬克還分享了自己早年間的文章,感興趣的朋友可戳文末連結~

用C++寫CNN的卡馬克

大神約翰·卡馬克,何許人也?

出生於1970年的他,可是一位名校輟學、自學成才的典型。

他曾經對3D圖形技術作出了巨大貢獻,稱他是遊戲行業最具影響力的人也不為過。

△約翰·卡馬克(圖源:Wikipedia)

卡馬克與遊戲的淵源,當然不止Twitter中提到的這些。

1991年,由他和朋友共同創辦的id Software遊戲公司,開發了風靡全球的《德軍總部3D》,在很大程度上普及了FPS遊戲

△id Software的Logo(圖源:Wikipedia)

這款遊戲還使用了他獨創的3D引擎,而不久之後問世的《毀滅戰士》,再次席捲全球。

此外,他還用3D加速技術,為《雷神之錘》製作了特別版本,使遊戲畫面渲染速度更快、解析度更高。

1999年,卡馬克的公司推出了《雷神之錘III》,這是一款多人連線FPS遊戲,由id Tech3引擎製作,這款強大的引擎,直到6年後仍被許多遊戲採用。

並且,它還是首個要求顯示卡具備硬體加速能力的遊戲。

△雷神之錘III(圖源:Wikipedia)

2008年,《德軍總部RPG》推出,它是一款RPG(角色扮演遊戲),同時也是射擊類的探險遊戲。

不僅是電腦端,在2005年和2009年,id Software又分別推出了《毀滅戰士》1和2的RPG移動版。

除了遊戲開發之外,卡馬克還是開源運動的積極擁護者。

他在90年代陸續放出了《德軍總部3D》、《毀滅戰士》、《雷神之錘》等遊戲的原始碼,不少遊戲都是在它們的基礎上被製作出來的。

這位大神級別的程式設計師,你以為他只「玩」遊戲嗎?對於新興的人工智慧,他也沒落下。

只不過是以一種「電腦怪才」的方式,他用一週時間玩了一把「復古與現代的碰撞」——用C++寫了個CNN程式碼。

除此之外,卡馬克還是個火箭愛好者。埃隆·馬斯克還曾有意邀他合作,多年來兩人時常在社交媒體上互動。

網友集體懷舊

這場卡馬克父子倆的「復古大冒險」,引得網友直呼:really cool!

很好的故事! 和你的兒子一起回到過去,擺弄這種東西,一定非常酷 :)

我在手機上裝了J2ME Loader,玩當年在索尼愛立信W595上的遊戲,感覺非常爽 :)蠕蟲病毒、殭屍感染、模擬人生、魔魚等等…… 真是巨大的懷舊衝擊

我以為這只是懷舊,但實際上這些遊戲保持得很好,特別是考慮到平臺的侷限性!當然,與現在移動平臺上充斥著交易、廣告……的遊戲相比,它們真是一股清流。

一位曾經從事J2Me開發的網友表示:

對於諾基亞和索尼來說,應該是可以運行舊模擬器的。但是對於某些手機來說,比如三星、摩托羅拉,可能很難實現。

除了懷念遊戲之外,對於呼叫GC的問題,也有網友表示同感:

我遇到過這種情況,以前的開發者在C#應用中不斷呼叫GC。這些呼叫被清理後,效能有了巨大的提升。

不過也有人指出:

Java的GC其實很懶,其暫停(STW)與堆大小(heap size)呈現線性關係。禁用顯式GC會有一段時間的幫助,但一旦它滿了,最終會有一個非常長的暫停。

當然,提到經典遊戲《毀滅戰士 RPG》,不少網友都想在智慧手機上體驗一把,並且期待卡馬克能讓它實現。

還有人分享了《毀滅戰士》論壇中關於遊戲逆向工程的帖子,並且表示這個版本不會發生丟失。

一些網友認為,這些遊戲應該都能在Switch實現,還有人想在Switch上做一個BREW復古遊戲彙編,並且已經有一些J2ME和iMode了。

你期待再次玩上這些經典遊戲嗎?

參考連結:[1]https://twitter.com/id_aa_carmack[2]https://web.archive.org/web/20060502175605/http://www.armadilloaerospace.com:80/n.x/johnc/Recent%20Updates/[3]https://news.ycombinator.com/item?id=27220657[4]https://www.doomworld.com/forum/topic/117360-doom-rpg-reverse-engineering-project/[5]https://zh.wikipedia.org/wiki[6]https://www.facebook.com/

— 完 —


IT145.com E-mail:sddin#qq.com