微軟放棄的遊戲被他們復活了:Windows經典「三維彈球」現實版,CAD建模、Arduino編程、數控工具機打造,硬核致敬童年

2021-01-16 量子位
金磊 賈浩楠 發自 凹非寺
量子位 報導 | 公眾號 QbitAI

20年前,電腦還是大背頭的,「休閒小遊戲」是屬於Windows的。

紙牌、掃雷、空當接龍……滿滿的一波回憶殺。

最近,來自美國肯尼索州立大學(KSU)的4位小哥,就親自動手用開源電子原型平臺Arduino,從零開始復現了另一款Windows經典小遊戲——三維彈球 (3D Pinball)。

從3D建模,到代碼編寫,再到最後的動手施工,他們用最專業的手段向童年致敬。

正如其中一位小哥說的:

建造這樣一個項目,是我的童年夢想。

不僅如此,他們還把整個過程做了個教程——只要9步,你也可以打造一臺屬於自己的三維彈球。

把「三維彈球」搬到現實中

我們先來回憶一波這款經典的Windows小遊戲。

開局,球會從右下角的管道被彈出,然後就會在桌面自由滾動,碰到不同的障礙物會拿到不同的分數。

只要保證它不從底部中間的縫隙掉出去就可以。

(滿滿的童年回憶啊……)

那麼,KSU幾位小哥打造的「三維彈球」,長啥樣?

模型是這樣的:

實物長這樣:

桌面布局可以說是完美復現了小遊戲中的場景——從管道的位置,到障礙物的布局,各種細節「惟妙惟肖」。

嗯,有內味道了。

實際上手玩耍又是種什麼體驗?

再來看下近距離視角。

簡直一摸一樣有木有!

然而這臺機器還有更厲害的地方——全自動多球

看完是不是也想擁有一臺呢?

別著急,KSU的4位小哥寫了份超詳細教程,手把手教你如何打造現實版「三維彈球」。

9步,手把手教你打造現實版「三維彈球」

彈球機的主要功能模塊包括追蹤得分系統,多球彈珠機,還有自主啟動開關。上方有一個USB攝像頭,在自動運行模式下會持續地監測彈球的位置,並根據球的位置指揮擊打器。

用到的工具和材料清單:

數控工具機或雷射切割機
Dremel和砂紙
烙鐵
3D印表機
Linux計算機
USB攝像頭

大量的22/24 AWG線
大量的熱縮線
3/4英寸的膠合板(波羅的海樺木)
一個電源
降壓轉換器
彈球組件(網上購買)

左右翻轉器組件
2個翻轉式擊打器
2個翻轉按鈕
2個葉子開關
保險槓總成
2個彈弓組件
至少6個星柱的彈弓
至少2個2英寸的橡皮筋

發射器機制
44號刺刀式燈
場地中的障礙
擲球器
翻轉開關

Step 1:紙面設計和低成本試錯

設計中最可能出現的問題可能就是遊戲機本身的尺寸限制和內部結構的安排,一些預想的彈球擊打方式實驗時才發現無法實現,所以需要先畫出設計草圖,然後在此基礎上不斷改進。

團隊在確定最終的遊戲場地設計之前,經歷了多次設計的修改和優化,每一次改進,都在便宜的膠合板上做一個模型來測試,一步步靠近最終的設計。

一些經驗教訓:

進行模塊化設計,不同功能組件要能隨意放置和取消。
不要自己設計滑輪,借鑑成熟的彈球遊戲的場地設計,這樣能少走很多彎路。

Step 2:在SolidWorks上進行設計建模

彈球機的設計由兩個主要的子部分組成,運動場和支架。球場是標準尺寸——20.25 x42英寸2,由3/4英寸厚度的波羅的海樺木膠合板製成。

遊戲場地包括一個由直徑為2英寸的亞克力管和3D列印的適配器組合而成的第二層。第二層有兩個主要功能。首先,第二層作為介質,將球從上層球場直接輸送到左翻板內側。球下落位置的可預測性,使得第二層成為一個的通道,此通道便於多球運動,這是其第二大功能。

當坡道和左內線上的翻轉開關背對背地觸發時,舵機會釋放出兩個球,這些球會下滾到第二層上方的兩個管子中的一個,與坡道射出的球發生碰撞。因此,在多球模式下,這些管子將球會送入第二層,進入入左邊的內管。

3/4英寸膠合板厚度的選擇是為了給工程提供足夠的剛性,並允許在承重接頭處有更大的緊固件嚙合。選用波羅的海樺木作材料,因為它的質量高,雜質少,屬於硬木,不易損壞,易於使用雷射雕刻,一般來說,對於較重的木製結構是首選。

