謝作如 陸雅楠
利用編程軟件和開源硬件制作的人機互動游戲案例已經越來越多,但是多人互動的游戲卻很少見,因為這需要網絡的支持。掌控板是一款使用物聯(lián)網芯片開發(fā)的開源硬件,具備了連接網絡的功能,如何運用類似掌控板之類能夠聯(lián)網的開源硬件,設計可以多人互動的游戲,成為我們研究的新方向。
賽龍舟是我國的一個重要習俗,是一項典型的集體競賽活動。將這項活動搬入室內,甚至是搬入課堂,以一種全新的形式呈現(xiàn)出來,肯定挺好玩。掌控板自帶了加速度傳感器,可以感知“劃槳”的動作,再結合物聯(lián)網技術,將大家的動作統(tǒng)一呈現(xiàn)在一個屏幕上,為“賽龍舟”的游戲設計提供了技術上的保障。
物聯(lián)網(Internet of Things,簡稱IoT)是借助互聯(lián)網、傳統(tǒng)電信網等信息承載體,讓所有能行使獨立功能的普通物體實現(xiàn)互聯(lián)互通的網絡。MQTT是常見的物聯(lián)網通信協(xié)議,采用主題(TopicID)來實時發(fā)送和接收(訂閱)消息,使用起來非常簡單(如圖1)。
掌控板支持MQTT協(xié)議。本游戲案例為人手一塊掌控板,設置掌控板連接Wi-Fi,然后利用掌控板的加速度傳感器感知晃動幅度,即劃槳的動作,接著上傳到MQTT服務器。Mind+軟件也連接MQTT服務器,訂閱物聯(lián)網信息,再用不同的龍舟角色呈現(xiàn)不同掌控板的前進速度,就完成了這一互動游戲。系統(tǒng)運行流程如圖2所示。
1.Mind+
Mind+是開源硬件企業(yè)DFRobot推出的IDE工具。其支持兩種編程模式,一是實時交互模式,二是離線下載模式。實時交互模式類似普通的Scratch程序,離線下載模式則是指給Arduino、掌控板寫程序。Mind+可以直接訪問MQTT服務器,和其他接入MQTT服務器的智能硬件進行交互?;贛ind+的MQTT簡單調試如圖3所示。
2.掌控板
一個游戲用戶需要一塊掌控板。根據賽龍舟的活動特點,制作一個船槳,將掌控板安裝到船槳上采集真實的“劃槳”數(shù)據。注意,掌控板要加電源。圖4中的掌控板加了帶電源的擴展板。
3.SIoT服務器
SIoT是一個跨平臺的標準MQTT服務器,不需要經過復雜的配置,一鍵啟動即可使用。SIoT也是一款開源軟件,是“虛谷物聯(lián)”項目的核心軟件,根據操作系統(tǒng)下載相應的版本即可。
1.物聯(lián)網環(huán)境準備
雙擊運行與系統(tǒng)匹配的SIoT運行文件,屏幕會彈出一個黑色的CMD窗口(如圖5),確保在配置中此窗口不關閉。
運行Mind+軟件,并在拓展中選擇“網絡服務”并添加“MQTT”,如圖6所示。
2.掌控板代碼
掌控板的代碼使用Mind+的“下載模式”編寫,參考代碼如下頁圖7所示。首先,掌控板設備與服務器建立連接,在服務器上能夠實時反饋數(shù)據。其次,設置變量g1與g2,分別代表玩家一次劃槳的前后加速度(可通過讀取一次劃槳前后槳上掌控板不同位置的加速度獲取),從而計算槳的晃動幅度,然后上傳到MQTT服務器。
“MQTT初始化參數(shù)”設置:服務器地址設置為SIoT服務器的IP地址,TopicID(主題)設置為“項目ID/名稱”(如下頁圖8)。不同的掌控板設置不同的TopicID,如“l(fā)ongzhou/0”“l(fā)ongzhou/1”“l(fā)ongzhou
/2”分別代表三塊掌控板。
3.Mind+代碼
Mind+的代碼在“實時模式”下編寫,需要設置一個河水的背景,然后添加龍舟角色,根據掌控板的數(shù)量添加多個角色,龍舟角色的參考代碼如下頁圖9所示。同樣在“MQTT初始化參數(shù)”中設置“l(fā)ongzhou/0”“l(fā)ongzhou/1”“l(fā)ongzhou/2”這三個TopicID。
通過不同玩家控制的掌控板傳來的順序,一一對應到各自的角色(龍舟)上,不同晃動幅度龍舟的前進速度不同。
每名玩家手持裝有掌控板的船槳一柄,每名玩家代表一條龍舟。當掌控板出現(xiàn)數(shù)值就表示連接MQTT服務器成功,就可以開始游戲了。Mind+軟件會準確計算出每名玩家的劃槳幅度并將其呈現(xiàn)在龍舟的前進速度中,最終玩家們根據龍舟觸邊先后決出勝負。其測試效果如圖10、圖11所示。
通過實踐,筆者認為這款游戲還可以繼續(xù)改進,如:①可以通過添加音效使得游戲更加真實,玩家體驗感更好;②在背景畫面上可以添加動圖效果,制作出龍舟比賽時水流的特效;③可以思考設計團隊模式游戲,三人一組劃一條龍舟進行競賽。
結合SIoT和掌控板,可以設計更多有意思的多人互動游戲,也可以設計一些真實的應用,如網絡投票。在一些集體活動中玩這樣的互動游戲,不僅有趣,還能夠培養(yǎng)學生的集體意識。希望本案例能拋磚引玉,有更多的教師帶領學生做類似的研究。