Animasjonene · bei.pm
Filformatene beskrevet på denne siden er basert på teknisk analyse av åndsverk fra Dynamix, Inc. og Sierra Entertainment.
Åndsverket er i dag en del av Activision Publishing, Inc. / Activision Blizzard, Inc. og eies for øyeblikket av Microsoft Corp..
Informasjonen er samlet inn gjennom Reverse Engineering og dataanalyse for arkiverings- og interoperabilitetsformål med historiske data.
Ingen proprietære eller konfidensielle spesifikasjoner har blitt brukt.
Spillet kan nå kjøpes som nedlasting på gog.com.
Nå kommer vi til toppen av disiplinene innen Outpost 2 dataformater:
Animasjonene.
Animasjonslistene innledes med en global header, som primært tjener til dataverifisering. Deretter følger de konkrete animasjonsdefinisjonene, som deles inn i 3 nivåer:
-
Animasjon
En animasjon er den øverste instansen; den representerer en animasjon av en enhet, en bygning eller en 'partikkel-animasjon' (kometnedslag, vær, eksplosjon) i en bestemt startposisjon. -
Bilde
Et bilde er et enkelt bilde innen en animasjon. En animasjon kan inneholde ett eller flere bilder. -
Underbilde
Et underbilde er informasjonen om at et bestemt bitmap skal tegnes på en bestemt plassering av et bilde under visse kriterier. Et bilde kan inneholde ett eller flere underbilder.
Deretter følger de individuelle animasjonsdefinisjonene.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Forskyvning | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Antall animasjoner | Hvor mange animasjonsdatapunkter er det? |
0x0004 | uint(32) | Antall rammer | Hvor mange rammer bør det totalt være |
0x0008 | uint(32) | Antall underrammer | Hvor mange subrammer burde det være totalt? |
0x000c | uint(32) | Antall valgfrie oppføringer | Hvor mange "valgfri oppføringer" finnes. |
Animasjon
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Forskyvning | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Ukjent 1 | Ukjente opplysninger |
0x0004 | uint(32) | Avgrensningsboks: Venstre | Angir venstre start (i piksler) av Bounding Box. |
0x0008 | uint(32) | Avgrensningsboks: Øverst | Angir den øvre starten (i piksler) av Bounding Box. |
0x000c | uint(32) | Bounding Box: Bredde | Angir bredden (i piksler) av Bounding Box. |
0x0010 | uint(32) | Avgrensningsboks: Høyde | Angir høyden (i piksler) på Bounding Box. |
0x0014 | uint(32) | Forskyvning: X | Angir den horisontale midtpunktet av animasjonen |
0x0018 | uint(32) | Offset: Y | Angir den vertikale midtpunktet av animasjonen |
0x001c | uint(32) | Ukjent 2 | Ukjent informasjon |
0x0020 | uint(32) | Antall rammer | Angir hvor mange animasjonsrammer som er inkludert i denne animasjonen |
0x0024 | uint(32) | Antall vinduer | Angir hvor mange vinduer som skal brukes ved tegning |
Dataene til det øverste laget, animasjonen, er primært administrasjonsdata - Boundingbox refererer til koordinatene til markeringen rundt kjøretøyet/bygningen, når det er valgt, og indikerer samtidig hvilket område som skal være klikkbart.
Offsetet bestemmer primært "nullpunktet"; punktet som skal legges til eller trekkes fra i henhold til interne spillkoordinater. Man kan også si mer matematisk: offsetet betegner her koordinatsystemets opprinnelse.
Når det gjelder vinduene, er de, akkurat som offsetet, hver av dem (per vindu) 4 uint(32)-verdier, som angir et område som anses som brukbart for individuelle subrammer. Utenfor vinduene skal man ikke tegne, med mindre det er spesifisert for bitmapen.
Ramme
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Forskyvning | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(8) | Subrammenummer og veksler for Valgfri 1, 2 | Denne verdien inneholder:
|
0x0001 | uint(8) | Ukjent 1 og Toggle for Valgfri 3, 4 | Denne verdien inneholder:
|
0x0002 | uint(8) | Valgfritt 1 | Ukjent |
0x0003 | uint(8) | Valgfri 2 | Ukjent |
0x0004 | uint(8) | Valgfri 3 | Ukjent |
0x0005 | uint(8) | Valgfritt 4 | Ukjent |
Underramme
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Forskyvning | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(16) | Bitmap-ID | Angir hvilken bitmap som skal brukes for dette subramme |
0x0002 | uint(8) | Ukjent 1 | Er ukjent - jeg mistenker imidlertid sterkt at dette handler om en render-prioritet (Z-lag). |
0x0003 | uint(8) | Subframe-ID | Angir i hvilken underramme vi befinner oss |
0x0004 | sint(16) | Offset - Horisontal | Angir hvor innenfor rammen underrammen skal plasseres, eller hvor mange piksler bitmapen skal flyttes horisontalt |
0x0006 | sint(16) | Offset - Vertikal | Angir hvor innenfor rammen subrammen skal plasseres, eller hvor mange piksler bitmapen skal vertikalt forskyves. |
Med dette kan vi nå sette sammen enkeltstående rammer, så vel som komplette animasjoner. Her demonstreres det med et eksempel på en mer kompleks animasjon, animasjonen med indeksen 500.
Animasjon 500
Animasjon 500 viser hvordan en Plymouth-fraktbil, som er lastet med vanlig malm, blir losset. Dette er en av de få animasjonene som bruker vindusfunksjonaliteten.
Og slik kan den komplette animasjonen settes sammen.
Dessverre er det fortsatt et problem med den øverste lasteluken, da det aktuelle bitet i grafikktypens informasjon ikke er satt.
Her er noen flere, vakkert animerte sprites fra spillet: