Animaties · 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.

Nu komen we bij de koningsklasse van de disciplines binnen de Outpost 2 dataformaten:
De animaties.

De animatielijsten worden ingeleid met een globale header, die primair dient voor dataverificatie. Vervolgens volgen de specifieke animatiedefinities, die zijn onderverdeeld in 3 niveaus:

  1. Animatie
    Een animatie is de hoogste instantie; het stelt een animatie van een eenheid, een gebouw of een 'deeltjesanimatie' (kometinslag, weer, explosie) in een bepaalde beginpositie voor.
  2. Frame
    Een frame is een enkel beeld binnen een animatie. Een animatie kan één of meerdere frames bevatten.
  3. Subframe
    Een subframe is de informatie dat een bepaalde bitmap onder bepaalde criteria op een specifieke positie van een frame moet worden getekend. Een frame kan één of meerdere subframes bevatten.

Vervolgens volgen direct de afzonderlijke animatiedefinities.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF teken
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Gegevenstype Benaming Uitleg
0x0000 uint(32) Aantal animaties

Hoeveel animatiedatasets zijn er beschikbaar

0x0004 uint(32) Aantal frames

Hoeveel frames zouden er in totaal aanwezig moeten zijn

0x0008 uint(32) Aantal subframes

Hoeveel subframes er in totaal aanwezig zouden moeten zijn

0x000c uint(32) Aantal optionele invoerwaarden

Hoeveel "optionele invoeren" zijn aanwezig.

Animatie

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF teken
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Gegevenstype Benaming Uitleg
0x0000 uint(32) Onbekend 1

Onbekende informatie

0x0004 uint(32) Afgebakende Box: Links

Geeft de linkse start (in pixels) van de Bounding Box aan.

0x0008 uint(32) Bounding Box: Boven

Geeft de bovenste beginpositie (in pixels) van de Bounding Box aan.

0x000c uint(32) Bounding Box: Breedte

Geeft de breedte (in pixels) van de Bounding Box aan.

0x0010 uint(32) Bounding Box: Hoogte

Geeft de hoogte (in pixels) van de Bounding Box aan.

0x0014 uint(32) Offset: X

Geeft het horizontale middenpunt van de animatie aan

0x0018 uint(32) Offset: Y

Geeft het verticale middelpunt van de animatie aan

0x001c uint(32) Onbekend 2

Onbekende informatie

0x0020 uint(32) Aantal frames

Geeft aan hoeveel animatieframes in deze animatie zijn opgenomen

0x0024 uint(32) Aantal vensters

Geeft aan hoeveel vensters er bij het tekenen moeten worden toegepast

De gegevens van de bovenste laag, de animatie, zijn voornamelijk beheergegevens - de Boundingbox geeft de coördinaten van de markering rondom het voertuig/gebouw aan, wanneer deze is geselecteerd en geeft tegelijkertijd aan welk gebied aanklikbaar moet zijn.

De offset bepaalt voornamelijk het "nulpunt"; het punt dat op de interne spelcoördinaten moet worden opgeteld of afgetrokken. Men zou ook wiskundig kunnen zeggen: de offset verwijst hier naar de coördinaten oorsprong.

De vensters bevatten, net als de offset, elk (per venster) 4 uint(32)-waarden, die een gebied aangeven dat voor individuele subframes als bruikbaar geldt. Buiten de vensters mag, voor zover dit voor de bitmap is voorzien, niet worden getekend.

Frame

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF teken
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Gegevenstype Benaming Uitleg
0x0000 uint(8) Subframe-aantal en Toggle voor Optioneel 1, 2

Deze waarde bevat:

  • 0x7F (Bitmasker): Het aantal subframes dat in dit frame wordt gebruikt
  • 0x80: De informatie over de aanwezigheid van Optioneel 1 en 2
0x0001 uint(8) Onbekend 1 en Toggle voor Optioneel 3, 4

Deze waarde bevat:

  • 0x7F (Bitmasker): Onbekend - Ik vermoed sterk dat dit het aantal gameticks is dat verstrijkt voordat het volgende frame wordt weergegeven
  • 0x80: Informatie over de aanwezigheid van Optioneel 3 en 4
0x0002 uint(8) Optioneel 1

Onbekend

0x0003 uint(8) Optioneel 2

Onbekend

0x0004 uint(8) Optioneel 3

Onbekend

0x0005 uint(8) Optioneel 4

Onbekend

Subframe

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF teken
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Gegevenstype Benaming Uitleg
0x0000 uint(16) Bitmap-ID

Geeft aan welke bitmap voor dit subframe moet worden gebruikt

0x0002 uint(8) Onbekend 1

Het is onbekend - ik vermoed echter sterk dat het hier gaat om een renderprioriteit (Z-laag).

0x0003 uint(8) Subframe-ID

Geeft aan in welk subframe we ons bevinden

0x0004 sint(16) Offset - Horizontaal

Geeft aan waar binnen het frame het subframe geplaatst moet worden, of met hoeveel pixels de bitmap horizontaal verschoven moet worden.

0x0006 sint(16) Offset - Verticaal

Geeft aan waar binnen het frame het subframe geplaatst moet worden, of met hoeveel pixels de bitmap verticaal verschoven moet worden.

Zo kunnen we nu individuele frames evenals complete animaties samenstellen, hier exemplaarmatig gedemonstreerd aan een complexere animatie, de animatie met index 500.

Animatie 500

Animatie 500 laat zien hoe een Plymouth-vrachtwagen, die geladen is met gewone ertsen, wordt gelost. Dit is een van de weinige animaties die de vensterfunctionaliteit benut.

En zo kan de complete animatie worden samengevoegd.
Helaas is er nog een probleem met het bovenste laadluik, omdat hier de bijbehorende bit in de grafiektype-informatie niet is ingesteld.

Hier zijn nog een paar andere prachtig geanimeerde sprites uit het spel:

Rendering van animatie 500 geïllustreerd

Animatie 500 volledig samengevoegd

Plymouth Gebouw-Fabriek

Eden Ruimtehaven

Eden Medisch Centrum

SCAT

Plymouth Ruimtehaven

Easteregg:
Kerstman

Easteregg:
Dans Hond