支架是遊戲場地的安裝裝置,並容納了定製的電子裝置。電子裝置直接固定在底板上,延伸的延伸到遊戲面板底部。通過觀察窗可以看到電子裝置在支架的兩側。

此外,該支架還可以通過側面的可拆卸的插銷對球場進行間距調節。遊戲臺傾斜角度範圍為0-8度,每兩度設置一個調節檔位。更高的球道坡度可以使遊戲節奏更快,難度更高。

Step 3:用數控工具機或雷射雕刻製作主體

儘管你可以手工切削出遊戲臺的整體結構,但這樣誤差交大,後續安裝連接多有不便,浪費材料。

這幾個美國小哥用一臺大型5軸數控工具機進行銑削,最後再用木楔進行細節調整。

Step 4:電子器件和電源選擇

大多數彈球機的 「高壓 「在35V-48V的範圍,這取決於你買的電磁鐵的品牌,同時你要選擇一個能支持這種磁鐵線圈的電源。

其次,你需要考慮到 「低電壓 「的電源,用於給燈或其他較小的電器元件等東西供電。我們選擇的低電壓是6.3v的電壓,但這不一定是一成不變的。這要看你買的是什麼LED,以及你是否用這個電源給其他的電器東西供電。一般6.3V應該就可以滿足需要。

如果沒有低壓電源,那還需要一個降壓轉換器將高電壓(如48V)降到小元件的額定電壓。

此外,使用的元件的電阻大小,決定了電流大小。所以,電源總功率要視情況而定。

如果你的組件沒有達到正確的功耗額定值,這些元件在很短的時間內產生很大的電流。

在這種情況下,單個擊打器內部線圈可能會產生3-4安電流,兩個加起來8安培左右,會導致元件燒毀。

你應當計算出 「最壞的情況下 「的電流大小,然後給出一個合理的安全範圍,挑出一個對應的電源。

Step 5:建立I/O接口電路

開關輸入部分:

開關輸入板負責將所有的值從遊戲場地中讀入到Arduino。這個單獨的電路非常簡單,但需要對很多輸入進行放大處理。

因為Arduino有一個內部的上拉電阻,所以你可以如上圖那樣接線。

這裡最大的問題是要確保每個開關都有連接器,以防有一個開關因為某種原因單獨取出調試。

這個項目中使用了標準針腳連接,可以很容易地將所有的東西同時插入到Arduino中。

燈光控制部分:

電路由一個BJT電晶體(2n222222)、幾個電阻和LED組成。

電晶體作為一個數字 「開關」,可以打開或關閉,把它這個連接到前面提到的6.3v電源上,就得到了一個光源和單獨可尋址的LED。

不能直接將LED直接連接到Arduino上的原因是,Arduino無法提供多個LED要求的額定電流。

正確的辦法是把Arduino作為一個數字開關,控制BJT。這樣就可以將LED的數量擴大到我們需要的數量。

電磁控制部分:

總體思路與LED板相同:從Arduino發送一個信號,能夠打開/關閉任何一個電磁鐵(翻板、彈弓、彈出式保險槓)。因為這些元件比LED功率更大,所以需要一些更大的電晶體:MOSFET。

電路元件清單:

1k電阻
10k電阻
330電阻
IRF44V MOSFET
1N4004 二極體
47微法電容

電磁鐵需要連接到48V的電壓才會啟動。

因為電感不能瞬間改變電流,這就帶來了一個問題。工作時,線圈會通過很高電流,而關閉時,如果沒有一個地方分散電流,可能會破壞元件,非常危險。

這裡使RC緩衝器電路和二極體來解決這個問題。要使它們覆蓋儘量多的電磁控制並聯支路。

擊打器和其他線圈的電路略有不同。這是因為,在彈球遊戲中,玩家有時會按住按鈕,以保持擊打器長時間啟動。如果要用同樣的功率線圈,很快就會燒毀。

在此電路中的第二個線圈可以實現快速第一次翻轉。一旦翻轉完成,一個機械機構會打開EOS開關,迫使電流通過兩個線圈。

Step 6:組裝所有元件

根據你遊戲場地的大小,焊接時間或長或短。這個項目花了大約兩天的時間焊接,並把所有器件安裝到位。

最終有5種連接器插到板子上:

高功率的螺線管電源
與電磁鐵專用開關的連接
與LED的連接
與開關的連接
一些輔助電源(5V、48V等)。

