您現在的位置是:首頁 > 遊戲
狂肝10個月手搓GPU,他們在我的世界中玩起我的世界,夢想成真
我的世界如何快速合成一組
夢晨 衡宇 蕭簫 發自 凹非寺
量子位 | 公眾號 QbitAI
自從有人在《我的世界》裡用紅石電路造出CPU,就流傳著一個梗:
總有一天,這幫紅石佬能在我的世界裡玩上我的世界。
這一天,真的來了!
先來看這臺“在無MOD純原版我的世界裡搭建的電腦”(簡稱“我的電腦”)。
擁有1Hz頻率的
CPU
、8KB
記憶體
、6KB視訊記憶體的
顯示卡
、加速模組,96x96畫素顯示器,以及一隻PS4手柄作為輸入裝置。
它執行起來是這樣的:
電腦有了,還缺的就是能跑在上面的遊戲程式碼。
大佬們先用一種叫URCL的中間語言手敲,再轉換成自制CPU能執行的彙編碼搞定。
就這樣,3個人肝了10個多月,終於實現史詩級套娃。
這個移植版《我的世界》,不但擁有遊戲的基本玩法如開放世界、方塊擺放,採礦,甚至連物品合成都有。
作者之一sammyuri把最終成果濃縮成一條3分鐘的影片,已經收穫近百萬播放量和10萬多贊。
一條高贊評論將其譽為“整個電子遊戲史上最偉大的壯舉”,只有足夠複雜的遊戲和足夠精通的玩家才能達成。
也有人表示“我失望於自己無法完全理解和欣賞這個作品,到底難度有多高,以及需要的工作量有多少。”
要理解這一切,還要從17個月前sammyuri造出的那塊CPU說起。
CPU顯示卡都自制
狂肝7個月,sammyuri在《我的世界》中
生造出一塊CPU
,初衷是為探索紅石電路的極限。
最終成果是一臺8位處理器,採用三個暫存器運算元的RISC架構,可以1Hz頻率執行,擁有256位元組RAM。
取名
CHUNGUS 2
,意為“計算用超巨大非傳統數字與圖形處理器”。
與此同時,他還開發了專用匯編器,可以把程式程式碼轉換成可以一鍵貼上到《我的世界》裡的磚塊結構。
sammyuri認為,CHUNGUS 2效能基本達到雅達利經典遊戲機Atari 2600水平,執行個貪吃蛇、俄羅斯方塊都不在話下。
手搓CPU的影片,一發到網上就爆火,播放量過百萬。
但他並不滿足於此,甚至(在讀者的鼓動下)萌生了無限套娃的想法——在《我的世界》中玩上《我的世界》。
不過,這聽起來實在是天方夜譚……
畢竟在現實中,《我的世界》遊戲最低配置要求也是
3Ghz CPU+4GB記憶體
,他這隻有1Hz CPU+256位元組記憶體的配置,怎麼帶得動?
這時候就需要藉助群體的智慧了(手動狗頭)。
Sammyuri找到Uwerta和StackDoubleFlow,三個人一起基於這個CPU,給計算機來了一次升級,其中2個人負責在遊戲中搭硬體,1個人負責寫程式碼。
這一升級就是10個月,最後竟然真的在《我的世界》中,用一塊
96×64畫素
的螢幕,玩起了一個
3D版
、復刻
16種方塊+32種物品
、還原
數十種遊戲機制
(挖掘、製作、燒製、搭建、箱子、隨機刻等)的《我的世界》!
沒錯,這還是個3D的《我的世界》,因此計算機中還配備了顯示卡(GPU),專門用來處理影象。
這隻GPU名叫“AMOGUS”(Absurdly Massive Operator on Graphics by Uwerta and Sammyuri,超巨大的圖形運算器,Uwerta和Sammyuri製造)。
△AMOGUS
首先,給這個GPU輸入物體在3D空間中的座標、以及紋理位置等資訊;隨後根據相機位置,切割出需要顯示的畫面(例如相機位於一棵草中間,它就只顯示相機前面的草,將相機後面看不見的草切掉);
接下來,將螢幕上的3D座標對映成2D座標,並將四邊形分割成3個梯形、進一步分割成畫素行、再分割成單個畫素,並進行線性插值來計算每個畫素對應的紋理位置(即紋理對映),以及它與相機的距離;
△(圖源Surfaced Studio)紋理對映原理,在AMOGUS中做了簡化
紋理對映是實現GPU處理3D影象的一個關鍵。用GPU處理3D影象時,需要將螢幕上的1個畫素與3D物體表面紋理上的某個位置對應起來,也就是紋理對映。
由於目標與相機的距離一直在變化,因此紋理對映佔用螢幕的畫素範圍也不一樣。
最後,從紋理快取中獲取畫素顏色,並將深度與螢幕當前畫素深度(儲存在6kb的畫素深度緩衝區)進行比較,如果更相近就進行覆蓋。
除了用GPU處理影象以外,這臺可以執行《我的世界》的計算機又是如何儲存遊戲資料、並與玩家進行互動的?
以充當
工作臺
的ROM為例,它儲存了各種鍛造和燒練的配方,當輸入一系列需要合成的物品(如一系列木頭)時,就會輸出一個結果(木塊),否則就輸出0。
用於儲存
世界地圖
的RAM由512×4位地址組成,一共256位元組,基於座標(x,y,z)定址。如果檢測到玩家超出邊界,就會返回0或255。
△世界地圖就存在這裡
輸入控制器
,則由一系列《我的世界》中的壓力板組成,踩到後就會將當前狀態傳送到佇列中,CPU就能讀取並處理。
△根據PS4手柄風格設計
當然,在《我的世界》中執行這臺計算機,必須經過加速(否則可能幾小時都計算不出一幀)。
於是他們便藉助MCHPRS伺服器,提升了一波紅石執行的速度,達到了
每秒0.1幀
的極限水平(doge)。
即便如此,我們看到的這段2分鐘影片,仍然花了大約9小時錄製,有種“天上一天,地下一年”的感覺。
據Sammyuri表示,目前他們正在進一步最佳化GUI(圖形使用者介面),下一步有可能製作一個獨立的、只執行紅石系統的版本,甚至實現在《我的世界》中執行《DOOM》的夢想。
細節上有多硬核?
其實在這之前,不少紅石佬們都想過用不同方法實現“在我的世界裡玩我的世界”。
但多少走了點“捷徑”,不算是用《我的世界》中的原生工具實現。
例如,透過
虛擬機器模組
,在《我的世界》使用各種部件組裝電腦,並當作虛擬機器執行,比如這個VM Computers mod:
還有透過Web displays的,也就是在《我的世界》中搞一個瀏覽器,再執行網頁版《我的世界》:
儘管sammyuri三人組的方案尚存不足,但相比起來,
不借助外部工具輔助
又多疊了一層硬核buff。
“無限套娃”許願成功!
當然,除了“工具全部現成”以外,這個0。2版本的《我的世界》,還有更多細節值得一看。
比如那個用1和0碼出的CPU儲存器——CHUNGUS 2,製程工藝達到了先進的1米(doge),頻率達到了1Hz。
它有一個4級指令管線化,64位元組的8路關聯資料快取,甚至分支預測,
符合RISC標準
。
而生造的
GPU
,又能成功執行,把捏出來的計算機裡的《我的世界》方塊,全部進行
3D渲染
。
再者,紅石線路本就具備數位電路的基本要求,只不過堆疊執行限制很大。
移植版《我的世界》玩兒起來,再次證實了《我的世界》的
圖靈完備
。
具備圖靈完備,意味著在不考慮實時運算的前提下, “在《我的世界》裡玩《我的世界》”,可以一直套娃。
狂肝10多個月可以套娃一次,要是狂肝20多個月,豈不是就能實現“在《我的世界》搭電腦玩《我的世界》,並在後者中再搭一個《我的世界》來玩”???
套娃人狂喜!
不過,考慮到《我的世界》邊界距離理論上是有限的,所以每一次模擬出的《我的世界》都會
更小
。
因此真·無限套娃,用這個辦法恐怕還是不行。
但,如果造出來的《我的世界》裡有了紅石電路,這並不妨礙新的一輪套娃又要開始了~
事實上,sammyuri在影片最後留了個彩蛋,“關注點讚我可能開始做我的世界中的我的世界中的我的世界”
他不會是認真的吧?不會吧?
GitHub地址:
https://github。com/sammyuri/minecraft
《3D版我的世界套娃》壓縮包:
https://www。mediafire。com/file/fbkuwo2aqg8gigj/3D+Minecraft+in+Minecraft。zip/file
參考連結:
[1]https://www。youtube。com/watch?v=-BP7DhHTU-I
[2]https://github。com/MCHPR/MCHPRS/blob/master/docs/Redpiler。md
[3]https://news。ycombinator。com/item?id=32901461
[4]https://www。youtube。com/watch?v=eiDrRa6JvQ0
— 完 —
量子位 QbitAI · 頭條號簽約
推薦文章
- 種子庫,守護全球生物多樣性(國際視點)
英國韋克赫斯特植物園內的千年種子庫是世界上最大的野生植物種子庫之一,目前儲存了來自100多個國家和地區的4萬多種植物、24億多粒種子,物種數佔世界種子植物的16%...
- 狗子欺負小牛犢,結果鏟屎官被母牛堵路,牛:你教子無方,負全責
母牛倒也是個有想法的,眼見狗子做壞事拒不認罪,竟然盯上了狗子的“家長”——當小姐姐想去上廁所時,發現母牛不知何時來到了鐵門裡,堵在路中間不讓她經過...
- 鐵鍋越洗越生鏽?老廚師支一招,撒把“它”,省得生鏽還粘鍋!
我們在生活中,每日3餐飯是肯定少不了的,廚房便成了我們經常需要用的地方,特別是廚房和廚房用具的衛生情況是非常的關鍵的,病從口入,就是說吃的方面不注意衛生就很容易影響家人的身體健康,所以我們在廚房的管理上需要仔細認真,其中最難清理的就是我們的...