سجلت لعبة 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 | ✓ | ✓ | ✓ | ✓ | ||
نسخة اتش دي 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 ))
س: أين هي الإنجازات/الإحصائيات في نهاية اللعبة؟
ج: في إجراء postgame
، متاح فقط من إصدار Userpatch.
س: كيف يمكنني معرفة عدد الموارد/عمليات القتل/إلخ عند نقطة معينة؟
ج: لا يمكنك ذلك دون إعادة المباراة داخل اللعبة.
س: كيف يعمل ملف اللعبة المسجل؟
ج: الجزء الأول ( header
) عبارة عن لقطة لحالة اللعبة الأولية. الجزء الثاني ( body
) عبارة عن قائمة بالتحركات التي يقوم بها اللاعبون. تقوم اللعبة بتحميل الرأس، ثم تطبق كل حركة لتغيير الحالة وفقًا لقواعد اللعبة.
س: كيف يمكنني تثبيت هذه الحزمة؟
ج: pip install mgz