The Caesar III scenario format
A Caesar III scenario is not a container with a table of contents. It is ten fixed-size blocks written back to back in a known order, none of them compressed — which makes it the easiest file in the whole series to take apart.
Used by Caesar III
Nobody has published a specification for this format. What exists is Julius's reimplementation, which reads and writes the original files exactly, so its loader is the closest thing to one. Everything below is read off that code rather than inferred from files.
The whole scenario is ten chunks in a fixed order with no headers, no lengths and no markers between them. Every chunk is uncompressed — unlike a savegame, where most are not.
Chunks, in order
Sizes in bytes. Offsets are cumulative and implied by the order, since nothing in the file records them.
| Offset | Size | Type | Field | Description |
|---|---|---|---|---|
| 0 | 52488 | uint16[] | graphic_ids | Two bytes per tile. |
| 52488 | 26244 | uint8[] | edge | One byte per tile. |
| 78732 | 52488 | uint16[] | terrain | Two bytes per tile. |
| 131220 | 26244 | uint8[] | bitfields | One byte per tile. |
| 157464 | 26244 | uint8[] | random | One byte per tile. |
| 183708 | 26244 | uint8[] | elevation | One byte per tile. |
| 209952 | 8 | — | random_iv | Seed state for the random number generator. |
| 209960 | 8 | — | camera | Saved camera position. |
| 209968 | 1720 | — | scenario | The scenario proper: name, briefing, victory conditions, invasions, requests, prices. Its internal layout is not documented here. |
| 211688 | 4 | — | end_marker | Closes the file. |