Animacje · bei.pm
Opisywane na tej stronie formaty plików opierają się na analizie technicznej własności intelektualnej Dynamix, Inc. oraz Sierra Entertainment.
Własność intelektualna jest obecnie częścią majątku Activision Publishing, Inc. / Activision Blizzard, Inc. i jest aktualnie w posiadaniu Microsoft Corp..
Informacje zostały zebrane poprzez inżynierię odwrotną oraz analizę danych w celach archiwizacji i interoperacyjności z danymi historycznymi.
Nie wykorzystano żadnych zastrzeżonych ani poufnych specyfikacji.
Gra jest obecnie dostępna do zakupu jako pobranie na stronie gog.com.
Teraz przechodzimy do królewskiej klasy dyscyplin w formatach danych Outpost 2:
Do animacji.
Listy animacji rozpoczynają się od globalnego nagłówka, który służy głównie do weryfikacji danych. Następnie pojawiają się konkretne definicje animacji, które dzielą się na 3 poziomy:
-
Animacja
Animacja to najwyższa instancja; przedstawia animację jednostki, budynku lub 'animacji cząsteczkowej' (uderzenie komety, pogoda, wybuch) w określonej sytuacji początkowej. -
Klucz
Klucz to pojedynczy obrazek w ramach animacji. Animacja może zawierać jeden lub więcej kluczy. -
Podklucz
Podklucz to informacja o tym, że określona bitmapa ma być rysowana w określonej pozycji klucza według określonych kryteriów. Klucz może zawierać jeden lub więcej podkluczy.
Następnie pojawiają się już bezpośrednio poszczególne definicje animacji.
Adres | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Liczba animacji | Ile jest dostępnych zestawów danych animacji |
0x0004 | uint(32) | Liczba klatek | Ile klatek powinno być łącznie dostępnych |
0x0008 | uint(32) | Liczba subramków | Ile subramków powinno być łącznie dostępnych |
0x000c | uint(32) | Liczba opcjonalnych wpisów | Ile jest "opcjonalnych wpisów". |
Animacja
Adres | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Nieznane 1 | Nieznane informacje |
0x0004 | uint(32) | Ramka ograniczająca: Lewo | Określa lewy początek (w pikselach) Bounding Box. |
0x0008 | uint(32) | Bounding Box: Góra | Określa górny początek (w pikselach) Bounding Box. |
0x000c | uint(32) | Bounding Box: Szerokość | Określa szerokość (w pikselach) Bounding Box. |
0x0010 | uint(32) | Bounding Box: Wysokość | Podaje wysokość (w pikselach) Bounding Box. |
0x0014 | uint(32) | Przesunięcie: X | Określa poziomy środek animacji |
0x0018 | uint(32) | Przesunięcie: Y | Określa pionowy środek animacji |
0x001c | uint(32) | Nieznany 2 | Nieznane informacje |
0x0020 | uint(32) | Liczba klatek | Określa, ile klatek animacji zawiera ta animacja |
0x0024 | uint(32) | Liczba okien | Określa, ile okien należy zastosować podczas rysowania |
Dane najwyższej warstwy animacji to przede wszystkim dane administracyjne - Boundingbox oznacza współrzędne oznaczenia wokół pojazdu/budynku, kiedy jest on wybrany, i jednocześnie wskazuje, który obszar powinien być klikalny.
Offset przede wszystkim określa "punkt zerowy"; punkt, który należy dodać lub odjąć od współrzędnych wewnętrznych gry. Można to również ująć matematycznie: offset tutaj oznacza oryginał współrzędnych.
W przypadku okien, podobnie jak w przypadku offsetu, mamy do czynienia z 4 wartościami uint(32) dla każdego okna, które określają obszar uznawany za użyteczny dla poszczególnych subframe'ów. Poza oknami nie wolno rysować, o ile nie jest to odpowiednio przewidziane dla bitmapy.
Ramka
Adres | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(8) | Liczba podramion i przełącznik dla Opcjonalne 1, 2 | Ta wartość zawiera:
|
0x0001 | uint(8) | Nieznane 1 oraz przełącznik dla Opcjonalny 3, 4 | Ta wartość zawiera:
|
0x0002 | uint(8) | Opcjonalne 1 | Nieznany |
0x0003 | uint(8) | Opcjonalny 2 | Nieznany |
0x0004 | uint(8) | Opcjonalny 3 | Nieznany |
0x0005 | uint(8) | Opcjonalny 4 | Nieznany |
Podramka
Adres | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(16) | Bitmap-Id | Określa, która bitmapa ma być użyta dla tego podramki |
0x0002 | uint(8) | Nieznane 1 | Jest nieznane - jednak mocno przypuszczam, że chodzi tutaj o priorytet renderowania (Z-Warstwa). |
0x0003 | uint(8) | Subframe-Id | Określa, w którym subramce się znajdujemy |
0x0004 | sint(16) | Przesunięcie - Poziome | Określa, gdzie w obrębie ramki ma być umieszczony subframe, lub o ile pikseli bitmapa ma być przesunięta w poziomie. |
0x0006 | sint(16) | Offset - Wertykalny | Określa, gdzie wewnątrz ramki ma być umieszczona podramka, lub o ile pikseli bitmapa ma być przesunięta w pionie. |
Dzięki temu możemy teraz łączyć pojedyncze klatki oraz całe animacje, co zostało zaprezentowane na przykładzie bardziej złożonej animacji o indeksie 500.
Animacja 500
Animacja 500 pokazuje, jak transportowiec Plymouth, załadowany standardowym rudzikiem, jest rozładowywany. Jest to jedna z niewielu animacji, która wykorzystuje funkcjonalność okienkową.
I tak można połączyć całą animację.
Niestety, wciąż istnieje problem z górnym włazem ładunkowym, ponieważ odpowiedni bit w informacji o typie grafiki nie jest ustawiony.
Oto jeszcze kilka innych, pięknie animowanych sprite'ów z gry: