iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0

上一篇我們講到MLGame框架下三個程式——mlgame、PaiaGame、MLPlay,它們之間是如何分工合作,讓我們能夠用程式寫給AI玩的遊戲。還沒看過的朋友,先來看看上一篇的「MLGame 系統時序圖 」吧! @GitHub MLGame系統時序圖

這次我們要來講,MLGame框架下,專案有哪些必要的檔案和講解我們遊戲必須繼承的PaiaGame的結構

MLGame專案架構介紹

  1. TankMan專案根目錄 @GitHubTankMan

    project_root

    • asset:存放著遊戲內所需圖片、聲音、地圖等
    • doc:存放其他文件
    • ml:存放AI模型(class name 須為 MLPlay)
    • scripts:就...scripts
    • src:source code
    • test:test_case
    • venv:遊戲的虛擬環境
    • blockly.json:會將寫在裡面的中、英文積木,轉成遊戲的程式碼(後續介紹PaiaDesktop細講)
    • game_config.json:mlgame會抓取遊戲的資訊,包含遊戲參數的設定
    • Mapping.md:如何用Tiled這款軟體繪製遊戲地圖的教學
    • README.md:此專案的說明文件
    • requirements.txt:記錄此專案所需下載的套件

AI

  1. ml資料夾 —— 存放啟動遊戲的AI

    ml

    • blockly:存放積木範例程式,用於PAIA-Desktop
    • ml_play.py:為PAIA-arena.com上傳AI必須符合的檔案名稱
    • ml_play_manual.py:手動遊玩遊戲範例檔
    • ml_play_template_1P.py:自動遊玩遊戲範例檔
    • ml_play_template_2P.py:自動遊玩遊戲範例檔

PaiaGame Structures

  1. 繼承PaiaGame的TankManGame

    PaiaGameStructure

    • 六個必須繼承後,覆寫的檔案為:
      1. 遊戲更新函式(command為AI回傳指令,例:{”1P”: [“UP”, ”SHOOT”], “2P”: […]})
      2. 獲得遊戲資料給玩家函式(會將字典內資料傳給對應的AI,例:{”1P”:{…})和{”2P”: {…}})
      3. reset函式(當mlgame更新函式收到”RESET”時,會被呼叫執行,以讓PaiaGame重置遊戲)
      4. 獲取場景初始化資料函式(mlgame會在初始化時呼叫,以建立遊戲圖片的資料庫)
      5. 獲取場景更新資料函式(填入此帧所有遊戲畫面渲染所需資料)
      6. 獲取遊戲結果函式(當重置遊戲或結束遊戲時,呼叫以顯示遊戲結果)

遊戲過程資料

game_print_data

明天預告:

下個環節,我們來介紹如何使用MLGameTemplate 的遊戲模板,快速開始一個新的遊戲專案


上一篇
MLGame 系統時序圖
下一篇
快速開始一個新的遊戲 @MLGame Template
系列文
用程式寫遊戲給AI玩30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言