Age of Empires: The Conquerors - Savegame File Format
The structure definitions kind of follow the BinData Ruby Gem declarations. They should be as readable as pseudo code though. More information on BinData can be found here.
Tag | Description | Validated | ||
---|---|---|---|---|
SYNCH |
Tag | Description | Validated | ||
---|---|---|---|---|
0x000001F4 | GAMESTART | |||
0xFFFFFFFF | CHAT | + |
Tag | Description | Validated | ||
---|---|---|---|---|
0x00 | ATTACK | + | ||
0x01 | STOP | + | ||
0x02 | AI_PRIMARY | + | ||
0x03 | MOVE | + | ||
0x0a | AI_MOVE | |||
0x0b | RESIGN | + | ||
0x10 | WAYPOINT | + | ||
0x12 | STANCE | + | ||
0x13 | GUARD | + | ||
0x14 | FOLLOW | + | ||
0x15 | PATROL | + | ||
0x17 | FORMATION | + | ||
0x1b | SAVE & EXIT | |||
0x1f | AI_COORD | + | ||
0x64 | AI_TRAIN | + | ||
0x65 | TECH | + | ||
0x66 | BUILD | + | ||
0x67 | MULTIPURPOSE | |||
0x69 | WALL | + | ||
0x6a | DELETE | + | ||
0x6b | ATTACKGROUND | + | ||
0x6c | TRIBUTE | + | ||
0x6e | REPAIR | + | ||
0x6f | UNGARRISON | + | ||
0x72 | GATE | + | ||
0x73 | FLARE | + | ||
0x75 | GARRISON | + | ||
0x77 | TRAIN | + | ||
0x78 | RALLY | + | ||
0x7a | SELL | + | ||
0x7b | BUY | + | ||
0x7e | RELIC | + | ||
0x7f | TOWNBELL | + | ||
0x80 | BACKTOWORK | + | ||
0xFF | GAMESTATS | UP only |
What actions are not saved but only calculated on replay simulation?
What actions are only saved for certain players, i.e., the owner of the recorded game?
How does AoE2 create an .mgx file?
Why are there so many zeros in the actions?
struct example {
uint8_t player_id;
uint32_t unit_id;
};
Here the first variable player_id will take up 1 out of 4 bytes of the first word. The next variable, unit_id, doesn't fit into the first word anymore, so it will use a second word instead. The remaining 3 bytes in the first word remain uninitialized and therefore have zero values in them.
Why are they doing this weird memory stuff? It sounds stupid
What are the various IDs used for?