Анімації · 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 позначає координати мітки навколо транспортного засобу/будівлі, коли вона вибрана, і також вказує, яка область має бути активною для кліку.
Зміщення (offset) в основному визначає "нулеву точку"; точку, яку потрібно враховувати або віднімати для внутрішніх координат гри. Можна також сказати більш математично: зміщення тут позначає координатний початок.
Вікна аналогічно до зміщення складаються з 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, завантажена звичайною рудою, розвантажується. Це одна з небагатьох анімацій, яка використовує функціональність вікон.
Отже, можна зібрати всю анімацію разом.
На жаль, є ще одна проблема з верхнім люком, оскільки відповідний біт у інформації про тип графіки не встановлений.
Ось ще кілька інших, чудово анімованих спрайтів з гри: