Tegels · bei.pm

Geplaatst op 19-11-2015·Bijgewerkt op 13-02-2025·Nederlands
Deze tekst is automatisch vertaald door OpenAI GPT-4o Mini.

De op deze pagina beschreven bestandsformaten zijn gebaseerd op de technische analyse van intellectueel eigendom van Dynamix, Inc. en Sierra Entertainment.
Het intellectueel eigendom maakt vandaag de dag deel uit van de massa van Activision Publishing, Inc. / Activision Blizzard, Inc. en is momenteel in bezit van Microsoft Corp..

De informatie is verzameld door middel van Reverse Engineering en data-analyse met als doel archivering en interoperabiliteit met historische gegevens.
Er zijn geen eigendomsrechtelijke of vertrouwelijke specificaties gebruikt.

Het spel is momenteel verkrijgbaar als download op gog.com.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF teken
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Offset Gegevenstype Benaming Uitleg
0x0000 uint(32) Magische Bytes
0x0004 uint(24) Bloklengte
0x0007 uint(8) Vlaggen

De tiles zijn een specifiek Bitmap-grafiekformaat voor Outpost-2. Ze bestaan uit 13 tilesets, "wells" genoemd (well0000.bmp tot well0012.bmp), die zich binnen de volume maps.vol bevinden.

De tilesets / wells bevatten het volgende:

Bestandsnaam Inhoud
well0000.bmp Een 32x32px grote, blauwe afbeelding - ideaal als test om te zien of je eigen afbeeldingslader werkt
well0001.bmp Bevat licht gesteente, bergketens op licht gesteente en talloze varianten van inslagkraters in licht gesteente
well0002.bmp Bevat licht-gesteente 'Doodads' - dus elementen die voor verfraaiing (of bewust als structuur, zoals muren) op licht gesteente geplaatst kunnen worden, waaronder ook vegetatie
well0003.bmp Bevat een korstachtige structuur op licht gesteente
well0004.bmp Bevat donker gesteente, bergketens op donker gesteente en talloze varianten van inslagkraters in donker gesteente
well0005.bmp Bevat donker-gesteente 'Doodads' - dus elementen die voor verfraaiing (of bewust als structuur, zoals muren) op donker gesteente geplaatst kunnen worden
well0006.bmp Bevat een korstachtige structuur op donker gesteente, evenals overgangen tussen licht en donker gesteente
well0007.bmp Bevat lava inclusief 4-5 frames animatie ervan
well0008.bmp Bevat zand en talloze varianten van inslagkraters in zand
well0009.bmp Bevat zand-'Doodads' - dus elementen die voor verfraaiing (of bewust als structuur, zoals muren) op zand geplaatst kunnen worden
well0010.bmp Bevat elk 48 overgangen van zand naar licht en donker gesteente
well0011.bmp Bevat de poolkappen van de map, met donker gesteente als ondergrond
well0012.bmp Bevat de poolkappen van de map, met licht gesteente als ondergrond

Het is raadzaam voor een accurate uitvoering om de tiles niet van tevoren te renderen om deze te cachen, omdat de gegevens voor de dag/nacht-cyclus nog verwerkt moeten worden - en er zouden zeer veel gegevens ontstaan.

De tiles zijn 8bpp-afbeeldingen met een geïndexeerde palet van elk 32x32 pixels resolutie, die onder elkaar zijn gerangschikt. In een dergelijk ontstaan tileset kunnen echter veel meer

De hoofdcontainer bestaat uit 2 secties: head en data.

Vloertegels Koptekst

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF teken
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Gegevenstype Benaming Uitleg
0x0000 uint(32) Magische Bytes
0x0004 uint(24) Bloklengte
0x0007 uint(8) Vlaggen
0x0008 uint(32) Versie / Vlaggen?

Dit zou een versienummer van het bestandsformaat kunnen zijn; in alle bestanden die ik heb, stond hier de waarde 0x02

0x000c uint(32) Breedte (Horizontale Resolutie)

Geeft aan hoe breed het afbeeldingsbestand is (in pixels).

Bij alle wells van Outpost 2 zal hier de waarde 0x20 of 32 verwacht worden.

0x0010 uint(32) Hoogte (Verticale resolutie)

Geeft aan hoe hoog het afbeeldingsbestand is (in pixels).

Bij alle wells van Outpost 2 wordt hier de waarde 0x20 of 32 verwacht.

0x0014 uint(32) Kleurendiepte?

De betekenis van deze waarde is onbekend.

Aangezien deze in alle gecontroleerde bestanden de waarde 8 bevat, zou het om een kleurdiepte-aanduiding kunnen gaan.

0x0018 uint(32) Kleurdiepte 2?

De betekenis van deze waarde is onbekend.

Het kan mogelijk een 'doel'-kleurdiepte zijn.

Na deze gegevens volgt er nog een palettend bestand in het gestandaardiseerde RIFF-formaat. De exacte specificatie is te vinden - aangezien de paletten ook op andere plaatsen voorkomen - onder Paletten.

Tiles Gegevens

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF teken
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Offset Gegevenstype Benaming Uitleg
0x0000 uint(32) Magische Bytes
0x0004 uint(24) Bloklengte
0x0007 uint(8) Vlaggen

Eindelijk volgen hier de ruwe pixeld gegevens, van linksboven regel voor regel naar rechtsonder.
De dataverdienste van de in de regel als 8bpp-bitmaps weergegeven afbeeldingen komt overeen met de index van de kleur in de kleurenpalet.

Pixeld gegevens beginnen bovenaan links en eindigen onderaan rechts.

De spel-engine tekent de tegels *waarschijnlijk* on-demand.
Dit lijkt onder andere te maken te hebben met de dag-nachtcyclus, die 32 gradaties van individuele tegels kent. Daarbij wordt blijkbaar van de helderheidswaarde telkens 'een beetje' afgetrokken. Nauwkeurige waarden zijn nog niet vastgesteld, ik werk op basis van de berekening

v *= (daylight / 48) + 0.25;

met de HSV-gegevens van de pixels, waarbij daylight een waarde van 0-31 is en v een waarde tussen 0-1. Bovendien moet in overweging worden genomen dat er op de kaart aan beide zijden nog een rand van 16 tegels bestaat (die dient voor het onzichtbaar spawnen van eenheden).

Aanvullend lijkt de dag-nachtcyclus per spelcyclus telkens slechts één kolom van de kaart bij te werken.
Een versnelde dag-nachtcyclus ziet er daarom als volgt uit:

Visualisatie van de dag-nachtcyclus