文档 参考
数据从哪来
每一类数据的来源和精度。出了「看起来不对」的怪事时,先查这一页。
| 数据 | 来源 | 精度 |
|---|---|---|
| 单位、资源、订单、技能、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。