Animationer · bei.pm
De filformat som beskrivs på denna sida är baserade på teknisk analys av immateriella rättigheter från Dynamix, Inc. och Sierra Entertainment.
Det immateriella rättigheterna är idag en del av Activision Publishing, Inc.- / Activision Blizzard, Inc.-massan och ägs för närvarande av Microsoft Corp..
Informationen har sammanställts genom Reverse Engineering och dataanalys för syftet att arkivera och säkerställa interoperabilitet med historiska data.
Inga proprietära eller konfidentiella specifikationer har använts.
Spelet kan för närvarande köpas som nedladdning på gog.com.
Nu kommer vi till kungaklassen bland disciplinerna inom Outpost 2 dataformat:
Animationerna.
Animationslistorna inleds med en global header som främst används för dataverifikation. Därefter följer de konkreta animationsdefinitionerna, som är indelade i 3 nivåer:
-
Animation
En animation är den högsta instansen; den representerar en animation av en enhet, en byggnad eller en 'partikel-animation' (kometnedslag, väder, explosion) i en viss utgångssituation. -
Frame
En frame är en enskild bild inom en animation. En animation kan innehålla en eller flera frames. -
Subframe
En subframe är informationen om att en viss bitmap under vissa kriterier ska ritas på en viss position av en frame. En frame kan innehålla en eller flera subframes.
Därefter följer direkt de enskilda animationsdefinitionerna.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Antal animationer | Hur många animationsdatabaser finns det |
0x0004 | uint(32) | Antal ramar | Hur många bilder bör det totalt finnas |
0x0008 | uint(32) | Antal subramar | Hur många subramar bör det totalt finnas |
0x000c | uint(32) | Antal valfria poster | Hur många "valfria poster" finns det. |
Animering
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Okänd 1 | Okända uppgifter |
0x0004 | uint(32) | Gränsbox: Länkar | Anger den vänstra början (i pixlar) av Bounding Box. |
0x0008 | uint(32) | Avgränsningsruta: Ovan | Ange den övre början (i pixlar) av Bounding Box. |
0x000c | uint(32) | Bounding Box: Bredd | Angeger bredden (i pixlar) av Bounding Box. |
0x0010 | uint(32) | Bounding Box: Höjd | Anger den höjd (i pixlar) av Bounding Box. |
0x0014 | uint(32) | Offset: X | Anger den horisontella mittpunkten för animationen |
0x0018 | uint(32) | Offset: Y | Ange den vertikala mittpunkten för animationen |
0x001c | uint(32) | Okänd 2 | Okänd information |
0x0020 | uint(32) | Antal ramar | Anger att det finns hur många animationsramar som ingår i denna animation |
0x0024 | uint(32) | Antal fönster | Anger för hur många fönster som ska användas vid ritning |
Datana från det översta lagret, animationen, är främst administrationsdata - Boundingbox anger koordinaterna för markeringen runt fordonet/byggnaden när det har valts och indikerar samtidigt vilket område som ska vara klickbart.
Offsetet bestämmer främst "nollpunkten"; den punkt som ska läggas till eller subtraheras från spelinternt koordinatsystem. Man kan också säga mer matematiskt: offsetet anger här koordinatursprunget.
Fönstren består, precis som offsetet, av 4 uint(32)-värden per fönster som anger ett område som är användbart för individuella subframes. Utanför fönstren får, om det är avsett för bitmapen, inte ritas.
Ram
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(8) | Subframeantal och växlingsknapp för Valfritt 1, 2 | Detta värde innehåller:
|
0x0001 | uint(8) | Okänd 1 och växlingsknapp för valfri 3, 4 | Detta värde innehåller:
|
0x0002 | uint(8) | Valfritt 1 | Okänd |
0x0003 | uint(8) | Valfritt 2 | Okänd |
0x0004 | uint(8) | Valfritt 3 | Okänd |
0x0005 | uint(8) | Valfritt 4 | Okänd |
Underkonstruktion
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(16) | Bitmap-ID | Angeger vilken bitmap som ska användas för denna subram |
0x0002 | uint(8) | Okänd 1 | Är okänd - jag misstänker dock stark att det handlar om en renderingsprioritet (Z-lager). |
0x0003 | uint(8) | Subframe-ID | Anger att vi befinner oss i vilken subram |
0x0004 | sint(16) | Offset - Horisontell | Anger hur inom ramen subramen ska placeras, eller hur många pixlar bitmapen ska flyttas horisontellt |
0x0006 | sint(16) | Offset - Vertikal | Angeger var i vilken del av ramen subramen ska placeras, eller hur många pixlar bitmapen ska flyttas vertikalt. |
Med detta kan vi nu sätta ihop enskilda ramar såväl som kompletta animationer, här demonstrerat med en mer komplex animation, animationen med index 500.
Animation 500
Animation 500 visar hur en Plymouth-transportör, som är lastad med vanligt malm, lastas ur. Detta är en av de få animationerna som utnyttjar fönsterfunktionaliteten.
Och så kan hela animationen sättas ihop.
Tyvärr finns det fortfarande ett problem med den övre lastluckan, eftersom det aktuella biten i grafiktyp-informationen inte är inställt.
Här är några fler vackert animerade sprites från spelet: