# Set format information `*.set` files seem to act as a palette of objects for a [`.map`](maps.md) file. The map file loads a set, and can then reference objects by a small number. Since a maximally-filled map file seems to be able to reference 91,000 * 4 objects, this is a necessary optimization for 1998-era hardware. ## Structure These files are plain-text. We handily have a `template.set`, which looks like: ``` set template Defs 40 40 40 80 dirt h_dirt rocks blank blank blank blank blank blank blank # blank blank blank blank blank blank blank blank blank # ... ``` The files are of varying lengths. `template.set` is 220 lines, `map10.set` only 83. So it's a line-based format that goes: * Set description * Blank line (optional, missing in `GEN_JUN.set`, `GEN_WAS.set`, others) * `Defs` * Blank line * 4 space-separated numbers, variable between sets * At least one blank line, sometimes 2 * A list of object names, sometimes with # comments on the right hand side * They all seem to end with a comment of some sort, e.g. `# meaningless comment` Questions: What are the `Defs` for? Is it `Defaults` or `Definitions`? The values are quite variable between files. Is whitespace significant in the list of objects? First assumption is no. Is it a simple 0-indexed palette or do maps embed an absolute line number? Do positions in the palette have special meaning? e.g. is a particular range always reserved for walls? Are there any special values that don't appear as files in the `Obj/` directory? `blank.obj` exists, so I expect not. Once the map format is fleshed out a little more, can investigate by creating a map with a single object from the set in it and seeing what line that works out to be.