設計一種通過面部表情顯示棋子狀態(tài)的圍棋棋盤游戲系統(tǒng)
1. 介紹
1.1這是什么?
這是一個圍棋棋盤游戲系統(tǒng),我將其命名為“EmoGo / Emotional Go”。兩名棋手輪流在沒有電腦輔助的情況下放棋子。第一個玩家放黑色的石頭,第二個玩家放白色的石頭。每個圍棋棋子都會根據自己的狀態(tài)顯示面部表情,這樣就很容易評估整個游戲情況。即使是不熟悉圍棋規(guī)則的人也可以通過這些視覺線索輕松理解游戲。
圖1
我的靈感來自網頁游戲《SquishyGo》(圖2)。在《SquishyGo》中,你可以用鼠標在網頁瀏覽器上放置圍棋棋子。我覺得如果我們能觸摸圍棋棋子會更有趣,它們有面部表情,所以我做了這個。
圖2:游戲中的SquishyGo。(c) 2023 puyogo.app
1.2等等!Go是什么?
圍棋是一種基于地域的游戲。在職業(yè)圍棋中,獲勝者取決于被自己的棋子包圍的區(qū)域的大小,在沒有棋子的地方。然而,EmoGo遵循“純圍棋”的規(guī)則,即根據每個棋手在棋盤上的棋子數量來決定勝負。玩家只能放置石頭;一旦放置,它們就無法移動。兩名玩家最終會在棋盤上擁有相同數量的石頭。然而,如圖3所示,有特定的情況:如果圍棋棋子完全被對手的棋子或棋盤邊緣包圍,則必須將其移除。在EmoGo中,獲勝的關鍵是移除對手的棋子,同時確保自己的棋子留在棋盤上。
圖3:黑石將被移除。
1.3改變圍棋棋子的面部表情有什么效果?
當棋子被對手的棋子包圍時,它們會顯示出一張哭臉(圖4)。一張哭臉的棋子被稱為“死石”,必須從棋盤上移走。在傳統(tǒng)的圍棋游戲中,玩家經常會忘記移除死石,但在這個游戲棋盤系統(tǒng)中,如果你在移除所有哭臉圍棋石之前嘗試放置一個新的圍棋石,任何新放置的石頭也會顯示哭臉,游戲將無法進行。這確保了所有的“死石”被移除時不會出現任何錯誤。
圖4黑石帶哭臉表情
如果棋子在對手下一步棋時變成死石,那么它就會露出一副不安的表情(圖5)。如果你的棋子露出這種表情,那就意味著你有麻煩了。你必須決定是保存這些石頭還是放棄它們。在這個游戲棋盤系統(tǒng)中,圍棋棋子的表情表明了游戲狀態(tài)對你是有利還是不利。隨著你對圍棋越來越熟悉,你可以采取行動來防止你的圍棋棋子顯示出這種困惑的表情。換句話說,圍棋棋子上的表情幫助棋手理解圍棋規(guī)則,使他們能夠發(fā)展基本的戰(zhàn)術思維。
圖5黑石面帶困惑表情
2. 系統(tǒng)結構
系統(tǒng)總體結構如圖6所示。
圖6系統(tǒng)結構
每個模塊由以下幾個部分組成:
游戲控制器x1(圖7):該設備管理整個游戲。它通過CAN與圍棋棋盤模塊通信,檢測棋子的位置,并指示棋子上應該顯示哪些面部表情。
?樹莓派4 2GB
?樹莓派7英寸官方觸摸顯示屏
?WAVESHARE 2通道隔離CAN擴展帽樹莓派
圖7游戲控制器
棋盤模塊× 25(對于5x5棋盤)(圖8):圍棋棋盤上的每個網格都是一個模塊。當圍棋棋子被放置或敲擊時,它會通知游戲控制器,并根據游戲控制器的指示顯示圍棋棋子上的面部表情。
?Seeed Studio XIAO RP2040
?MCP2515 CAN控制器
?MCP2652 CAN驅動
圖8游戲板模塊
Go Stone x25(對于5x5的棋盤)(圖9):每顆棋子在放置或敲擊時通知其棋盤模塊,并根據從棋盤模塊收到的指令改變其面部表情。
?eeed Studio XIAO RP2040
?圓形顯示為種子工作室肖
圖9
3. 突出
這個項目集成了多種通用技術,而不是專注于一種特定的技術。在本文中,我將解釋這個系統(tǒng)的獨特之處。
3.1可伸縮性
這個系統(tǒng)最初是用5×5板創(chuàng)建的,但可以很容易地適應其他尺寸,如7×7, 9×9或6×8。所有Go板模塊都設計為連接到單個CAN總線,并且可以在總線電氣特性的允許范圍內添加。每個Go板模塊尺寸為50mm × 50mm,其母線和電源線使用引腳頭和引腳插座連接成菊花鏈,可以將多個模塊連接在一起。
輔助板用于連接Go板的上下兩端的母線和地,使模塊呈方形配置。電源也通過這些輔助板提供。連接在頂部和底部方向的輔助板將電源線分開,從而可以限制提供給Go板模塊的每個水平行的電流。一個帶有圍棋石的圍棋板模塊需要大約100mA的電流。在這種實現中,電源被分成三條線,每條線能夠處理高達1A。
3.2同步
我想要實現的一個關鍵功能是同步閃爍:當一個Go石頭被點擊時,所有連接的石頭(包括被點擊的那個)都會同時閃爍。由于每塊石頭都需要改變外觀或眨眼,所以它必須與游戲管理設備進行交流。挑戰(zhàn)在于如何有效地實現這種同步。
雖然無線通信可以廣播,但由于在展覽場地可能受到干擾,我沒有使用它。我考慮了幾種有線通信協(xié)議:SPI, I2C, RS485和CAN。由于廣播通信的限制,SPI和I2C被淘汰。雖然RS485支持與單板模塊的單獨和廣播通信,但它需要實現自定義協(xié)議。這個額外的處理可能會使RP2040負擔過重,從而可能導致同步問題。
最后,我選擇了CAN協(xié)議,因為它的控制器可以本地實現個人和廣播通信。這種選擇減少了RP2040上的處理負載,并將同步問題最小化。雖然為每個板模塊配備MCP2515 CAN控制器會增加當前的成本,但我們預計未來將通過用XIAO RA4M1取代XIAO RP2040來降低成本,這將消除對單獨CAN控制器的需求。
每個單板模塊根據其位置分配一個唯一的XY ID。使用此ID,通過以下CAN ID處理通信:
?0x4XY:游戲控制器發(fā)出指令,指示圍棋石改變面部表情或準備眨眼
?0x6XY:當圍棋棋子被放置、移除或敲擊時,從棋盤模塊發(fā)送給游戲控制器
?0x1FF:廣播到所有準備閃爍的石頭,觸發(fā)它們同時閃爍
例如,要使編號為0x12和0x14的石頭閃爍(如圖10所示),其過程如下:
?游戲控制器向編號為0x12和0x14的石頭發(fā)送0x02FF消息,使這些棋盤模塊進入閃爍狀態(tài)。
?然后游戲控制器廣播消息0x1FF03FF(開)和0x1FF0300(關)。只有處于blink-ready狀態(tài)的單板模塊(0x12和0x14)響應這些命令,其他模塊都忽略這些命令。這使得同步眨眼只是選定的圍棋石頭。
這種交流機制確保了眨眼的無縫發(fā)生,避免了玩家出現任何明顯的同步延遲。
圖10、閃爍信息
3.3熱插拔Go石
圍棋板模塊使用GPIO檢測圍棋石的存在。板模塊上的GPIO被拉起并通過中斷監(jiān)視變化。當GPIO狀態(tài)為HIGH時,表示沒有stone存在;當為LOW時,表示已經放置了一個石頭。
當引腳插座連接時,電源供應給Go石。然后,stone模塊初始化其顯示和其他必要的組件。初始化完成后,Go石將其GPIO設為LOW,向板模塊發(fā)出已放置石的信號。
當放置和移除圍棋時,可能會產生類似于抖音的瞬態(tài)噪聲。為了緩解這種情況,板模塊通過檢測高到低和低到高轉換來處理GPIO中斷。初始狀態(tài)改變后,系統(tǒng)等待500 ms,然后重新檢查GPIO狀態(tài),以確認石頭是否真正放置或移除。在此等待期間,任何GPIO更改都將被忽略。
這種方法確保了可靠和穩(wěn)定的檢測圍棋石附著和脫離。
3.4 Go Stone設計和銷頭
Go寶石是圓柱形的,在它們的底部有連接的銷頭。外殼的設計是為了保護用戶的手指不受別針的傷害。銷頭從中心偏移,防止放置時方向不正確。
引腳頭開口呈45度角,便于連接到電路板模塊(圖11)。這種設計允許界面自然對齊,因為石頭在放置過程中旋轉。當放置石頭時,引腳插座與板模塊平滑嚙合,在連接過程中產生石頭被輕輕“拉入”的感覺。
圖11圍棋的底部。
4. 討論
4.1物聯(lián)網的理想形態(tài)
物聯(lián)網未來的一個愿景是,環(huán)境變化被記錄在網絡中,物體會做出相應的反應。在這種情況下,即使是一個簡單的圍棋石頭也會成為網絡連接,能夠傳達其狀態(tài)并對變化做出反應。這個項目展示了“萬物相連的世界”的概念。
展覽參與者提出了與這一愿景一致的見解,表明將眾多日常物品納入物聯(lián)網可以為游戲和創(chuàng)意領域開辟新的可能性。
4.2物理交互
雖然很難量化,但展會參與者的反饋顯示了與網頁游戲的明顯差異。雖然游戲可以通過瀏覽器和鼠標玩,但處理物體的觸覺體驗提供了實時反饋,為游戲體驗增添了重要的維度。
目前,圍棋棋子的表情只會根據游戲狀態(tài)而變化。然而,如果系統(tǒng)能夠檢測到玩家如何處理石頭,并將這些互動反映在石頭的反應中,它便能夠提高玩家的粘性和情感聯(lián)系。這表明在物聯(lián)網支持的游戲體驗中,更深層的物理和情感融合是有希望的。
本文編譯自hackster.io