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 ) | ✓ | ✓ | ✓ | ✓ | ||
최종판 > 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 ))
Q: 게임 종료 시 업적/통계는 어디에 있나요?
A: 게임 postgame
작업에서는 Userpatch 버전에서만 사용할 수 있습니다.
Q: 특정 시점의 리소스/킬 수 등을 어떻게 알 수 있나요?
A: 게임 내에서 경기를 다시 플레이하지 않으면 불가능합니다.
Q: 녹화된 게임 파일은 어떻게 작동하나요?
A: 첫 번째 부분( header
)은 초기 게임 상태의 스냅샷입니다. 두 번째 부분( body
)은 플레이어가 수행한 동작 목록입니다. 게임은 헤더를 로드한 다음 각 동작을 적용하여 게임 규칙에 따라 상태를 변경합니다.
Q: 이 패키지를 어떻게 설치할 수 있나요?
A: pip install mgz