磊 夢(mèng)晨 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
辛丑牛年(2021),《我的世界》,一高二學(xué)生因爆肝在B站火了。
他從未接觸過(guò)數(shù)電,一切從零開始,僅僅是為了搞清計(jì)算器的原理。
然后……然后……
就直接在《我的世界》里肝出了個(gè)“理論最快”四則計(jì)算器:
0.05s完成運(yùn)算!
這位ID為“史蒂夫的骨灰”的Up主,是從去年10月開始這個(gè)項(xiàng)目,由于在上高二,只有周末和放假才有時(shí)間推進(jìn)。
引得網(wǎng)友直呼:熟練地讓人心疼。
也有人回憶起讀過(guò)的《編碼》一書中的話——“這么多繼電器組合太大了,現(xiàn)實(shí)中做不到”,而后驚呼道:
好家伙,在《我的世界》直接夢(mèng)想成真了!
甚至連小鵬汽車都來(lái)湊熱鬧了:
快進(jìn)到在《我的世界》做出一臺(tái)智能汽車【狗頭】
接下來(lái),讓我們共同走進(jìn)這位高中生的爆肝之作。
先來(lái)看看計(jì)算器實(shí)際運(yùn)行效果:
視頻里說(shuō)的gt也就是“游戲刻”(GameTick),指理論上《我的世界》游戲程序更新一次數(shù)據(jù)的時(shí)間:0.05s。
這里可以看出,加減乘除四種運(yùn)算全在1游戲刻之內(nèi)得出結(jié)果!
就是為了實(shí)現(xiàn)這個(gè)速度,UP主骨灰君才把計(jì)算器體積做到這么大、結(jié)構(gòu)這么復(fù)雜。
過(guò)去在《我的世界》中用紅石電路做計(jì)算器,或多或少都需要一些運(yùn)算時(shí)間。
這是因?yàn)橛螒蛑袀鬏斝盘?hào)的元件會(huì)產(chǎn)生0.1秒的延時(shí)。
與整個(gè)游戲的運(yùn)行速度不同,紅石電路是把1秒分成10份,每份稱為1紅石刻,也就是0.1秒。
這樣無(wú)論怎么進(jìn)行優(yōu)化,都不能在小于1紅石刻的時(shí)間里完成運(yùn)算。
骨灰君采用另一個(gè)思路,用另一個(gè)元件活塞來(lái)實(shí)現(xiàn)電路。
活塞激活時(shí)的響應(yīng)是瞬間的,這樣就能讓紅石信號(hào)無(wú)延時(shí)地傳遞。
以這種方式傳遞信號(hào),整個(gè)電路的運(yùn)算時(shí)間,理論上限就是1游戲刻=0.05s了。
當(dāng)然,由于CPU性能的限制,在個(gè)人電腦上實(shí)際運(yùn)行時(shí)間會(huì)長(zhǎng)一些。骨灰自己的CPU需要6秒。
這么龐大的工程,到底是怎么做出來(lái)的?
說(shuō)到這個(gè)問(wèn)題,時(shí)間還得回溯到1年前。
當(dāng)時(shí)骨灰君的想法非常的簡(jiǎn)單,就是想用《我的世界》來(lái)研究一下計(jì)算器的原理。
所以就先設(shè)計(jì)了一個(gè)加法架構(gòu),一段時(shí)間之后,還搞出來(lái)了個(gè)乘法器。
當(dāng)時(shí)的他,其實(shí)沒有想過(guò)做完整的一個(gè)計(jì)算器,但后來(lái)覺得既然開始了,那就一步步研究吧。
而且將數(shù)電和械電結(jié)合,過(guò)程中可以說(shuō)是困難重重。
但骨灰君認(rèn)為:
想到可能很多人是看到我的工程動(dòng)態(tài)才留下的,我更應(yīng)該把這個(gè)工程做到底。
從動(dòng)態(tài)區(qū)中不難看出,骨灰君真的就是一步一個(gè)腳印,每突破一個(gè)困難就會(huì)記錄下來(lái)。
例如把二進(jìn)制轉(zhuǎn)為BCD碼的模塊就得搭700米長(zhǎng)的方塊,甚至超過(guò)了游戲的默認(rèn)顯示范圍。
BCD碼是用4位二進(jìn)制表示十進(jìn)制中的0-9,相當(dāng)于不把123當(dāng)成“一百二十三”,而是當(dāng)成“一二三”再分別用二進(jìn)制表示。
而后更是像在給粉絲們做“工作匯報(bào)”一樣:
進(jìn)度:XXX。
于是,就這么一點(diǎn)一滴像打地基一樣,計(jì)算器的各個(gè)部件就做好了。
到后來(lái),當(dāng)初教他數(shù)電基礎(chǔ)的網(wǎng)友反倒跟不上了。
最后的工作,用骨灰君的話就是“簡(jiǎn)單組裝一下”。
(講真,有被凡爾賽到,瞧瞧彈幕的反饋)
乘法模塊:
BCD轉(zhuǎn)binary:
Binary轉(zhuǎn)BCD(整數(shù)):
......
最后是顯示器+總控電路:
大功告成!
如此浩大的工程,出了bug怎么辦?
還別說(shuō),真有網(wǎng)友問(wèn)了這個(gè)問(wèn)題:
骨灰君也對(duì)此作出了回復(fù):
檢查一整天找出4個(gè)錯(cuò)誤方塊……
自但更多的網(wǎng)友還是“膜拜”于骨灰君之肝:
還有集成電路設(shè)計(jì)專業(yè)的來(lái)招人:
回到這個(gè)項(xiàng)目的初衷,其中一個(gè)讓骨灰君堅(jiān)持的理由,就是為了當(dāng)時(shí)近5000的粉絲。
而有網(wǎng)友認(rèn)為,Up主的工程,堪稱“50W粉的活”。
不過(guò)放眼現(xiàn)在,骨灰君的粉絲量已經(jīng)達(dá)到了1.4W!
恭喜,恭喜!
同時(shí)也期待骨灰君下一次的力作,不過(guò)要等到高考以后了~
— 完 —
量子位 QbitAI · 頭條號(hào)簽約
關(guān)注我們,第一時(shí)間獲知前沿科技動(dòng)態(tài)
《我的世界》中的紅石跟現(xiàn)實(shí)中的電一樣,搭配上機(jī)械裝置幾乎能完成你想到的任何工作,而在游戲中有這樣一群大神就使用紅石做到了即使是人也不一定能做好的事情,快來(lái)看看吧。
紅石畫畫
作者:flagman2405
雖然不知道是在干什么,但是我們可以看到在一個(gè)巨大的屏幕后面有一堆復(fù)雜的結(jié)構(gòu),難道這是一個(gè)大型的計(jì)算機(jī)?
而當(dāng)我們轉(zhuǎn)到正面的時(shí)候才發(fā)現(xiàn)原來(lái)屏幕后的紅石裝置可以推動(dòng)屏幕上的方塊,從而改變顏色,在“屏幕”上畫圖出來(lái),機(jī)械繪畫兩不誤,難道這就是傳說(shuō)中的文理雙修?
紅石計(jì)數(shù)器
作者:Hjaltedk
計(jì)數(shù)器在很多場(chǎng)合能用到,但是在《我的世界》里制作出一個(gè)可以不斷累積計(jì)數(shù)的表卻不那么容易。
在看似簡(jiǎn)單的表盤背后有著一連串的粘性活塞和紅石線路,在激活后就可以通過(guò)粘性活塞推動(dòng)石頭進(jìn)行計(jì)數(shù)了。
紅石
作者:Kure1
雖然上面的計(jì)數(shù)器看起來(lái)非常復(fù)雜,但是跟這個(gè)可以用的記分牌相比又是小巫見大巫了。
為了實(shí)現(xiàn)記分牌的實(shí)時(shí)計(jì)分,作者幾乎是使用紅石構(gòu)建了一個(gè)完整的電路體系,看上去跟現(xiàn)實(shí)中的線路板非常相似,說(shuō)實(shí)話小編甚至看不懂連接邏輯。
如果你還見過(guò)大神用紅石造出什么令人意想不到的裝置,歡迎在評(píng)論區(qū)留言分享哦。
文中部分圖片來(lái)自網(wǎng)絡(luò) 如涉侵權(quán)請(qǐng)聯(lián)系官方刪除
話少說(shuō)直奔主題
先說(shuō)說(shuō)紅石電梯的基本思路。
一般有兩種上升方式,直線上升和螺旋上升:
(圖一一開始站在最下面的活塞上,圖二站在金塊上,但要一半身子從左邊緣露出)
但這里有些問(wèn)題,就是從前活塞會(huì)穿過(guò)人的問(wèn)題,所以要在活塞前放上其他方塊,防止穿過(guò)。于是問(wèn)題接踵而來(lái),圖一中如果在中間四個(gè)活塞上放上方塊,那其上再放一層四個(gè)活塞的時(shí)候就會(huì)出現(xiàn)豎直空間不夠,生存模式下會(huì)產(chǎn)生窒息(不明白的自己搭一搭),圖二活塞橫向移動(dòng)時(shí)又不能帶動(dòng)方塊。
于是有了下圖的這種改進(jìn),利用活塞(前面放方塊的)可以把人推上樓梯。
原理及方法:
1.放上活塞:
2.在活塞上一格開口,以讓紅石線通過(guò):
3.讓這些活塞依次推動(dòng),每?jī)蓚€(gè)活塞中間
有一定延時(shí)(具體延多少依版本和個(gè)人電腦的運(yùn)算速度有所不同,大致應(yīng)該在0.2~0.6s之間),下圖中只能看清楚四分之一,但其他三個(gè)方向是一樣的:
最后還可以用玻璃或其他東西把通道圍上,就好看多了。還有最下面的啟動(dòng)按鈕。
就是這樣,祝大家游戲開心,萬(wàn)事順意。