所有這些都插到了一個3D列印的連接板上,裡面封裝了所有電路設備。當需要開蓋檢測故障的時候,只需要拔掉5個大的連接器,然後把整個裝置舉起來。

Step 7:安裝Arduino軟體驅動

在這臺機器上,需要在與Arduino相連的計算機上安裝以下依賴項:

ROS
rosserial_arduino ROS package
OpenCV (c++)
Tkinter
Apscheduler

整個軟體系統依靠ROS架構作為後端來回傳遞消息。

四個主要節點在彈珠機運行在自主模式下時,進行異步通信,以控制彈珠機的流程。


這些節點分別是Input_Output.ino、track_metal.cpp、run_low_level.py和GUI.py。

當不在自主模式下運行時,可以省略track_metal.cpp節點。


原始碼和詳細解釋在本項目的Github主頁放出。

Step 8:更改Pin、將代碼上傳到Arduino、更新USB攝像頭

如果你自己動手製作彈球機,並使用了本項目的源碼,要注意的是,你的Arduino的Pin需要更新兩處:Arduino/Input_Ouptut/Input_Ouptut.io,以及src/Classes/playfield.py。

此外還需要調整腳本,刪除對開關和LED的調用。

playfield.py會記錄有多少個項目,需要手動設置每個項目的Pin。

之後就可以將代碼上傳到Arduino中。此步驟必須安裝上一步中提到的rosserial_arduino,並正確設置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

這行代碼啟動所有與彈球機相關的節點,包括GUI節點和跟蹤球的位置的節點。

此外,你可以使用』roslaunch manual_pinball.report』不運行任何自主部分,只體驗手動模式。

來自KSU畢業班的四位「造夢者」

那麼,將童年回憶搬到現實的四位「造夢者」,都是何許人也?

Kevin Kamperman,今年畢業於KSU,目前正在喬治亞理工學院研究所實習,從事無人機相關的研究。

春季畢業的時候,Kevin Kamperman還被KSU評為今年的「榮譽畢業生」。

Cody Meier,同樣也是今年畢業於KSU,主修的專業是機械電子、機器人和自動化工程。

Omar Salazar和上一位小哥是同專業,也是主修機械電子、機器人和自動化工程。

他在採訪視頻中表示,這個項目加強了他在團隊合作方面的能力。

最後一位叫Tyler Gragg的小哥,可謂是「機器人製造」的狂熱愛好者,在個人介紹文字中,還特意寫道「Let’s Make Robots」,參與不少機器人項目。

Tyler也榮登了學校「光榮榜」。

嗯,是四位非常優秀的「造夢者」了。

那些年,經典的Windows小遊戲

紙牌、掃雷、空當接龍…….這些Windows經典遊戲至今仍然擁有眾多粉絲。

它們現在都何去何從了呢?

微軟如今把這些經典遊戲放在了WindowsStore中,然而「三維彈球」的就沒有那麼幸運了。

其實,從Win7開始,微軟團隊將原先的軟體全部移植到64位系統中。

然而,「三維彈球」卻出現了嚴重bug,為了節省時間,微軟直接放棄了這個遊戲。

但四位小哥的這個項目,卻賦予了這款經典之作新的生命。

這個星球有趣的人可真多啊。

傳送門

現實版「三維彈球」項目地址:
https://www.instructables.com/id/Arduino-Pinball-Machine-That-Plays-Itself/

Github原始碼地址:
https://github.com/Tdoe4321/AutoPinball

通用彈球遊戲設計製作教程:
https://howtobuildapinballmachine.wordpress.com

作者系網易新聞·網易號「各有態度」籤約作者

在阿里體系內,OceanBase資料庫支撐了支付寶、網商銀行等重要業務,已成為世界領先的資料庫產品。那麼其背後有哪些核心技術?

7月2號第三期直播,螞蟻集團OceanBase資料庫資深專家--韓富晟(顏然)將介紹資料庫發展演進歷史,並深入解析OceanBase實現資料庫的機制。

掃碼報名,可加入直播交流群,還可獲取系列課程直播回放、分享PPT: 



