aoc mgz
1.8.26
帝国时代 II 用 Python 3 记录游戏解析和摘要。
.mgl
).mgx
).mgz
).mgz
).aoe2record
).aoe2record
) mgz
的核心功能是一个解析器,它根据录制的游戏文件生成 Python 数据结构。它还提供抽象表示,使数据的使用更加容易。
mgz
提供了两个解析器, fast
和full
。 fast
解析器会跳过很少需要的数据,而full
解析器会尝试解析尽可能多的数据。当然, fast
解析器比full
解析器更快。 full
解析器几乎可以做所有事情,但fast
可能只有 80-90%。 summary
将自动尝试fast
解析器,并在需要时回退到full
解析器。
抽象将解析器输出作为输入,并返回一个具有规范化数据的对象,该对象在大多数情况下更易于使用。有两个可用的抽象, summary
和model
。 summary
抽象试图公开最大量的可用数据。 model
抽象受到更多限制,但会自动执行更多查找。
版本 | 模型 | 概括 | 快(标题) | 快(身体) | 完整(标题) | 完整(身体) |
---|---|---|---|---|---|---|
列王时代 ( .mgl ) | ✓ | ✓ | ✓ | |||
征服者 ( .mgx ) | ✓ | ✓ | ✓ | |||
用户补丁 <= 1.4 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ||
用户补丁 1.5 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
高清版 >= 4.6 | ✓ | ✓ | ✓ | ✓ | ||
高清版5.8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
最终版 <= 13.34 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ||
最终版 > 13.34,<= 26.21 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
最终版 > 26.21 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ✓ |
import os
from mgz import header , fast
with open ( '/path/to/file' , 'rb' ) as data :
eof = os . fstat ( data . fileno ()). st_size
header . parse_stream ( data )
fast . meta ( data )
while data . tell () < eof :
fast . operation ( data )
from mgz . summary import Summary
with open ( '/path/to/file' , 'rb' ) as data :
s = Summary ( data )
s . get_map ()
s . get_platform ()
# ... etc
from mgz . model import parse_match
with open ( '/path/to/file' , 'rb' ) as data :
match = parse_match ( data )
match . map . name
match . file . perspective . number
# ... etc
import json
from mgz . model import parse_match , serialize
with open ( '/path/to/file' , 'rb' ) as h :
match = parse_match ( h )
print ( json . dumps ( serialize ( match ), indent = 2 ))
问:游戏结束时的成就/统计数据在哪里?
A:在postgame
行动中,仅在用户补丁版本中可用。
问:我如何知道某个点的资源/杀戮/等数量?
答:你不能,除非在游戏中重播比赛。
问:游戏录制文件如何运作?
答:第一部分( header
)是初始游戏状态的快照。第二部分( body
)是玩家所做的动作列表。游戏加载标题,然后根据游戏规则应用每个动作来改变状态。
问:如何安装这个软件包?
答: pip install mgz