Age of Empires II は、Python 3 でゲームの解析と要約を記録しました。
.mgl
).mgx
).mgz
).mgz
).aoe2record
).aoe2record
) mgz
の中核機能は、記録されたゲーム ファイルに基づいて Python データ構造を生成するパーサーです。また、データの使用を容易にする抽象化された表現も提供します。
mgz
、 fast
とfull
の 2 つのパーサーを提供します。 fast
パーサーはめったに必要とされないデータをスキップしますが、 full
パーサーは可能な限り解析を試みます。当然のことながら、 fast
パーサーはfull
パーサーよりも高速です。 full
パーサーはほぼすべてのことを実行できますが、 fast
はおそらく 80 ~ 90% しか実行できません。 summary
自動的にfast
パーサーを試行し、必要に応じてfull
パーサーにフォールバックします。
抽象化はパーサー出力を入力として受け取り、ほとんどの場合に使いやすい正規化されたデータを含むオブジェクトを返します。 summary
とmodel
2 つの抽象化が利用可能です。 summary
抽象化は、使用可能なデータの最大量を公開しようとします。 model
抽象化はより制限されていますが、より多くのルックアップが自動的に実行されます。
バージョン | モデル | まとめ | 速い(ヘッダー) | 速い(体) | フル(ヘッダー) | フル(全身) |
---|---|---|---|---|---|---|
エイジ オブ キングス ( .mgl ) | ✓ | ✓ | ✓ | |||
征服者 ( .mgx ) | ✓ | ✓ | ✓ | |||
ユーザーパッチ <= 1.4 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ||
ユーザーパッチ 1.5 ( .mgz ) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
HD エディション >= 4.6 | ✓ | ✓ | ✓ | ✓ | ||
HD エディション 5.8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Definitive Edition <= 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 ))
Q:ゲーム終了後の実績/統計はどこにありますか?
A:ゲームpostgame
アクションでは、Userpatch バージョンでのみ利用可能です。
Q:特定の時点でのリソース/キル数などを知るにはどうすればよいですか?
A:ゲーム内で試合をリプレイしないとできません。
Q:録画されたゲーム ファイルはどのように機能しますか?
A:最初の部分 ( header
) は、ゲームの初期状態のスナップショットです。 2 番目の部分 ( body
) は、プレイヤーが行った手のリストです。ゲームはヘッダーをロードし、各動きを適用してゲーム ルールに従って状態を変更します。
Q:このパッケージをインストールするにはどうすればよいですか?
A: pip install mgz