Age of Empires II a enregistré l'analyse et le résumé du jeu en Python 3.
.mgl
).mgx
).mgz
).mgz
).aoe2record
).aoe2record
) La fonctionnalité principale de mgz
est un analyseur qui produit une structure de données Python basée sur un fichier de jeu enregistré. Il propose également des représentations abstraites qui facilitent l'utilisation des données.
mgz
propose deux analyseurs, fast
et full
. L'analyseur fast
ignore les données rarement nécessaires, tandis que l'analyseur full
essaie d'analyser autant que possible. Naturellement, l’analyseur fast
est plus rapide que l’analyseur full
. L'analyseur full
peut faire à peu près tout, l' fast
seulement peut-être 80 à 90 %. Le summary
essaiera automatiquement l’analyseur fast
et reviendra à l’analyseur full
si nécessaire.
Les abstractions prennent la sortie de l'analyseur en entrée et renvoient un objet avec des données normalisées plus faciles à utiliser dans la plupart des cas. Il existe deux abstractions disponibles, summary
et model
. L'abstraction summary
tente d'exposer la quantité maximale de données utilisables. L'abstraction model
est plus limitée mais effectue automatiquement davantage de recherches.
Version | modèle | résumé | rapide (en-tête) | rapide (corps) | plein (en-tête) | plein (corps) |
---|---|---|---|---|---|---|
L'Âge des Rois ( .mgl ) | ✓ | ✓ | ✓ | |||
Les Conquérants ( .mgx ) | ✓ | ✓ | ✓ | |||
Patch utilisateur <= 1.4 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ||
Patch utilisateur 1.5 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Édition HD >= 4.6 | ✓ | ✓ | ✓ | ✓ | ||
Édition HD 5.8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Édition définitive <= 13.34 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ||
Édition définitive > 13.34, <= 26.21 ( .aoe2record ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Édition définitive > 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 : Où sont les succès/statistiques de fin de partie ?
R : Dans l'action postgame
, disponible uniquement à partir de la version Userpatch.
Q : Comment puis-je connaître le nombre de ressources/tués/etc à un moment donné ?
R : Vous ne pouvez pas le faire sans rejouer le match dans le jeu.
Q : Comment fonctionne un fichier de jeu enregistré ?
R : La première partie (l' header
) est un instantané de l'état initial du jeu. La deuxième partie (le body
) est une liste de mouvements effectués par les joueurs. Le jeu charge l'en-tête, puis applique chaque mouvement pour muter l'état selon les règles du jeu.
Q : Comment puis-je installer ce package ?
R : pip install mgz