В Age of Empires 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 ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
HD-версия >= 4.6 | ✓ | ✓ | ✓ | ✓ | ||
HD-издание 5.8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Полное издание <= 13.34 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ||
Definitive Edition > 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 ))
В: Где находятся достижения/статистика по окончании игры?
О: В postgame
действии, доступном только в версии Userpatch.
В: Как я могу узнать количество ресурсов/убийств/и т. д. в определенный момент?
О: Невозможно, не переиграв матч в игре.
В: Как работает записанный игровой файл?
О: Первая часть ( header
) — это снимок начального состояния игры. Вторая часть ( body
) представляет собой список ходов, сделанных игроками. Игра загружает заголовок, а затем применяет каждый ход для изменения состояния в соответствии с правилами игры.
Вопрос: Как мне установить этот пакет?
A: pip install mgz