微軟放棄的游戲被他們復(fù)活了:Windows經(jīng)典「三維彈球」現(xiàn)實版,CAD建模、Arduino編程、數(shù)控機床打造,硬核致敬童年
20年前,電腦還是大背頭的,「休閑小游戲」是屬于Windows的。紙牌、掃雷、空當(dāng)接龍……滿滿的一波回憶殺。四位小哥的這個項目,卻賦予了這款經(jīng)典之作新的生命。這個星球有趣的人可真多啊~
金磊 賈浩楠 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
20年前,電腦還是大背頭的,「休閑小游戲」是屬于Windows的。
紙牌、掃雷、空當(dāng)接龍……滿滿的一波回憶殺。
最近,來自美國肯尼索州立大學(xué)(KSU)的4位小哥,就親自動手用開源電子原型平臺Arduino,從零開始復(fù)現(xiàn)了另一款Windows經(jīng)典小游戲——三維彈球?(3D Pinball)。
從3D建模,到代碼編寫,再到最后的動手施工,他們用最專業(yè)的手段向童年致敬。
正如其中一位小哥說的:
建造這樣一個項目,是我的童年夢想。
不僅如此,他們還把整個過程做了個教程——只要9步,你也可以打造一臺屬于自己的三維彈球。
把「三維彈球」搬到現(xiàn)實中
我們先來回憶一波這款經(jīng)典的Windows小游戲。
開局,球會從右下角的管道被彈出,然后就會在桌面自由滾動,碰到不同的障礙物會拿到不同的分數(shù)。
只要保證它不從底部中間的縫隙掉出去就可以。
(滿滿的童年回憶啊……)
那么,KSU幾位小哥打造的「三維彈球」,長啥樣?
模型是這樣的:
實物長這樣:
桌面布局可以說是完美復(fù)現(xiàn)了小游戲中的場景——從管道的位置,到障礙物的布局,各種細節(jié)“惟妙惟肖”。
嗯,有內(nèi)味道了。
實際上手玩耍又是種什么體驗?
再來看下近距離視角。
簡直一摸一樣有木有!
然而這臺機器還有更厲害的地方——全自動、多球。
看完是不是也想擁有一臺呢?
別著急,KSU的4位小哥寫了份超詳細教程,手把手教你如何打造現(xiàn)實版「三維彈球」。
9步,手把手教你打造現(xiàn)實版「三維彈球」
彈球機的主要功能模塊包括追蹤得分系統(tǒng),多球彈珠機,還有自主啟動開關(guān)。上方有一個USB攝像頭,在自動運行模式下會持續(xù)地監(jiān)測彈球的位置,并根據(jù)球的位置指揮擊打器。
用到的工具和材料清單:
數(shù)控機床或激光切割機Dremel和砂紙烙鐵3D打印機Linux計算機USB攝像頭
大量的22/24 AWG線大量的熱縮線3/4英寸的膠合板(波羅的海樺木)一個電源降壓轉(zhuǎn)換器彈球組件(網(wǎng)上購買)
左右翻轉(zhuǎn)器組件2個翻轉(zhuǎn)式擊打器2個翻轉(zhuǎn)按鈕2個葉子開關(guān)保險杠總成2個彈弓組件至少6個星柱的彈弓至少2個2英寸的橡皮筋
發(fā)射器機制44號刺刀式燈場地中的障礙擲球器翻轉(zhuǎn)開關(guān)
Step 1:紙面設(shè)計和低成本試錯
設(shè)計中最可能出現(xiàn)的問題可能就是游戲機本身的尺寸限制和內(nèi)部結(jié)構(gòu)的安排,一些預(yù)想的彈球擊打方式實驗時才發(fā)現(xiàn)無法實現(xiàn),所以需要先畫出設(shè)計草圖,然后在此基礎(chǔ)上不斷改進。
團隊在確定最終的游戲場地設(shè)計之前,經(jīng)歷了多次設(shè)計的修改和優(yōu)化,每一次改進,都在便宜的膠合板上做一個模型來測試,一步步靠近最終的設(shè)計。
一些經(jīng)驗教訓(xùn):
進行模塊化設(shè)計,不同功能組件要能隨意放置和取消。不要自己設(shè)計滑輪,借鑒成熟的彈球游戲的場地設(shè)計,這樣能少走很多彎路。
Step 2:在SolidWorks上進行設(shè)計建模
彈球機的設(shè)計由兩個主要的子部分組成,運動場和支架。球場是標準尺寸——20.25 x42英寸2,由3/4英寸厚度的波羅的海樺木膠合板制成。
游戲場地包括一個由直徑為2英寸的亞克力管和3D打印的適配器組合而成的第二層。第二層有兩個主要功能。首先,第二層作為介質(zhì),將球從上層球場直接輸送到左翻板內(nèi)側(cè)。球下落位置的可預(yù)測性,使得第二層成為一個的通道,此通道便于多球運動,這是其第二大功能。
當(dāng)坡道和左內(nèi)線上的翻轉(zhuǎn)開關(guān)背對背地觸發(fā)時,舵機會釋放出兩個球,這些球會下滾到第二層上方的兩個管子中的一個,與坡道射出的球發(fā)生碰撞。因此,在多球模式下,這些管子將球會送入第二層,進入入左邊的內(nèi)管。
3/4英寸膠合板厚度的選擇是為了給工程提供足夠的剛性,并允許在承重接頭處有更大的緊固件嚙合。選用波羅的海樺木作材料,因為它的質(zhì)量高,雜質(zhì)少,屬于硬木,不易損壞,易于使用激光雕刻,一般來說,對于較重的木制結(jié)構(gòu)是首選。
支架是游戲場地的安裝裝置,并容納了定制的電子裝置。電子裝置直接固定在底板上,延伸的延伸到游戲面板底部。通過觀察窗可以看到電子裝置在支架的兩側(cè)。
此外,該支架還可以通過側(cè)面的可拆卸的插銷對球場進行間距調(diào)節(jié)。游戲臺傾斜角度范圍為0-8度,每兩度設(shè)置一個調(diào)節(jié)檔位。更高的球道坡度可以使游戲節(jié)奏更快,難度更高。
Step 3:用數(shù)控機床或激光雕刻制作主體
盡管你可以手工切削出游戲臺的整體結(jié)構(gòu),但這樣誤差交大,后續(xù)安裝連接多有不便,浪費材料。
這幾個美國小哥用一臺大型5軸數(shù)控機床進行銑削,最后再用木楔進行細節(jié)調(diào)整。
Step 4:電子器件和電源選擇
大多數(shù)彈球機的 “高壓 “在35V-48V的范圍,這取決于你買的電磁鐵的品牌,同時你要選擇一個能支持這種磁鐵線圈的電源。
其次,你需要考慮到 “低電壓 “的電源,用于給燈或其他較小的電器元件等東西供電。我們選擇的低電壓是6.3v的電壓,但這不一定是一成不變的。這要看你買的是什么LED,以及你是否用這個電源給其他的電器東西供電。一般6.3V應(yīng)該就可以滿足需要。
如果沒有低壓電源,那還需要一個降壓轉(zhuǎn)換器將高電壓(如48V)降到小元件的額定電壓。
此外,使用的元件的電阻大小,決定了電流大小。所以,電源總功率要視情況而定。
如果你的組件沒有達到正確的功耗額定值,這些元件在很短的時間內(nèi)產(chǎn)生很大的電流。
在這種情況下,單個擊打器內(nèi)部線圈可能會產(chǎn)生3-4安電流,兩個加起來8安培左右,會導(dǎo)致元件燒毀。
你應(yīng)當(dāng)計算出 “最壞的情況下 “的電流大小,然后給出一個合理的安全范圍,挑出一個對應(yīng)的電源。
Step 5:建立I/O接口電路
開關(guān)輸入部分:
開關(guān)輸入板負責(zé)將所有的值從游戲場地中讀入到Arduino。這個單獨的電路非常簡單,但需要對很多輸入進行放大處理。
因為Arduino有一個內(nèi)部的上拉電阻,所以你可以如上圖那樣接線。
這里最大的問題是要確保每個開關(guān)都有連接器,以防有一個開關(guān)因為某種原因單獨取出調(diào)試。
這個項目中使用了標準針腳連接,可以很容易地將所有的東西同時插入到Arduino中。
燈光控制部分:
電路由一個BJT晶體管(2n222222)、幾個電阻和LED組成。
晶體管作為一個數(shù)字 “開關(guān)”,可以打開或關(guān)閉,把它這個連接到前面提到的6.3v電源上,就得到了一個光源和單獨可尋址的LED。
不能直接將LED直接連接到Arduino上的原因是,Arduino無法提供多個LED要求的額定電流。
正確的辦法是把Arduino作為一個數(shù)字開關(guān),控制BJT。這樣就可以將LED的數(shù)量擴大到我們需要的數(shù)量。
電磁控制部分:
總體思路與LED板相同:從Arduino發(fā)送一個信號,能夠打開/關(guān)閉任何一個電磁鐵(翻板、彈弓、彈出式保險杠)。因為這些元件比LED功率更大,所以需要一些更大的晶體管:MOSFET。
電路元件清單:
1k電阻10k電阻330電阻IRF44V MOSFET1N4004 二極管47微法電容
電磁鐵需要連接到48V的電壓才會啟動。
因為電感不能瞬間改變電流,這就帶來了一個問題。工作時,線圈會通過很高電流,而關(guān)閉時,如果沒有一個地方分散電流,可能會破壞元件,非常危險。
這里使RC緩沖器電路和二極管來解決這個問題。要使它們覆蓋盡量多的電磁控制并聯(lián)支路。
擊打器和其他線圈的電路略有不同。這是因為,在彈球游戲中,玩家有時會按住按鈕,以保持擊打器長時間啟動。如果要用同樣的功率線圈,很快就會燒毀。
在此電路中的第二個線圈可以實現(xiàn)快速第一次翻轉(zhuǎn)。一旦翻轉(zhuǎn)完成,一個機械機構(gòu)會打開EOS開關(guān),迫使電流通過兩個線圈。
Step 6:組裝所有元件
根據(jù)你游戲場地的大小,焊接時間或長或短。這個項目花了大約兩天的時間焊接,并把所有器件安裝到位。
最終有5種連接器插到板子上:
高功率的螺線管電源與電磁鐵專用開關(guān)的連接與LED的連接與開關(guān)的連接一些輔助電源(5V、48V等)。
所有這些都插到了一個3D打印的連接板上,里面封裝了所有電路設(shè)備。當(dāng)需要開蓋檢測故障的時候,只需要拔掉5個大的連接器,然后把整個裝置舉起來。
Step 7:安裝Arduino軟件驅(qū)動
在這臺機器上,需要在與Arduino相連的計算機上安裝以下依賴項:
ROSrosserial_arduino ROS packageOpenCV (c++)TkinterApscheduler
整個軟件系統(tǒng)依靠ROS架構(gòu)作為后端來回傳遞消息。
四個主要節(jié)點在彈珠機運行在自主模式下時,進行異步通信,以控制彈珠機的流程。
這些節(jié)點分別是Input_Output.ino、track_metal.cpp、run_low_level.py和GUI.py。
當(dāng)不在自主模式下運行時,可以省略track_metal.cpp節(jié)點。
源代碼和詳細解釋在本項目的Github主頁放出。
Step 8:更改Pin、將代碼上傳到Arduino、更新USB攝像頭
如果你自己動手制作彈球機,并使用了本項目的源碼,要注意的是,你的Arduino的Pin需要更新兩處:Arduino/Input_Ouptut/Input_Ouptut.io,以及src/Classes/playfield.py。
此外還需要調(diào)整腳本,刪除對開關(guān)和LED的調(diào)用。
playfield.py會記錄有多少個項目,需要手動設(shè)置每個項目的Pin。
之后就可以將代碼上傳到Arduino中。此步驟必須安裝上一步中提到的rosserial_arduino,并正確設(shè)置Arduino IDE與ROS綁定。
最后,要做的是更新代碼中你自己使用的攝像頭名稱。只需在 src/Track/track_metal.cpp 中找到 “std::::string camera_metal.cpp “這一行:
“std::::string camera_string = “/dev/v4l/by-id/usb-046d_Logitech_Webcam_C930e_6D6BFE5E-video-index0”;”
將字符串更新為攝像機的名稱,可能是”/dev/v4l/by-id/“
所有步驟完成后,重新編譯才可以工作。
Step 9:玩起來吧!
如果一切正常,那么找到到 “啟動 “目錄,然后輸入 “roslaunch automatic_pinball_c.report
這行代碼啟動所有與彈球機相關(guān)的節(jié)點,包括GUI節(jié)點和跟蹤球的位置的節(jié)點。
此外,你可以使用’roslaunch manual_pinball.report’不運行任何自主部分,只體驗手動模式。
來自KSU畢業(yè)班的四位“造夢者”
那么,將童年回憶搬到現(xiàn)實的四位“造夢者”,都是何許人也?
Kevin Kamperman,今年畢業(yè)于KSU,目前正在佐治亞理工學(xué)院研究所實習(xí),從事無人機相關(guān)的研究。
春季畢業(yè)的時候,Kevin Kamperman還被KSU評為今年的“榮譽畢業(yè)生”。
Cody Meier,同樣也是今年畢業(yè)于KSU,主修的專業(yè)是機械電子、機器人和自動化工程。
Omar Salazar和上一位小哥是同專業(yè),也是主修機械電子、機器人和自動化工程。
他在采訪視頻中表示,這個項目加強了他在團隊合作方面的能力。
最后一位叫Tyler Gragg的小哥,可謂是“機器人制造”的狂熱愛好者,在個人介紹文字中,還特意寫道“Let’s Make Robots”,參與不少機器人項目。
Tyler也榮登了學(xué)校“光榮榜”。
嗯,是四位非常優(yōu)秀的“造夢者”了。
那些年,經(jīng)典的Windows小游戲
紙牌、掃雷、空當(dāng)接龍…….這些Windows經(jīng)典游戲至今仍然擁有眾多粉絲。
它們現(xiàn)在都何去何從了呢?
微軟如今把這些經(jīng)典游戲放在了WindowsStore中,然而「三維彈球」的就沒有那么幸運了。
其實,從Win7開始,微軟團隊將原先的軟件全部移植到64位系統(tǒng)中。
然而,「三維彈球」卻出現(xiàn)了嚴重bug,為了節(jié)省時間,微軟直接放棄了這個游戲。
但四位小哥的這個項目,卻賦予了這款經(jīng)典之作新的生命。
這個星球有趣的人可真多啊。
傳送門
現(xiàn)實版「三維彈球」項目地址:
https://www.instructables.com/id/Arduino-Pinball-Machine-That-Plays-Itself/
Github源代碼地址:
https://github.com/Tdoe4321/AutoPinball
通用彈球游戲設(shè)計制作教程:
https://howtobuildapinballmachine.wordpress.com
— 完 —
量子位 QbitAI · 頭條號簽約
關(guān)注我們,第一時間獲知前沿科技動態(tài)
- 具身智能洶涌,激光雷達爆單:頭部玩家600%年增長,出貨超20萬臺2025-08-08
- 智能座艙率先L3!AI Agent上車顛覆體驗,千里科技WAIC交卷2025-07-28
- 千里科技聯(lián)手階躍星辰、吉利發(fā)布下一代智能座艙Agent OS2025-07-26
- 老黃剛走,全球最強算力Robotaxi方案落地中國2025-07-24