Piastrelle · bei.pm
I formati di file descritti in questa pagina si basano sull'analisi tecnica della proprietà intellettuale di Dynamix, Inc. e Sierra Entertainment.
La proprietà intellettuale è attualmente parte del patrimonio di Activision Publishing, Inc. / Activision Blizzard, Inc. ed è attualmente di proprietà di Microsoft Corp..
Le informazioni sono state raccolte tramite Reverse Engineering e analisi dei dati a scopo di archiviazione e interoperabilità con dati storici.
Non sono state utilizzate specifiche proprietarie o riservate.
Il gioco è attualmente disponibile per l'acquisto come download su gog.com.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere |
I tiles sono un formato grafico bitmap specifico per Outpost-2. Si estendono su 13 tileset,
chiamati "wells" (well0000.bmp
fino a well0012.bmp
),
che si trovano all'interno del volume maps.vol.
I tileset / Wells contengono quanto segue:
Nome file | Contenuto |
---|---|
well0000.bmp | Un'immagine blu di 32x32px - ideale per testare se il proprio caricatore di immagini funziona |
well0001.bmp | Contiene rocce chiare, catene montuose su rocce chiare e innumerevoli varianti di crateri da impatto su rocce chiare |
well0002.bmp | Contiene 'Doodads' di rocce chiare - elementi che possono essere posizionati per decorare (o intenzionalmente come struttura, come ad esempio muri) su rocce chiare, compresa la vegetazione |
well0003.bmp | Contiene una struttura a crosta su rocce chiare |
well0004.bmp | Contiene rocce scure, catene montuose su rocce scure e innumerevoli varianti di crateri da impatto su rocce scure |
well0005.bmp | Contiene 'Doodads' di rocce scure - elementi che possono essere posizionati per decorare (o intenzionalmente come struttura, come ad esempio muri) su rocce scure |
well0006.bmp | Contiene una struttura a crosta su rocce scure, così come transizioni tra rocce chiare e scure |
well0007.bmp | Contiene lava, inclusi 4-5 frame di animazione della stessa |
well0008.bmp | Contiene sabbia e innumerevoli varianti di crateri da impatto nella sabbia |
well0009.bmp | Contiene 'Doodads' di sabbia - elementi che possono essere posizionati per decorare (o intenzionalmente come struttura, come ad esempio muri) sulla sabbia |
well0010.bmp | Contiene 48 transizioni da sabbia a rocce chiare e scure |
well0011.bmp | Contiene le calotte polari della mappa, con rocce scure come sottostrato |
well0012.bmp | Contiene le calotte polari della mappa, con rocce chiare come sottostrato |
È consigliabile per una realizzazione accurata non rendere in anticipo i tiles per metterli in cache, poiché i dati per il ciclo giorno/notte devono ancora essere elaborati - e ci sarebbero moltissimi dati.
I tiles sono grafica 8bpp con palette indicizzata, ciascuno con risoluzione 32x32 pixel, disposti tra di loro. In un tileset così creato, però, possono esserci molti più
Il contenitore principale è composto da 2 sezioni: head
e data
.
Intestazione delle Piastrelle
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere | |
0x0008 | uint(32) | Versione / Bandierine? | Potrebbe trattarsi di un'indicazione della versione del formato del file; in tutti i file a mia disposizione era presente il valore |
0x000c | uint(32) | Larghezza (Risoluzione Orizzontale) | Indica quanto è larga la file immagine (in pixel). Per tutti i pozzi di Outpost 2, qui si aspetterà il valore |
0x0010 | uint(32) | Altezza (Risoluzione verticale) | Indica l'altezza del file immagine (in pixel). In tutti i pozzi di Outpost 2, qui ci si aspetta il valore |
0x0014 | uint(32) | Profondità del colore? | Il significato di questo valore è sconosciuto. Poiché in tutti i file esaminati è presente il valore |
0x0018 | uint(32) | Profondità di colore 2? | Il significato di questo valore è sconosciuto. Potrebbe trattarsi di una profondità di colore 'target'. |
Secondo queste indicazioni, seguirà un file di palette in formato RIFF standardizzato. La specifica esatta si trova - poiché le palette compaiono anche altrove - sotto Palette.
Dati delle piastrelle
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere |
Infine, seguono i dati dei pixel puri, riga per riga da sinistra in alto a destra in basso.
Il valore dei dati per le grafiche generalmente presenti come bitmap a 8bpp corrisponde all'indice del colore nella tavolozza.
Il motore di gioco disegna i tiles *probabilmente* su richiesta.
Questo sembra essere dovuto, tra l'altro, al ciclo giorno-notte che prevede 32 gradazioni di singoli tiles. Apparentemente, viene sottratto 'un po'' dal valore di luminosità. Valori precisi non sono ancora stati determinati, sto lavorando sulla base di calcolo
v *= (daylight / 48) + 0.25;
con i dati HSV dei pixel, dove daylight è un valore da 0-31 e v è un valore compreso tra 0-1. Inoltre, è da considerare che sulla mappa esiste un margine di 16 tiles a sinistra e a destra (che serve per la generazione invisibile delle unità).
In aggiunta, sembra che il ciclo giorno-notte aggiorni solo una colonna della mappa per ogni ciclo di gioco.
Un ciclo giorno-notte accelerato appare quindi come segue: