Файловая структура Fallout 2

Описание файловой структуры Fallout 2.

Автор оригинальной версии документа: Serge, unDAT division (w_master@softhome.net). Авторы изменений: Perceptron, TeamX (perceptron@pisem.net), Wasteland Ghost, TeamX (wasteland_ghost@mail.ru).

В статье также использованы материалы исследований Red! (red_nnnno@hotmail.com).

1. Типы файлов

ТипКомментарий
AAF - шрифты.
ACM - музыка, речь и спецэффекты.
BIO - биографии стартовых персонажей.
CFG - в master.dat\art\cuts\ это файлы настроек видеороликов, в директории игры это файл настроек игры (fallout2.cfg).
DAT - в директории игры это архивы с ресурсами, save.dat (в сохранёнках) - данные сохранённой игры, worldmap.dat (см. ниже) - данные о карте мира.
FON - немасштабируемые шрифты.
FRM - картинки, могут быть анимированными. FR0, FR1, FR2, FR3, FR4, FR5 - анимация существ в одном из шести направлений.
GAM - файлы, содержащие информацию о переменных игры.
GCD - содержат характеристики стартовых персонажей.
INT - скомпилированные скрипты.
LIP - файлы, необходимые для синхронизации озвучки и мимики "говорящих голов".
LST - список файлов соответствующей директории, нужны для присвоения каждому файлу своего номера.
MAP - карты местности.
MSG - текстовые файлы.
MSK - маски для карты мира.
MVE - видеоролики.
PAL - палитра.
PRO - прототипы объектов игры.
RIX - загрузочные картинки.
SAV - карты городов в сохраненных играх.
SVE - субтитры для видеороликов.
TXT - текстовые файлы со служебной информацией (формат каждого описан отдельно), либо просто текст.

2. Структура ресурсов игры

Основные ресурсы игры располагаются в dat-файлах (архивах) master.dat и critter.dat. Патч находится в архиве patchXXX.dat (см. п. 3). Сохранённые игры, изменённые файлы и музыка находятся в директории ...\FALLOUT2\DATA\.

Существует стандартная структура директорий, в которых игра ищет свои файлы (она одинакова для master.dat, critter.dat, patchXXX.dat и директории ...\FALLOUT2\DATA\):

    \ - в корневой директории лежат шрифты и палитра игры.
    |
    +ART\ - в этой директории лежит графика игры - картинки, анимация, видео.
      |
      +BACKGRND\ - картинки фона для "говорящих голов" - для различных локаций.
      +CRITTERS\ - анимация персонажей игры (см. в critter.dat).
      +CUTS\ - видеоролики.
      +HEADS\ - анимация для "говорящих голов".
      +INTRFACE\ - картинки интерфейса игры.
      +INVEN\ - картинки предметов в инвентаре.
      +ITEMS\ - картинки предметов на земле.
      +MISC\ - картинки "прочих" объектов.
      +SCENERY\ - картинки объектов окружения.
      +SKILLDEX\ - картинки характеристик (PIPboy).
      +SPLASH\ - загрузочные картинки.
      +TILES\ - тайлы пола и потолка зданий.
      +WALLS\ - стены зданий.
    |
    +DATA\ - директория игровых данных.
    +MAPS\ - карты местности.
    +PREMADE\ - файлы, описывающие стандартных стартовых персонажей игры.
    +PROTO\ - прототипы (профили) следующих объектов игры:
      |
      +CRITTERS\ - существа.
      +ITEMS\ - предметы.
      +MISC\ - "прочие" объекты.
      +SCENERY\ - объекты окружения.
      +TILES\ - плитки (тайлы) пола и потолка.
      +WALLS\ - стены.
    |
    +SCRIPTS\ - скомпилированные скрипты.
    +SOUND\ - речь и спецэффекты.
      |
      +SFX\ - спецэффекты (звуки предметов, оружия и т.д.).
      +SPEECH\ - речь "говорящих голов".
        |
        +BOSSS\ - Френк Хорриган.
        +ELDER\ - Старейшина.
        +HAKU2\ - Хакунин (умирающий).
        +HAKUN\ - Хакунин.
        +HRLD2\ - Гарольд.
        +LYNET\ - Линетт.
        +MRCUS\ - Маркус.
        +MYRON\ - Майрон.
        +NARRATOR\ - Рассказчик.
        +POWER\ - Анклавовец.
        +PRESI\ - Президент.
        +SULIK\ - Сулик.
        +TNDI2\ - Танди.
    |
    +TEXT\ENGLISH\ - текстовые файлы (файлы сообщений).
      |
      +CUTS\ - субтитры для видеороликов.
      +DIALOG\ - диалоги и сообщения.
      +GAME\ - текст, относящийся к интерфейсу игры.

Примечания:

Пути к музыке указываются отдельно в fallout2.cfg (она не хранится в DAT-файлах). К файлам игры также относится worldmap.dat, который игра создаёт сама и записывает в первый доступный корень (см. п. 3).

Cохранёнки игра кладет в [master_patches]\SAVEGAME\SLOTXX, где XX - номер слота (01 - 10). В слотах лежат файлы SAV, файл SAVE.DAT, файл AUTOMAP.SAV и в папках proto\items\, proto\critters\ лежат файлы PRO.

3. Порядок загрузки файлов игрой

Замечание: пути к ресурсам указываются в файле fallout2.cfg.

Игра загружает свои файлы в следующем порядке (из исследований Red'а):

    0. SAVEGAME (сохранённые игры, обычно лежат в ..\FALLOUT2\DATA\)
    1. patchXXX.dat (файл патча)
    2. critter_patches (обычно это ..\FALLOUT2\DATA\)
    3. critter_dat (обычно это ..\FALLOUT2\DATA\critter.dat)
    4. master_patches (обычно это ..\FALLOUT2\DATA\)
    5. master_dat (обычно это ..\FALLOUT2\DATA\master.dat)
    6. текущая директория (обычно это директория игры, т.е. ..\FALLOUT2\)
    7. если найти данные не получилось, движок пытается продолжить без них - настолько изящно, насколько может.

Обратите внимание на очень важный факт, следующий из этого списка: если вы грузите сохранённую игру, то в первую очередь файлы берутся именно из неё! Затем из patchXXX.dat и только затем из директории DATA. Поскольку изменённые в процессе моддинга файлы обычно сохраняются именно в директории DATA, чтобы увидеть свои изменения, вам скорее всего придётся, во-первых, начать новую игру, а во-вторых - избавиться от patchXXX.dat, например, распаковав его предварительно в ту же директорию DATA. Подробнее о подготовке Fallout2 к моддингу можно узнать из FAQ.

Название patchXXX.dat означает, что движок на самом деле ищет в текущей директории файлы с именами от patch000.dat до patch998.dat с шагом 2, т.е. только с чётными номерами - patch000.dat, patch0002.dat, ..., patch998.dat. Посте того, как первый файл обнаружен, движок останавливается и последующие патчи уже не ищет.

Запомните, чтобы вы могли сохраняться, critter_patches и master_patches должны указывать на одну и ту же директорию!

Еще одна неприятная особенность игры заключается в том, что игра удаляет все [master_patches]\proto\items\*.pro и [master_patches]\proto\critters\*.pro! Решение этой проблемы, а также подробности о работе движка с ресурсами и способы оптимизации их загрузки, можно узнать из исследований Red'а "Как движок Fallout2 ищет свои ресурсы".