Age of Empires II grabó el análisis y el resumen del juego en Python 3.
.mgl
).mgx
).mgz
).mgz
).aoe2record
).aoe2record
) La funcionalidad principal de mgz
es un analizador que produce una estructura de datos de Python basada en un archivo de juego grabado. También ofrece representaciones abstractas que facilitan el uso de los datos.
mgz
ofrece dos analizadores, fast
y full
. El analizador fast
omite datos que rara vez se necesitan, mientras que el analizador full
intenta analizar tanto como sea posible. Naturalmente, el analizador fast
es más rápido que el analizador full
. El analizador full
puede hacer casi todo, el fast
sólo quizás entre un 80 y un 90%. El summary
probará automáticamente el analizador fast
y recurrirá al analizador full
si es necesario.
Las abstracciones toman la salida del analizador como entrada y devuelven un objeto con datos normalizados que es más fácil de usar en la mayoría de los casos. Hay dos abstracciones disponibles, summary
y model
. La abstracción summary
intenta exponer la máxima cantidad de datos utilizables. La abstracción model
es más limitada pero realiza automáticamente más búsquedas.
Versión | modelo | resumen | rápido (encabezado) | rápido (cuerpo) | completo (encabezado) | completo (cuerpo) |
---|---|---|---|---|---|---|
Era de Reyes ( .mgl ) | ✓ | ✓ | ✓ | |||
Los Conquistadores ( .mgx ) | ✓ | ✓ | ✓ | |||
Parche de usuario <= 1.4 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ||
Parche de usuario 1.5 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Edición HD >= 4.6 | ✓ | ✓ | ✓ | ✓ | ||
Edición HD 5.8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Edición definitiva <= 13.34 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ||
Edición definitiva > 13.34, <= 26.21 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Edición definitiva > 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 ))
P: ¿Dónde están los logros/estadísticas del final del juego?
R: En la acción postgame
, disponible solo en la versión Userpatch.
P: ¿Cómo puedo saber la cantidad de recursos/muertes/etc. en un punto determinado?
R: No puedes hacerlo sin volver a jugar la partida en el juego.
P: ¿Cómo funciona un archivo de juego grabado?
R: La primera parte (el header
) es una instantánea del estado inicial del juego. La segunda parte (el body
) es una lista de movimientos realizados por los jugadores. El juego carga el encabezado y luego aplica cada movimiento para mutar el estado de acuerdo con las reglas del juego.
P: ¿Cómo puedo instalar este paquete?
R: pip install mgz