Animații · bei.pm
Formatele de fișier descrise pe această pagină se bazează pe analiza tehnică a proprietății intelectuale de la Dynamix, Inc. și Sierra Entertainment.
Proprietatea intelectuală este astăzi parte a masei Activision Publishing, Inc. / Activision Blizzard, Inc. și este deținută în prezent de Microsoft Corp..
Informațiile au fost adunate prin Inginerie Inversă și Analiza Datelor în scopul arhivării și interoperabilității cu datele istorice.
Nu au fost folosite specificații proprietare sau confidențiale.
Jocul poate fi achiziționat în prezent de la gog.com ca descărcare.
Acum ajungem la clasa regală a disciplinelor din formatele de date Outpost 2:
Animatiile.
Listelor de animație le precede un header global, care servește în principal pentru verificarea datelor. Apoi urmează definițiile concrete ale animațiilor, care se împart în 3 niveluri:
-
Animație
O animație este cea mai înaltă instanță; ea reprezintă o animație a unei unități, a unei clădiri sau a unei 'animații de particule' (impact de cometă, vreme, explozie) într-o anumită situație inițială. -
Cadru
Un cadru este o imagine unică în cadrul unei animații. O animație poate conține unul sau mai multe cadre. -
Subcadru
Un subcadru reprezintă informația că o anumită bitmap trebuie desenată într-o anumită poziție a unui cadru, conform unor criterii specifice. Un cadru poate conține unul sau mai multe subcadre.
Apoi urmează direct definițiile individuale ale animațiilor.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip de date | Denumire | Explicație |
---|---|---|---|
0x0000 | uint(32) | Numărul de animații | Câte seturi de date de animație există |
0x0004 | uint(32) | Numărul de cadre | Câte cadre ar trebui să fie în total |
0x0008 | uint(32) | Numărul de subcadre | Câte subcadre ar trebui să fie în total |
0x000c | uint(32) | Numărul de intrări opționale | Câte "înregistrări opționale" sunt disponibile. |
Animatie
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip de date | Denumire | Explicație |
---|---|---|---|
0x0000 | uint(32) | Necunoscut 1 | Informații necunoscute |
0x0004 | uint(32) | Caseta de delimitare: Stânga | Indică începutul din stânga (în pixeli) al Bounding Box. |
0x0008 | uint(32) | Bounding Box: Sus | Indică începutul superior (în pixeli) al Bounding Box. |
0x000c | uint(32) | Bounding Box: Lățime | Indică lățimea (în pixeli) a Bounding Box. |
0x0010 | uint(32) | Bounding Box: Înălțime | Indică înălțimea (în pixeli) a Bounding Box. |
0x0014 | uint(32) | Decalaj: X | Indică mijlocul horizontal al animației |
0x0018 | uint(32) | Offset: Y | Indică mijlocul vertical al animației |
0x001c | uint(32) | Necunoscut 2 | Informație necunoscută |
0x0020 | uint(32) | Numărul de cadre | Indică câte cadre de animație sunt incluse în această animație |
0x0024 | uint(32) | Numărul de feronerie | Indică câte feronierii trebuie utilizate la desenare |
Datele stratului superior, al animației, sunt în principal date administrative - Boundingbox se referă la coordonatele marcajului din jurul vehiculului/clădirii, atunci când acesta este selectat și indică, de asemenea, care zonă poate fi clicată.
Offset-ul determină în principal „punctul zero”; punctul care trebuie adunat sau scăzut în coordonatele interne ale jocului. Pot să spun și mai matematic: offset-ul se referă aici la originea coordonatelor.
Windows-urile sunt, la fel ca offset-ul, formate din câte 4 valori uint(32) fiecare, ce indică o zonă care este considerată utilizabilă pentru subframe-uri individuale. În afara Windows-urilor, nu se poate desena, cu condiția ca acest lucru să fie prevăzut pentru bitmap.
Cadru
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip de date | Denumire | Explicație |
---|---|---|---|
0x0000 | uint(8) | Numărul subcadrelor și comutator pentru Opțional 1, 2 | Această valoare conține:
|
0x0001 | uint(8) | Necunoscut 1 și Toggle pentru Opțional 3, 4 | Această valoare conține:
|
0x0002 | uint(8) | Opțional 1 | Necunoscut |
0x0003 | uint(8) | Opțional 2 | Necunoscut |
0x0004 | uint(8) | Opțional 3 | Necunoscut |
0x0005 | uint(8) | Opțional 4 | Necunoscut |
Subcadru
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip de date | Denumire | Explicație |
---|---|---|---|
0x0000 | uint(16) | Bitmap-ID | Indică ce bitmap ar trebui folosit pentru acest subcadru |
0x0002 | uint(8) | Necunoscut 1 | Este necunoscut - totuși suspectez puternic că este vorba despre o prioritate de redare (Z-Layer). |
0x0003 | uint(8) | Subframe-Id | Indică în ce subcadru ne aflăm |
0x0004 | sint(16) | Offset - Orizontal | Indică unde în cadrul frame-ului ar trebui plasat subframe-ul sau cu câți pixeli ar trebui mutată bitmap-ul pe orizontală. |
0x0006 | sint(16) | Offset - Vertical | Indică unde în cadrul frame-ului ar trebui să fie plasat subframe-ul sau cu câți pixeli ar trebui să fie mutată bitmap-ul vertical. |
Astfel putem acum să combinăm cadre individuale, precum și animații complete, demonstrând aici, exemplificativ, o animație mai complexă, animația cu indexul 500
Animatie 500
Animatia 500 arată cum un transportor Plymouth, încărcat cu minereu obișnuit, este descărcat. Aceasta este una dintre puținele animații care utilizează funcționalitatea de feronerie.
Și astfel se poate asambla întreaga animație.
Din păcate, există încă o problemă cu hubloul superior, deoarece bitul corespunzător din informațiile despre tipul grafic nu este setat.
Iată câteva alte sprite-uri frumos animate din joc: