自從有人在《我的世界》里用紅石電路造出 CPU,就流傳著一個(gè)梗:
總有一天,這幫紅石佬能在我的世界里玩上我的世界。
這一天,真的來了!
先來看這臺(tái) " 在無 MOD 純?cè)嫖业氖澜缋锎罱ǖ碾娔X "(簡(jiǎn)稱 " 我的電腦 ")。

擁有 1Hz 頻率的CPU、8KB內(nèi)存、6KB 顯存的顯卡、加速模塊,96x96 像素顯示器,以及一只 PS4 手柄作為輸入設(shè)備。
它運(yùn)行起來是這樣的:

電腦有了,還缺的就是能跑在上面的游戲代碼。
大佬們先用一種叫 URCL 的中間語言手敲,再轉(zhuǎn)換成自制 CPU 能運(yùn)行的匯編碼搞定。

就這樣,3 個(gè)人肝了 10 個(gè)多月,終于實(shí)現(xiàn)史詩級(jí)套娃。

這個(gè)移植版《我的世界》,不但擁有游戲的基本玩法如開放世界、方塊擺放,采礦,甚至連物品合成都有。

作者之一 sammyuri 把最終成果濃縮成一條 3 分鐘的視頻,已經(jīng)收獲近百萬播放量和 10 萬多贊。

一條高贊評(píng)論將其譽(yù)為 " 整個(gè)電子游戲史上最偉大的壯舉 ",只有足夠復(fù)雜的游戲和足夠精通的玩家才能達(dá)成。

也有人表示 " 我失望于自己無法完全理解和欣賞這個(gè)作品,到底難度有多高,以及需要的工作量有多少。"

要理解這一切,還要從 17 個(gè)月前 sammyuri 造出的那塊 CPU 說起。
CPU 顯卡都自制
狂肝 7 個(gè)月,sammyuri 在《我的世界》中生造出一塊 CPU,初衷是為探索紅石電路的極限。
最終成果是一臺(tái) 8 位處理器,采用三個(gè)寄存器操作數(shù)的 RISC 架構(gòu),可以 1Hz 頻率運(yùn)行,擁有 256 字節(jié) RAM。

取名CHUNGUS 2,意為 " 計(jì)算用超巨大非傳統(tǒng)數(shù)字與圖形處理器 "。

與此同時(shí),他還開發(fā)了專用匯編器,可以把程序代碼轉(zhuǎn)換成可以一鍵粘貼到《我的世界》里的磚塊結(jié)構(gòu)。

sammyuri 認(rèn)為,CHUNGUS 2 性能基本達(dá)到雅達(dá)利經(jīng)典游戲機(jī) Atari 2600 水平,運(yùn)行個(gè)貪吃蛇、俄羅斯方塊都不在話下。

手搓 CPU 的視頻,一發(fā)到網(wǎng)上就爆火,播放量過百萬。
但他并不滿足于此,甚至(在讀者的鼓動(dòng)下)萌生了無限套娃的想法——在《我的世界》中玩上《我的世界》。

不過,這聽起來實(shí)在是天方夜譚……
畢竟在現(xiàn)實(shí)中,《我的世界》游戲最低配置要求也是3Ghz CPU+4GB 內(nèi)存,他這只有 1Hz CPU+256 字節(jié)內(nèi)存的配置,怎么帶得動(dòng)?
這時(shí)候就需要借助群體的智慧了(手動(dòng)狗頭)。
Sammyuri 找到 Uwerta 和 StackDoubleFlow,三個(gè)人一起基于這個(gè) CPU,給計(jì)算機(jī)來了一次升級(jí),其中 2 個(gè)人負(fù)責(zé)在游戲中搭硬件,1 個(gè)人負(fù)責(zé)寫代碼。

這一升級(jí)就是 10 個(gè)月,最后竟然真的在《我的世界》中,用一塊96 × 64 像素的屏幕,玩起了一個(gè)3D 版、復(fù)刻16 種方塊 +32 種物品、還原數(shù)十種游戲機(jī)制(挖掘、制作、燒制、搭建、箱子、隨機(jī)刻等)的《我的世界》!
沒錯(cuò),這還是個(gè) 3D 的《我的世界》,因此計(jì)算機(jī)中還配備了顯卡(GPU),專門用來處理圖像。
這只 GPU 名叫 "AMOGUS"(Absurdly Massive Operator on Graphics by Uwerta and Sammyuri,超巨大的圖形運(yùn)算器,Uwerta 和 Sammyuri 制造)。

△AMOGUS
首先,給這個(gè) GPU 輸入物體在 3D 空間中的坐標(biāo)、以及紋理位置等信息;隨后根據(jù)相機(jī)位置,切割出需要顯示的畫面(例如相機(jī)位于一棵草中間,它就只顯示相機(jī)前面的草,將相機(jī)后面看不見的草切掉);
接下來,將屏幕上的 3D 坐標(biāo)映射成 2D 坐標(biāo),并將四邊形分割成 3 個(gè)梯形、進(jìn)一步分割成像素行、再分割成單個(gè)像素,并進(jìn)行線性插值來計(jì)算每個(gè)像素對(duì)應(yīng)的紋理位置(即紋理映射),以及它與相機(jī)的距離;

△(圖源 Surfaced Studio)紋理映射原理,在 AMOGUS 中做了簡(jiǎn)化
紋理映射是實(shí)現(xiàn) GPU 處理 3D 圖像的一個(gè)關(guān)鍵。用 GPU 處理 3D 圖像時(shí),需要將屏幕上的 1 個(gè)像素與 3D 物體表面紋理上的某個(gè)位置對(duì)應(yīng)起來,也就是紋理映射。
由于目標(biāo)與相機(jī)的距離一直在變化,因此紋理映射占用屏幕的像素范圍也不一樣。
最后,從紋理緩存中獲取像素顏色,并將深度與屏幕當(dāng)前像素深度(存儲(chǔ)在 6kb 的像素深度緩沖區(qū))進(jìn)行比較,如果更相近就進(jìn)行覆蓋。

