Animationer · bei.pm

Publicerad den 19/11/2015·Uppdaterad den 13/02/2025·Svenska
Denna text har automatiskt översatts av OpenAI GPT-4o Mini.

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:

  1. 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.
  2. Frame
    En frame är en enskild bild inom en animation. En animation kan innehålla en eller flera frames.
  3. 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:

  • 0x7F (Bitmask): Antalet underbilder som används i denna bild
  • 0x80: Informationen om huruvida Valfritt 1 och 2 finns
0x0001 uint(8) Okänd 1 och växlingsknapp för valfri 3, 4

Detta värde innehåller:

  • 0x7F (Bitmask): Okänd - Jag misstänker starkt att det handlar om antalet gameticks som går innan nästa bild visas
  • 0x80: Informationen om huruvida Optional 3 och 4 finns
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:

Renderingen av Animation 500 illustrerad

Animation 500 färdig sammanställd

Plymouth Byggfabrik

Eden Rymdhamn

Eden Medicinskt Centrum

SCAT

Plymouth Rymdhamn

Påskägg:
Jultomten

Påskägg:
Dans Hund