文件 參考
資料從哪裡來
每一類資料的來源與精度。遇到「看起來不對」的怪事時,先查這一頁。
| 資料 | 來源 | 精度 |
|---|---|---|
| 單位、資源、指令、技能、buff、物品欄 | 執行環境每 50 ms 推送的世界區塊 | 發布週期(可調到 16 ms) |
| 傷害、擊殺事件 | 執行環境在遊戲執行緒上當場記下,每一下都有 | 即時 |
| 其他事件(出現、死亡、更換指令、升級……) | 比對相鄰兩次發布 | 發布週期 |
| 生產表(訓練/研究/建造/升級) | 引擎生產技能的計時欄位 + 執行環境累加的已進行時間 | 約 ±0.2 遊戲秒 |
| 戰鬥屬性、克制表 | 遊戲內建的資料表(從你本機的遊戲擷取) | 不含物品、光環、buff 的加成修正 |
| 尋路 | 引擎的地形可通行性(128 一格)+ 樹木 + 建築佔地,在 SDK 端跑 A* | 一格;窄於一格的縫隙判定為不通 |
| 遊戲內時間 | JASS GetFloatGameState(GAME_STATE_TIME_OF_DAY) | 發布週期 |
| 可見性 | 執行環境為每個單位依玩家計算的可見性遮罩 | 發布週期 |
| 科技計數、可行性、金礦剩餘量 | 快車道查詢,直接詢問引擎 | 即時 |
遊戲資料不隨程式碼散布
單位表、技能、物品、英雄、buff、傷害克制表等都來自暴雪的遊戲檔案,不納入儲存庫。在遠見「控制中心」設定好遊戲目錄後,會自動從你自己的遊戲中擷取,也可以手動執行:
python data/tools/extract_game_data.py
擷取結果放在 data/game/(不納入 git):原始的 .slk / .txt,以及整理好的 units.json、names.json、skills.json、items.json、heroes.json、buffs.json。
幾個具體數字
| 項目 | 值 |
|---|---|
| 一天 | 480 遊戲秒(白天、黑夜各 240 秒),一小時 = 20 遊戲秒;開局是早上 8 點 |
| 白天 | 6:00 ~ 18:00 |
| 護甲係數 | 0.06(來自遊戲資料表) |
| 世界區塊容量 | 16 個玩家、1024 個單位、256 份單位細節、256 個地上物品、128 筆生產 |
| 樹木 | 最多 4096 個可破壞物,每 2 秒刷新 |
| 事件環 | 8192 筆;讀取太慢會遺失(SDK 能偵測到) |
| 地圖格子 | 128 遊戲單位一格,最多 256 × 256 |
實測校準過的例子
- 生產耗時:農民 14.9、農場 34.9、鐵製刀劍 59.9 遊戲秒,與執行環境推送的數值一致(誤差小於 0.2 秒);
- 戰鬥屬性對照遊戲面板核對:聖騎士 650 血量、255 魔力、3.9 護甲、攻擊力 24 ~ 34;攻擊升一級的步兵 13 ~ 15;
- 引擎傷害事件中的護甲減免前傷害(14 / 15 / 15)落在
stats()算出的區間內; - 尋路:Echo Isles 116 × 88 格,到對面大廳的地面路程 10642(直線 9856),建立網格 18 ms、一次 A* 約 1 ms。