相關焦點

  • 童年回憶WindowsXP經典遊戲《三維彈球》,如今的你多大了?
    在WindowsXP時代,幾乎所有使用者都打開過這樣一款內置程序《三維彈球》,現在看算是相當簡陋,但放在當時的計算機課上,那絕對屬於「賽博朋克」風格的次時代3A大作,這款遊戲看似簡單,但其中暗藏玄機,能玩懂並通關的人少之又少,並且多年後才發現Windows內置的《三維彈球》,只是一個試玩版
  • 三維CAD/CAM 軟體SINOVATION玩轉多軸編程,讓數控加工事半功倍
    製造企業在生產過中經常需要在產品零件或者模具零件上,加工斜面上的面、孔、槽、凸臺等,這種場景下,普通的三軸數控工具機就很難滿足加工需求,企業一般會選擇經濟實用的3+2形式的5軸數控工具機完成這項加工任務。要滿足這類零件特徵的數控編程,選擇一款好的CAM軟體,會讓數控加工產生事半功倍的效果。
  • 西安這所大學居然開設「彈球課」!童年遊戲也能打全國賽了!
    今天帶你見識見識西安體育學院的彈球課彈球、或稱為彈珠,是不少70後、80後、90初共同的兒時記憶。我小的時候彈球賊6,估計只輸掉了一盤跳棋。我們聯繫到中國地擲球國家隊教練、西安體育學院社體系教師索文濤老師,看看西安體育學院是如何教人重新認識彈球的~「最小球類運動,指尖的斯諾克」作為正式運動的指彈球,比賽的球桌約有斯諾克一半大。
  • 數控工具機的手動編程與自動編程有什麼區別?
    數控工具機的自動編程與手動編程區別在於:一、是否能夠減少人工提升效率。簡單來說,手動編程是專業的編程人員通過編程軟體對圖紙進行編程處理導出程式,拷貝到工具機然後加工,而自動編程是系統根據導入的圖紙自動進行編程,一鍵加工。相較而言,手動編程人工多效率低,自動編程高速高效人工少。二、是否能夠降低技術門檻。
  • 長安錦廈5軸編程學校廣州數控工具機編程教學
    長安錦廈5軸編程學校廣州數控工具機編程教學 卓越是專業做CNC數控編程,ug/proe產品設計,ug編程培訓,數控車床操作與培訓,四五軸編程培訓,是深圳市內1家頗具實力和實 戰性的專業培訓機構。
  • 「圖一樂」的彈球遊戲,竟然也有故事劇情
    在進入新千年之後,電腦開始在中國普及,Windows XP成為了中國一代遊戲玩家的啟蒙作業系統,而除了掃雷和紅心大戰等遊戲外,我們接觸的第一個電子彈球遊戲很有可能就是XP系統捆綁的遊戲:《三維彈球:太空軍校生》(3D Pinball: Space Cadet)。
  • 樓村模具數控培訓廣州數控工具機編程教學
    樓村模具數控培訓廣州數控工具機編程教學 學習Hypermill編程技術高薪就業,特別是CNC五軸編程方面高級技術人才出現了嚴重短缺,數控編程技術已成為就業市場上的需求。
  • 基於中望3D的漸開線齒輪三維CAD建模
    基於中望3D的漸開線齒輪三維CAD建模 2013年07月16日 12:19作者:廠商投稿編輯:李萬裡文章出處:泡泡網原創 本文將詳細介紹怎麼通過三維cad軟體快速解決以上問題。  本文以易學易用的中望3D為例,為讀者提供了齒輪的方程公式也可以自定義齒輪方程公式參數模板,給CAD設計師在設計齒輪時帶來了更高的效率。由於中望3D具有自帶的「邊學邊用」學習系統,因此非常適合三維CAD初學者使用。
  • 道滘數控編程教學試題數控工具機編程學習
    道滘數控編程教學試題數控工具機編程學習一方面,我們要先確定加工方法、順序、工藝,然後編寫程序、操作工具機進行加工。工藝的內容反映在程序中並通過程序來實現。某些工藝要素,如工具機、工裝等的變化,會直接影響程序的編制。另一方面,在考慮編程的方便性等因素時,也有可能修改工藝。因此,在課程教學過程中,要綜合應用工藝和編程兩方面的知識。
  • 你以為數控編程很簡單?有了它就能實現
    在機械加工這個行業,相信車床佔了很大的比重,相對於普通車床來說,數控車床有了更多的優點,於普通車床對比來說,數控車床中的編程使得加工精度更加準確,也省去了手動加工手動換刀等一系列的麻煩。所以數控編程就及其重要,好的程序決定工件是否合格。
  • 數控操機員,學UG編程需要多久?
    看著工廠的編程師傅坐辦公室吹著空調,打著遊戲,同時拿著高工資,還受老闆器重,成為工廠生產的棟梁柱。 這時就要去反思,為啥別人上班就編個程序如此輕鬆?因為別人有真技能,能替老闆解決實質性的問題,一普通的操機工,只會簡單的工具機操作,工作性質較簡單,全靠勞力解決問題,不願幹隨時招人替補上就行。
  • 數控工具機多少錢一臺_數控工具機價格表_數控工具機的選購技巧
    大力發展數控工具機產業不僅僅是我國實現工廠自動化的基礎,也是我國機械製造業技術改造的必由之路,更是發展高精尖技術產業的重要保證。我國在 「十一五」裝備製造業發展規劃綱要中已經明確提出: 國家要把以數控工具機為代表的基礎裝備作為重點發展的七大領域之首。隨著各種新技術的迅猛發展,數控工具機技術水平高低以及產量已成為衡量一個國家工業現代化發展水平的重要標誌。
  • 世界十大工具機數控系統生產企業
    基於強大的功能組件的支持,發格數控系統可裝備任何要求苛刻的工具機設備,可以為高端加工中心和高端車削中心提供完整的工控解決方案。對話式編程功能專門解決小批量工件編程問題、高速高精功能、納米級解析度控制可凸顯工具機的高技術含量、專用功能或特殊應用功能,如雷射切割工具機專用功能。
  • 模擬飛行遊戲「微軟模擬飛行」正式支持VR模式
    「微軟模擬飛行」發布1.12.13.0版本更新,該更新正式支持VR模式,並由此擴大了該作兼容VR頭顯的範圍。微軟曾在上個月宣布「微軟模擬飛行」包括12月更新內容在內的開發路線圖,並進一步闡述了該作相關開發細節,而Asobo則通過集成OpenXR技術與Alex Kipman及微軟MR團隊展開緊密合作並進行跨平臺開發。
  • 龍崗雙龍培訓學校數控編程_招UG編程學徒
    還在擔心哪有模具數控培訓機構,想了解模具數控培訓學費多少的朋友,還不趕緊行動起來?龍崗雙龍培訓學校數控編程_招UG編程學徒即可編寫零件加工程序。程序編制人員使用數控系統的程序指令,按照規定的程序格式,逐段編寫加工程序。程序編制人員應對數控工具機的功能、程序指令及代碼十分熟悉,才能編寫出正確的加工程序。①加工金屬的模具。②加工非金屬和粉末冶金的模具。
  • 上世紀經典「彈球遊戲」的網際網路復興之路
    備受尊敬的彈球製造商Stern目前生產著全球90%的彈球機,該公司也正在開發自己的連接系統,計劃於今年晚些時候發布,這可能會讓Scorbit在競爭中顯得非常弱勢。不管Scorbit和Stern的計劃最終能否實現,現在的競賽是看誰先把幾十年來一直在線下的愛好——彈球遊戲——帶入網際網路時代。
  • 寧波數控編程技能培訓實戰訓練
    寧波數控編程技能培訓實戰訓練,對於有一定基礎的或者剛從培訓學校出來的還不能適應工作崗位的學徒,在本公司「全程工廠浸泡式」學習下。寧波數控編程技能培訓實戰訓練, 雖然這些品種的產品尚不能製造,還需依賴進口。
  • 不需要編程的數控鑽攻銑工具機,操作就像玩俄羅斯方塊一樣簡單
    最近在網上發布了幾篇關於免編程數控工具機的文章,引起一波熱議。評論區有為我們國家技術發展之迅猛點讚加油的,也有持懷疑態度的。不管持什麼意見,能讓更多人知道免編程這個概念,意識到我們國家的工業自動化發展隊伍日益壯大,尤其是在數控工具機的工藝及質量方面與之前相比簡直天壤之別,在設備精度與穩定性方面日趨完善,總是一件好事。相信數控工具機貼上「中國製造」的字樣熱銷全球指日可待。如題,不需要編程就是不用編程,系統自動生成程式一鍵加工。
  • Switch版復古忍者遊戲「The Messenger」將於2018年8月30日發售
    Switch版復古忍者遊戲「The Messenger」將於2018年8月30日發售 2018-08-16 10:13  switch遊戲資訊
  • 基於中望3D的漸開線齒輪三維CAD建模教程
    本文將詳細介紹怎麼通過三維cad軟體快速解決以上問題。  本文以易學易用的中望3D為例,為讀者提供了齒輪的方程公式也可以自定義齒輪方程公式參數模板,給CAD設計師在設計齒輪時帶來了更高的效率。由於中望3D具有自帶的「邊學邊用」學習系統,因此非常適合三維CAD初學者使用。