文档 参考

数据从哪来

每一类数据的来源和精度。出了「看起来不对」的怪事时,先查这一页。

数据来源精度
单位、资源、订单、技能、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。