上一篇我們揭曉了控制MLGame 遊戲程式運作流程的第三支程式和AI和遊戲間的關係,並把MLGame框架的整個概念做一個統整,還沒看過的朋友,一定要來看看上一篇的「總結MLGame框架下的三個程式」! 【統整】MLGame 遊戲程式運作流程。
這次我們要來講,上次在最後提到的MLGame框架下三個程式——mlgame、PaiaGame、MLPlay,它們之間是如何分工合作,成為一個個用程式寫給AI玩的遊戲。
時序圖
延伸學習:
- 學習時序圖關鍵字: 時序圖、循序圖 @wiki 或 SequenceDiagram @wiki
- 繪製軟體: 免費開源的各式工程圖繪製軟體 @draw.io
- 教學影片: 只會用 Office 畫流程圖?許多人試用過這個後直呼回不去了 ? | Draw.io 教學 @PAPAYA 電腦教室
遊戲初始化:
遊戲迴圈:
(5)mlgame呼叫PaiaGame獲取從遊戲裡給玩家的資料,並等待PaiaGame將資料傳回給mlgame之後
(6)mlgame便會呼叫MLPlay的更新函式,這時也會把這份從PaiaGame獲得的給玩家的資料,傳給MLPlay,而MLPlay也會將遊戲指令回傳給mlgame,小於符號搭配虛線,代表回傳被呼叫後的訊息。
注意!這裡使用的是大於符號搭配實線,代表實際上mlgame並不會等待MLPlay回傳指令後,才繼續執行自己的函式,而是繼續進行下一步
這時 (7)MLGame會等待n秒,給MLPlay時間在計算判斷後回傳遊戲指令,若MLPlay逾時,則mlgame不候,會繼續執行自己的程式。詳情請看若是AI計算時間過長,來不及回傳遊戲指令,則是會? @GitHub——MLGame系統時序圖
接著 (8)MLGame就會呼叫PaiaGame的更新函式,並把從MLPlay收到的遊戲指令傳給PaiaGame去更新遊戲,這時使用的是實心箭頭搭配實線,所以mlgame會等待PaiaGame更新完後,才會繼續執行往下執行自己的函式,如果PaiaGame要重置或結束遊戲,會再結束前,回傳 RESET或QUIT的字串給mlgame
然後 (9)mlgame呼叫PaiaGame獲得場景更新資料的函式,等待收到回覆後再往下執行 → 實心箭頭搭配實線
判斷遊戲狀態:
這時,就會進到判斷遊戲狀態的時候了,若從(8)PaiaGame更新的結果那,未收到任何訊息,代表繼續遊戲,則把從PaiaGame獲得的場景更新資料,用於 (10)繪製遊戲畫面
除非!mlgame從(8)PaiaGame更新的結果,收到RESET字串,則遊戲重置
或!mlgame從(8)PaiaGame更新的結果,收到 QUIT字串,則遊戲結束
到這裡,MLGame的介紹,用程式寫遊戲給AI玩所需理解的觀念就到這裡,後續我們會透過專案實作的內容,加強大家對MLGame框架的概念
下個環節,我們就要透過發布在PAIA的一款 2D 雙人對戰遊戲——TankMan,講解我們如何「用程式寫遊戲給AI玩」,我也會提供大家可以跟著文章實作設計自己遊戲的模板,感謝訂閱、按讚、分享、追蹤此文的朋友的支持,如果有新朋友對「用程式寫遊戲給AI玩」有興趣,我們一起度過剩下的24天吧!