Плитки · bei.pm

Опубликовано 19.11.2015·Обновлено 13.02.2025·Русский
Этот текст был автоматизированно переведен с помощью OpenAI GPT-4o Mini.

Форматы файлов, описанные на этой странице, основаны на техническом анализе интеллектуальной собственности Dynamix, Inc. и Sierra Entertainment.
Интеллектуальная собственность сегодня является частью активов Activision Publishing, Inc. / Activision Blizzard, Inc. и в настоящее время находится в собственности Microsoft Corp..

Информация была собрана с помощью обратного проектирования и анализа данных с целью архивирования и обеспечения совместимости с историческими данными.
Не использовались никакие собственнические или конфиденциальные спецификации.

Игра в настоящее время доступна для покупки в виде загрузки на gog.com.

Адр x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF симв.
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Смещение Тип данных Наименование Объяснение
0x0000 uint(32) Магические байты
0x0004 uint(24) Длина блока
0x0007 uint(8) Флаги

Тайлы представляют собой специфический для Outpost-2 формат графики в битмапе. Они охватывают 13 тайлсетов, называемых "колодцами" (well0000.bmp до well0012.bmp), которые находятся внутри объема maps.vol.

При этом тайлсеты / колодцы содержат следующее:

Имя файла Содержимое
well0000.bmp Графика размером 32x32 пикселя, синего цвета - идеально подходит для тестирования, работает ли ваш загрузчик изображений
well0001.bmp Содержит светлые камни, горные хребты на светлом камне и бесчисленные варианты кратеров удара на светлом камне
well0002.bmp Содержит элементы 'Doodads' светлого камня - то есть элементы, которые могут быть размещены для разбавления (или специально в качестве структуры, например, стен) на светлом камне, включая растительность
well0003.bmp Содержит коркообразную структуру на светлом камне
well0004.bmp Содержит темные камни, горные хребты на темном камне и бесчисленные варианты кратеров удара на темном камне
well0005.bmp Содержит элементы 'Doodads' темного камня - то есть элементы, которые могут быть размещены для разбавления (или специально в качестве структуры, например, стен) на темном камне
well0006.bmp Содержит коркообразную структуру на темном камне, а также переходы между светлым и темным камнем
well0007.bmp Содержит лаву, включая по 4-5 кадров анимации
well0008.bmp Содержит песок и бесчисленные варианты кратеров удара на песке
well0009.bmp Содержит элементы 'Doodads' песка - то есть элементы, которые могут быть размещены для разбавления (или специально в качестве структуры, например, стен) на песке
well0010.bmp Содержит по 48 переходов от песка к светлому и темному камню
well0011.bmp Содержит полярные шапки карты, с темным камнем в качестве фона
well0012.bmp Содержит полярные шапки карты, со светлым камнем в качестве фона

Рекомендуется для точного выполнения не рендерить тайлы заранее для кэширования, так как данные для цикла день/ночь еще должны быть обработаны - и возникло бы слишком много данных.

Тайлы представляют собой графики с глубиной цвета 8 бит на пиксель с индексированной палитрой размером 32x32 пикселя, которые расположены друг под другом. Однако в таком созданном тайлсете может быть значительно больше

Главный контейнер состоит из 2 секций: head и data.

Заголовок плитки

Адр x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF симв.
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Смещение Тип данных Наименование Объяснение
0x0000 uint(32) Магические байты
0x0004 uint(24) Длина блока
0x0007 uint(8) Флаги
0x0008 uint(32) Версия / Флаги?

Здесь может быть указана версия формата файла; во всех доступных мне файлах значение было 0x02

0x000c uint(32) Ширина (горизонтальное разрешение)

Указывает, насколько широк файл изображения (в пикселях).

Для всех скважин из Outpost 2 здесь следует ожидать значение 0x20 или 32.

0x0010 uint(32) Высота (Вертикальное разрешение)

Указывает, насколько высок файл изображения (в пикселях).

Для всех колодцев в Outpost 2 здесь ожидается значение 0x20 или 32.

0x0014 uint(32) Глубина цвета?

Значение этого параметра неизвестно.

Поскольку во всех проверенных файлах содержится значение 8, это может быть указанием на глубину цвета.

0x0018 uint(32) Глубина цвета 2?

Значение этого параметра неизвестно.

Возможно, это 'целевое' цветовое разрешение.

После этих данных будет представлена палитра в стандартизированном формате RIFF. Точное описание можно найти - так как палитры встречаются и в других местах - по адресу Палитры.

Данные плитки

Адр x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF симв.
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Смещение Тип данных Наименование Объяснение
0x0000 uint(32) Магические байты
0x0004 uint(24) Длина блока
0x0007 uint(8) Флаги

В конце концов, следуют чистые пиксельные данные, начиная с верхнего левого угла и движущиеся по строкам к нижнему правому углу.
Значение данных для графиков, которые обычно представлены в формате 8bpp-битмап, соответствует индексу цвета в цветовой палитре.

Пиксельные данные начинаются с верхнего левого угла и заканчиваются в нижнем правом.

Игровой движок, вероятно, рисует тайлы по запросу.
Это, среди прочего, связано с циклом дня и ночи, который имеет 32 градации отдельных тайлов. При этом, судя по всему, от значения яркости отнимается 'немного'. Точные значения пока не удалось определить, я работаю на основе расчётов

v *= (daylight / 48) + 0.25;

с данными HSV пикселей, где daylight — это значение от 0 до 31, а v — значение от 0 до 1. Кроме того, следует учитывать, что на карте по бокам есть граница из 16 тайлов (она служит для невидимого появления юнитов).

Кроме того, цикл дня и ночи, похоже, обновляет только одну колонку карты за игровой цикл.
Ускоренный цикл дня и ночи выглядит следующим образом:

Визуализация цикла дня и ночи