以 MLGame.py 啟動遊戲 - LanKuDot/MLGame GitHub Wiki
MLGame.py 是整個遊戲的啟動檔案,玩家可以指定啟動的遊戲與執行參數來執行遊戲。使用 python MLGame.py -h 指令可以查看使用方法與可用的參數。
執行 MLGame.py 的指令格式如下:
python MLGame.py [options] <game_name> [game_params]
options 可以指定功能參數或遊戲的執行參數。game_name 指定要執行的遊戲,名稱與 games 資料夾中的遊戲資料夾名稱一樣,而 game_params 則是要傳給遊戲的參數。關於執行參數詳見執行參數,而遊戲參數的設置詳見遊戲設置。
MLGame 一開始會解析參數是否有效,也會讀取遊戲設定來解析遊戲參數。接著依照指定的執行模式執行遊戲,在手動模式中是直接執行遊戲,而在機器學習模式中會先檢查指定的玩家程式是否存在,接著才會配置資源給遊戲端與機器學習端,以執行遊戲。遊戲的詳細執行流程請見手動模式與機器學習模式。
下圖呈現詳細的 MLGame 程式架構:
-
MLGame.py:程式進入點,會直接將執行權交給execution.py -
execution.py檢查與解析輸入的參數,並決定要執行什麼模式 -
Executor系列:MLGame 執行的核心,用來控制遊戲與玩家程式的執行流程。在啟動時指定的參數,會影響Executor的執行方式 -
ProcessManager:配置與管理要執行的 process,並為 process 之間設置溝通管道 -
CommManager系列:負責遊戲端與機器學習端之間的溝通,ProcessManager會產生溝通管道供CommManager使用 -
class Game與class MLPlay:由遊戲開發者與玩家提供的類別,提供指定的函式供Executor取得所需資料或是傳入資料執行 -
Recorder:紀錄遊戲過程並產生紀錄檔。無論什麼模式,遊戲的Executor會把收到的場景資訊與遊戲指令傳給Recorder
MLGame 結束執行有三種情況:
- 遊戲結束:以
-1/--one-shot模式執行,或是遊戲要求結束而非重新開始時; - 關閉視窗:玩家按下視窗的 "X" 按鈕或是 "ESC" 鍵。MLGame 以
pygame偵測這些事件; - 發生錯誤:錯誤會回傳對應的錯誤代碼。
當有任何遊戲或是機器學習端出現錯誤時,MLGame 會停止執行,並印出錯誤原因,同時也會回傳錯誤代碼(可用 echo $? 來查看)來標示錯誤類型。
-
0:正常結束。 -
1:未處理的錯誤,也就是 MLGame 沒預料到的錯誤。 -
2:指令錯誤。在啟動 MLGame 的指令中有錯誤。 -
3:遊戲執行錯誤。遊戲或是機器學習端發生錯誤。 -
4:編譯錯誤。在編譯非 python 的玩家程式時,發生的錯誤。

