Animasjonene · bei.pm

Publisert den 19.11.2015·Oppdatert 13.02.2025·Norwegian (Bokmål)
Denne teksten ble automatisert oversatt av OpenAI GPT-4o Mini.

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:

  1. 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.
  2. Bilde
    Et bilde er et enkelt bilde innen en animasjon. En animasjon kan inneholde ett eller flere bilder.
  3. 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:

  • 0x7F (Bitmaske): Antall subrammer som brukes i denne rammen
  • 0x80: Informasjon om hvorvidt Valgfri 1 og 2 er til stede
0x0001 uint(8) Ukjent 1 og Toggle for Valgfri 3, 4

Denne verdien inneholder:

  • 0x7F (Bitmaske): Ukjent - Jeg mistenker sterkt at dette er antallet gameticks som går før neste frame vises
  • 0x80: Informasjonen om hvorvidt Valgfritt 3 og 4 er til stede
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:

Rendering av animasjon 500 illustrert

Animasjon 500 ferdig satt sammen

Plymouth Byggefabrikk

Eden Romhavn

Eden Medisinsk Senter

SCAT

Plymouth Romhavn

Easteregg:
Julenisse

Easteregg:
Dansende Hund