Age of Empires II บันทึกการแยกวิเคราะห์และการสรุปเกมใน Python 3
.mgl
).mgx
).mgz
).mgz
).aoe2record
).aoe2record
) ฟังก์ชันการทำงานหลักของ mgz
คือตัวแยกวิเคราะห์ที่สร้างโครงสร้างข้อมูล Python ตามไฟล์เกมที่บันทึกไว้ นอกจากนี้ยังมีการแสดงนามธรรมที่ทำให้ใช้ข้อมูลได้ง่ายขึ้น
mgz
มี parsers สอง fast
และ full
ตัวแยกวิเคราะห์ fast
จะข้ามข้อมูลที่ไม่ค่อยจำเป็น ในขณะที่ตัวแยกวิเคราะห์ full
จะพยายามแยกวิเคราะห์ให้มากที่สุด โดยปกติแล้ว ตัวแยกวิเคราะห์ fast
จะเร็วกว่าตัวแยกวิเคราะห์ full
โปรแกรมแยกวิเคราะห์ full
สามารถทำได้เกือบทุกอย่าง โดย fast
เพียง 80-90% เท่านั้น summary
จะลองใช้ตัวแยกวิเคราะห์ fast
โดยอัตโนมัติและถอยกลับไปใช้ตัวแยกวิเคราะห์ full
หากจำเป็น
Abstractions ใช้เอาต์พุต parser เป็นอินพุตและส่งคืนอ็อบเจ็กต์ด้วยข้อมูลมาตรฐานซึ่งง่ายต่อการใช้งานในกรณีส่วนใหญ่ มีนามธรรมให้เลือกสองแบบ ได้แก่ summary
และ model
นามธรรม summary
สรุปพยายามที่จะเปิดเผยจำนวนข้อมูลที่ใช้งานได้สูงสุด นามธรรม model
นั้นมีข้อจำกัดมากกว่าแต่จะทำการค้นหามากขึ้นโดยอัตโนมัติ
เวอร์ชัน | แบบอย่าง | สรุป | เร็ว (ส่วนหัว) | เร็ว (ร่างกาย) | เต็ม (ส่วนหัว) | เต็ม (ร่างกาย) |
---|---|---|---|---|---|---|
อายุของกษัตริย์ ( .mgl ) | ||||||
ผู้พิชิต ( .mgx ) | ||||||
Userpatch <= 1.4 ( .mgz ) | ||||||
Userpatch 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 ))
ถาม: ความสำเร็จ/สถิติหลังเกมอยู่ที่ไหน?
ตอบ: ในช่วง postgame
จะมีให้เฉพาะในเวอร์ชัน Userpatch เท่านั้น
ถาม: ฉันจะทราบจำนวนทรัพยากร/การฆ่า/อื่นๆ ณ จุดใดจุดหนึ่งได้อย่างไร
ตอบ: คุณไม่สามารถเล่นซ้ำการแข่งขันในเกมได้
ถาม: ไฟล์เกมที่บันทึกไว้ทำงานอย่างไร
ตอบ: ส่วนแรก ( header
) คือภาพรวมของสถานะเกมเริ่มแรก ส่วนที่สอง ( body
) คือรายการการเคลื่อนไหวที่ผู้เล่นทำ เกมจะโหลดส่วนหัว จากนั้นใช้การเคลื่อนไหวแต่ละครั้งเพื่อเปลี่ยนสถานะตามกฎของเกม
ถาม: ฉันจะติดตั้งแพ็คเกจนี้ได้อย่างไร?
ตอบ: pip install mgz