除了用 GPU 處理圖像以外,這臺(tái)可以運(yùn)行《我的世界》的計(jì)算機(jī)又是如何存儲(chǔ)游戲數(shù)據(jù)、并與玩家進(jìn)行交互的?
以充當(dāng)工作臺(tái)的 ROM 為例,它存儲(chǔ)了各種鍛造和燒練的配方,當(dāng)輸入一系列需要合成的物品(如一系列木頭)時(shí),就會(huì)輸出一個(gè)結(jié)果(木塊),否則就輸出 0。

用于存儲(chǔ)世界地圖的 RAM 由 512 × 4 位地址組成,一共 256 字節(jié),基于坐標(biāo)(x,y,z)尋址。如果檢測(cè)到玩家超出邊界,就會(huì)返回 0 或 255。

△世界地圖就存在這里
輸入控制器,則由一系列《我的世界》中的壓力板組成,踩到后就會(huì)將當(dāng)前狀態(tài)發(fā)送到隊(duì)列中,CPU 就能讀取并處理。

△根據(jù) PS4 手柄風(fēng)格設(shè)計(jì)
當(dāng)然,在《我的世界》中運(yùn)行這臺(tái)計(jì)算機(jī),必須經(jīng)過加速(否則可能幾小時(shí)都計(jì)算不出一幀)。
于是他們便借助 MCHPRS 服務(wù)器,提升了一波紅石運(yùn)行的速度,達(dá)到了每秒 0.1 幀的極限水平(doge)。

即便如此,我們看到的這段 2 分鐘視頻,仍然花了大約 9 小時(shí)錄制,有種 " 天上一天,地下一年 " 的感覺。
據(jù) Sammyuri 表示,目前他們正在進(jìn)一步優(yōu)化 GUI(圖形用戶界面),下一步有可能制作一個(gè)獨(dú)立的、只運(yùn)行紅石系統(tǒng)的版本,甚至實(shí)現(xiàn)在《我的世界》中運(yùn)行《DOOM》的夢(mèng)想。
細(xì)節(jié)上有多硬核?
其實(shí)在這之前,不少紅石佬們都想過用不同方法實(shí)現(xiàn) " 在我的世界里玩我的世界 "。
但多少走了點(diǎn) " 捷徑 ",不算是用《我的世界》中的原生工具實(shí)現(xiàn)。
例如,通過虛擬機(jī)模組,在《我的世界》使用各種部件組裝電腦,并當(dāng)作虛擬機(jī)運(yùn)行,比如這個(gè) VM Computers mod:

還有通過 Web displays 的,也就是在《我的世界》中搞一個(gè)瀏覽器,再運(yùn)行網(wǎng)頁版《我的世界》:

盡管 sammyuri 三人組的方案尚存不足,但相比起來,不借助外部工具輔助又多疊了一層硬核 buff。
" 無限套娃 " 許愿成功!
當(dāng)然,除了 " 工具全部現(xiàn)成 " 以外,這個(gè) 0.2 版本的《我的世界》,還有更多細(xì)節(jié)值得一看。
比如那個(gè)用 1 和 0 碼出的 CPU 存儲(chǔ)器—— CHUNGUS 2,制程工藝達(dá)到了先進(jìn)的 1 米(doge),頻率達(dá)到了 1Hz。
它有一個(gè) 4 級(jí)指令管線化,64 字節(jié)的 8 路關(guān)聯(lián)數(shù)據(jù)緩存,甚至分支預(yù)測(cè),符合 RISC 標(biāo)準(zhǔn)。

而生造的GPU,又能成功運(yùn)行,把捏出來的計(jì)算機(jī)里的《我的世界》方塊,全部進(jìn)行3D 渲染。

再者,紅石線路本就具備數(shù)字電路的基本要求,只不過堆疊運(yùn)行限制很大。
移植版《我的世界》玩兒起來,再次證實(shí)了《我的世界》的圖靈完備。
具備圖靈完備,意味著在不考慮實(shí)時(shí)運(yùn)算的前提下, " 在《我的世界》里玩《我的世界》",可以一直套娃。
狂肝 10 多個(gè)月可以套娃一次,要是狂肝 20 多個(gè)月,豈不是就能實(shí)現(xiàn) " 在《我的世界》搭電腦玩《我的世界》,并在后者中再搭一個(gè)《我的世界》來玩 "???
套娃人狂喜!

不過,考慮到《我的世界》邊界距離理論上是有限的,所以每一次模擬出的《我的世界》都會(huì)更小。
因此真 · 無限套娃,用這個(gè)辦法恐怕還是不行。
但,如果造出來的《我的世界》里有了紅石電路,這并不妨礙新的一輪套娃又要開始了~
事實(shí)上,sammyuri 在視頻最后留了個(gè)彩蛋," 關(guān)注點(diǎn)贊我可能開始做我的世界中的我的世界中的我的世界 "

他不會(huì)是認(rèn)真的吧?不會(huì)吧?
原文地址:http://www.myzaker.com/article/63295602b15ec030fd4fbe8e
轉(zhuǎn)載請(qǐng)注明:狂肝10個(gè)月手搓GPU,他們?cè)凇段业氖澜纭防锿嫫稹段业氖澜纭罚W(wǎng)友:夢(mèng)想成真! | 快導(dǎo)航網(wǎng)