GRID · livelli del terreno
Famiglia di griglie binarie con un’intestazione comune di 20 byte. Ogni livello ha la propria dimensione di cella e profondità in bit.
Edizione documentata: Imperivm HD · Documentazione parziale
Una mappa, più griglie
Sezione intitolata “Una mappa, più griglie”La mappa usa livelli separati per terreno, altezza, illuminazione, transizioni, decorazione e transitabilità. Condividono l’intestazione ma non sono intercambiabili.
La firma visibile nei primi quattro byte del file è DIRG. GRID è il nome della famiglia di formati; scrivere GRID letteralmente come firma produrrebbe byte diversi.
Intestazione comune
Sezione intitolata “Intestazione comune”LE significa little-endian. I dati del livello seguono l’intestazione di 20 byte. Larghezza e altezza sono dimensioni logiche, non direttamente il numero di colonne e righe di celle.
| Posizione in byte | Tipo | Campo |
|---|---|---|
| 0 | 4 byte | Firma ASCII DIRG |
| 4 | uint32 LE | cell_size: dimensione della cella |
| 8 | uint32 LE | bits_per_cell: bit per cella |
| 12 | uint32 LE | width: larghezza logica |
| 16 | uint32 LE | height: altezza logica |
Valori per livello
Sezione intitolata “Valori per livello”Per dimensioni divisibili per cell_size, dividi larghezza e altezza per quel valore per ottenere colonne e righe di celle. Questi valori appartengono a ciascuna variante; cambiare la profondità in bit dell’intestazione non converte automaticamente i dati.
La variante di transitabilità usa un bit per cella di 16 unità. I file .pass delle impronte delle entità condividono quell’intestazione e quella variante, anche se dimensioni e uso sono diversi.
| File | cell_size | bits_per_cell |
|---|---|---|
| Terrain.terrain.grid | 64 | 8 |
| Terrain.height.grid | 32 | 8 |
| Terrain.light.grid | 32 | 8 |
| Terrain.trans.grid | 64 | 4 |
| Terrain.decor.grid | 64 | 16 |
| Terrain.pass.grid | 16 | 1 |
Limiti noti
Sezione intitolata “Limiti noti”L’intestazione da sola non spiega del tutto i valori di terreno, altezza, illuminazione o decorazione. Questa scheda non specifica nemmeno i dettagli di impacchettamento, allineamento o ordine dei bit di ogni livello.
Non dedurre intervalli di altezza, unità di illuminazione, significati degli indici o dimensioni di mappa supportate dal solo tipo di cella.