Анимации · 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) | Ограничивающий прямоугольник: Слева | Указывает левый край (в пикселях) ограничивающего прямоугольника. |
0x0008 | uint(32) | Ограничивающий прямоугольник: Вверх | Указывает верхнее начало (в пикселях) ограничивающей рамки. |
0x000c | uint(32) | Границы: Ширина | Указывает ширину (в пикселях) ограничивающей рамки. |
0x0010 | uint(32) | Границы: Высота | Указывает высоту (в пикселях) ограничивающего прямоугольника. |
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) | Идентификатор битмапа | Указывает, какая битмапа должна использоваться для этого подфрейма |
0x0002 | uint(8) | Неизвестно 1 | Неизвестно - однако я сильно подозреваю, что это связано с приоритетом рендеринга (Z-слой). |
0x0003 | uint(8) | Идентификатор подрамника | Указывает, в каком подфрейме мы находимся |
0x0004 | sint(16) | Смещение - Горизонтальное | Указывает, где внутри фрейма должно быть расположено подфрейм, или на сколько пикселей битмап должен быть смещён по горизонтали. |
0x0006 | sint(16) | Смещение - вертикальное | Указывает, где внутри фрейма должно располагаться подфрейм, или на сколько пикселей битмап должно быть смещено вертикально. |
Теперь мы можем собирать отдельные кадры, а также целые анимации, как это демонстрируется на более сложной анимации с индексом 500
Анимация 500
Анимация 500 показывает, как грузовик Plymouth, загруженный обычным рудами, разгружается. Это одна из немногих анимаций, использующих функцию окон.
Таким образом, можно собрать всю анимацию вместе.
К сожалению, есть еще одна проблема с верхним люком, так как соответствующий
бит в информации о типе графики не установлен.
Вот еще несколько прекрасно анимированных спрайтов из игры: