Animacje · bei.pm

Opublikowano 19.11.2015·Zaktualizowano 13.02.2025·Polski
Ten tekst został automatycznie przetłumaczony przez OpenAI GPT-4o Mini.

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:

  1. Animacja
    Animacja to najwyższa instancja; przedstawia animację jednostki, budynku lub 'animacji cząsteczkowej' (uderzenie komety, pogoda, wybuch) w określonej sytuacji początkowej.
  2. Klucz
    Klucz to pojedynczy obrazek w ramach animacji. Animacja może zawierać jeden lub więcej kluczy.
  3. 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:

  • 0x7F (Maska bitowa): Liczba podramków używanych w tej ramce
  • 0x80: Informacja o tym, czy Opcjonalne 1 i 2 są obecne
0x0001 uint(8) Nieznane 1 oraz przełącznik dla Opcjonalny 3, 4

Ta wartość zawiera:

  • 0x7F (Maska bitowa): Nieznane - Mocno podejrzewam, że chodzi o liczbę gameticków, które upłyną, zanim zostanie wyświetlona następna klatka
  • 0x80: Informacja o tym, czy Opcjonalne 3 i 4 są obecne
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:

Renderowanie animacji 500 ilustrowane

Animacja 500 gotowa do połączenia

Fabryka budynków Plymouth

Port kosmiczny Eden

Centrum medyczne Eden

SCAT

Port kosmiczny Plymouth

Easteregg:
Mikołaj

Easteregg:
Piesek Dans