Płytki · 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.

Adres x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Przesunięcie Typ danych Nazwa Wyjaśnienie
0x0000 uint(32) Bajty Magiczne
0x0004 uint(24) Długość bloku
0x0007 uint(8) Flagi

Tiles to specyficzny format grafiki bitmapowej dla Outpost-2. Obejmuje 13 zestawów tiles, zwanych "studniami" (well0000.bmp do well0012.bmp), które znajdują się w woluminie maps.vol.

Zestawy tiles / studnie zawierają następujące elementy:

Nazwa pliku Treść
well0000.bmp Grafika o wymiarach 32x32px w kolorze niebieskim - idealna do testowania, czy własny loader obrazów działa
well0001.bmp Zawiera jasne skały, łańcuchy górskie na jasnych skałach oraz niezliczone warianty kraterów uderzeniowych w jasne skały
well0002.bmp Zawiera 'Doodady' z jasnych skał - elementy, które mogą być umieszczane na jasnych skałach dla urozmaicenia (lub celowo jako struktura, jak np. mury), w tym roślinność
well0003.bmp Zawiera strukturę przypominającą skorupę na jasnych skałach
well0004.bmp Zawiera ciemne skały, łańcuchy górskie na ciemnych skałach oraz niezliczone warianty kraterów uderzeniowych w ciemne skały
well0005.bmp Zawiera 'Doodady' z ciemnych skał - elementy, które mogą być umieszczane na ciemnych skałach dla urozmaicenia (lub celowo jako struktura, jak np. mury)
well0006.bmp Zawiera strukturę przypominającą skorupę na ciemnych skałach oraz przejścia między jasnymi a ciemnymi skałami
well0007.bmp Zawiera lawę, w tym po 4-5 klatek animacji dla każdej z nich
well0008.bmp Zawiera piasek oraz niezliczone warianty kraterów uderzeniowych w piasku
well0009.bmp Zawiera 'Doodady' z piasku - elementy, które mogą być umieszczane na piasku dla urozmaicenia (lub celowo jako struktura, jak np. mury)
well0010.bmp Zawiera 48 przejść z piasku do jasnych i ciemnych skał
well0011.bmp Zawiera pokrywy polarne mapy, z ciemnymi skałami jako podłożem
well0012.bmp Zawiera pokrywy polarne mapy, z jasnymi skałami jako podłożem

Jest to zalecane dla dokładnej realizacji, aby nie renderować kafli z wyprzedzeniem w celu ich buforowania, ponieważ dane dotyczące cyklu dnia/nocy muszą być jeszcze przetworzone - a danych byłoby naprawdę bardzo dużo.

Kafle to grafiki 8bpp z paletą indeksowaną o rozdzielczości 32x32 pikseli, które są ułożone w stos. W tak powstałym zestawie kafli może być jednak znacznie więcej

Główny kontener składa się z 2 sekcji: head i data.

Nagłówek Płytek

Adres x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Przesunięcie Typ danych Nazwa Wyjaśnienie
0x0000 uint(32) Bajty Magiczne
0x0004 uint(24) Długość bloku
0x0007 uint(8) Flagi
0x0008 uint(32) Wersja / Flagi?

Może to być oznaczenie wersji formatu pliku; we wszystkich plikach, które posiadam, znajdowała się wartość 0x02

0x000c uint(32) Szerokość (Rozdzielczość pozioma)

Określa, jak szeroki jest plik graficzny (w pikselach).

W przypadku wszystkich studni w Outpost 2 wartość 0x20 lub 32 będzie oczekiwana.

0x0010 uint(32) Wysokość (Rozdzielczość pionowa)

Określa wysokość pliku graficznego (w pikselach).

Wszystkie studnie w Outpost 2 powinny mieć tu wartość 0x20 lub 32.

0x0014 uint(32) Głębokość kolorów?

Znaczenie tej wartości jest nieznane.

Ponieważ we wszystkich sprawdzonych plikach zawiera wartość 8, może to być oznaczenie głębi koloru.

0x0018 uint(32) Głębokość koloru 2?

Znaczenie tej wartości jest nieznane.

Może to być głębokość koloru 'docelowego'.

Zgodnie z tymi danymi, następnie dostępny będzie plik palety w standardowym formacie RIFF. Dokładna specyfikacja znajduje się - ponieważ palety pojawiają się także w innych miejscach - pod Palety.

Dane Płytek

Adres x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Przesunięcie Typ danych Nazwa Wyjaśnienie
0x0000 uint(32) Bajty Magiczne
0x0004 uint(24) Długość bloku
0x0007 uint(8) Flagi

W końcu następują surowe dane pikseli, od lewego górnego rogu, wierszami do prawego dolnego rogu.
Wartość danych w grafikach, które zazwyczaj występują jako bitmapy 8bpp, odpowiada indeksowi koloru w palecie kolorów.

Dane pikseli zaczynają się w lewym górnym rogu i kończą w prawym dolnym rogu.

Silnik gry prawdopodobnie rysuje kafelki *na żądanie*.
Wydaje się to być związane z cyklem dnia i nocy, który zna 32 stopnie poszczególnych kafelków. Wygląda na to, że od wartości jasności odejmowane jest 'trochę'. Dokładne wartości nie zostały jeszcze ustalone, pracuję na podstawie obliczeń

v *= (daylight / 48) + 0.25;

za pomocą danych HSV pikseli, gdzie daylight to wartość od 0 do 31, a v to wartość między 0 a 1. Należy również wziąć pod uwagę, że na mapie istnieje dodatkowo margines 16 kafelków po lewej i prawej stronie (służy to niewidzialnemu pojawianiu się jednostek).

Dodatkowo wydaje się, że cykl dnia i nocy aktualizuje tylko jedną kolumnę mapy w każdym cyklu gry.
Przyspieszony cykl dnia i nocy wygląda zatem następująco:

Wizualizacja cyklu dnia i nocy