Анимации · bei.pm
Форматите на файловете, описани на тази страница, се основават на техническия анализ на интелектуалната собственост на Dynamix, Inc. и Sierra Entertainment.
Интелектуалната собственост днес е част от масата на Activision Publishing, Inc. / Activision Blizzard, Inc. и в момента е собственост на Microsoft Corp..
Информацията е събрана чрез обратен инженеринг и анализ на данни с цел архивиране и интероперативност с исторически данни.
Не са използвани собствени или конфиденциални спецификации.
Играта може в момента да бъде закупена за изтегляне на gog.com.
Сега преминаваме към кралския клас на дисциплините в данните на Outpost 2:
Анимациите.
Списъците с анимации започват с глобален заглавен ред, който служи основно за верификация на данните. Следват конкретните определения на анимациите, които се разделят на 3 нива:
-
Анимация
Анимацията е най-висшата инстанция; тя представлява анимация на единица, сграда или "частична анимация" (кометен удар, време, взрив) в определена изходна ситуация. -
Кадър
Кадърът е едно единствено изображение в рамките на анимацията. Анимацията може да включва един или повече кадри. -
Подкадър
Подкадрите съдържат информация за това, че определена битмап трябва да бъде нарисувана на определена позиция на кадъра при определени критерии. Един кадър може да включва един или повече подкадри.
След това следват самите определения на анимацията.
Адрес | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | символи | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Офсет | Тип данни | Надпис | Обяснение |
---|---|---|---|
0x0000 | uint(32) | Брой анимации | Колко анимационни записи има налични |
0x0004 | uint(32) | Брой на кадрите | Колко кадъра общо трябва да бъдат налични |
0x0008 | uint(32) | Брой подрамки | Колко подрамки общо трябва да присъстват |
0x000c | uint(32) | Брой опционални записи | Колко "опционални записи" са налични. |
Анимация
Адрес | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | символи | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Офсет | Тип данни | Надпис | Обяснение |
---|---|---|---|
0x0000 | uint(32) | Неизвестен 1 | Неизвестна информация |
0x0004 | uint(32) | Граници на кутията: Ляво | Посочва лявото начало (в пиксели) на Bounding Box. |
0x0008 | uint(32) | Ограничителна кутия: Отгоре | Указва горния старт (в пиксели) на Bounding Box. |
0x000c | uint(32) | Ограничителна кутия: Ширина | Посочва ширината (в пиксели) на ограничителната кутия. |
0x0010 | uint(32) | Ограждаща кутия: Височина | Посочва височината (в пиксели) на Bounding Box. |
0x0014 | uint(32) | Офсет: X | Посочва хоризонталния център на анимацията |
0x0018 | uint(32) | Офсет: Y | Посочва вертикалния център на анимацията |
0x001c | uint(32) | Неизвестен 2 | Непозната информация |
0x0020 | uint(32) | Брой на кадрите | Посочва колко анимационни кадъра са включени в тази анимация |
0x0024 | uint(32) | Брой прозорци | Посочва колко прозорци да се използват при рисуване |
Данните на най-горния слой, анимацията, представляват предимно административни данни - Boundingbox обозначава координатите на маркировката около превозното средство/сградата, когато то е избрано, и също така указва коя област трябва да бъде кликаема.
Офсетът определя предимно "нулевата точка"; точката, която трябва да се изчисли спрямо вътрешните координати на играта или да се извади. Може да се каже и математически: офсетът тук обозначава координатния произход.
При прозорците става въпрос, както и при офсета, за по 4 uint(32)-стойности за всяко прозорче, които определят област, която е валидна за отделни субфреймове. Извън прозорците не трябва, освен ако не е предвидено за битовата карта, да се рисува.
Рамка
Адрес | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | символи | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Офсет | Тип данни | Надпис | Обяснение |
---|---|---|---|
0x0000 | uint(8) | Брой подрамки и превключвател за Опционален 1, 2 | Тази стойност съдържа:
|
0x0001 | uint(8) | Неизвестно 1 и превключвател за Опционален 3, 4 | Тази стойност съдържа:
|
0x0002 | uint(8) | Опционално 1 | Неизвестно |
0x0003 | uint(8) | Опционално 2 | Неизвестно |
0x0004 | uint(8) | Опционално 3 | Неизвестно |
0x0005 | uint(8) | По избор 4 | Неизвестно |
Подрамка
Адрес | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | символи | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Офсет | Тип данни | Надпис | Обяснение |
---|---|---|---|
0x0000 | uint(16) | Bitmap-ID | Посочва коя битмап да се използва за този подрамка |
0x0002 | uint(8) | Неизвестен 1 | Не е известно - все пак силно подозирам, че става въпрос за приоритет на рендериране (Z-слой). |
0x0003 | uint(8) | Подрамка-ИД | Посочва в кой подрамка се намираме |
0x0004 | sint(16) | Офсет - Хоризонтален | Посочва къде в рамката да бъде разположен подсрамката, или с колко пиксела да бъде преместена битовата карта хоризонтално. |
0x0006 | sint(16) | Офсет - Вертикален | Указва къде в рамката да бъде поставен подрамката или с колко пиксела да бъде вертикално преместена битовата карта |
С това можем да комбинираме отделни рамки, както и цели анимации, тук ще демонстрираме на примера на една по-сложна анимация, анимацията с индекс 500
Анимация 500
Анимация 500 показва как един Plymouth транспортен автомобил, натоварен с обикновен рудник, се разтоварва. Това е една от малкото анимации, които използват функционалността на прозорците.
И така, можем да съберем цялата анимация заедно.
За съжаление, все още има проблем с горния товарен люк, тъй като съответният бит в информацията за графичния тип не е зададен.
Ето и няколко допълнителни, прекрасно анимирани спрайта от играта: