Raw file

Материал из Dwarf Fortress Wiki
(перенаправлено с «Raw-файл»)
Перейти к навигацииПерейти к поиску

Raw-файлы — это текстовые файлы, которые находятся в папках <Dwarf Fortress>\data\vanilla\ (используются при генерации мира) и в сейвах уже сформированных миров. Эти файлы можно просматривать, чтобы выяснить различные особенности предметов, материалов и существ, и можно редактировать для изменения поведения игры. Некоторые игроки называют их просто: "raw" или "равки".

Подпапки в data\vanilla\*_graphics используется для хранения настраиваемых пользователем наборов графики. Папка data\vanilla\interaction examples содержит полезные примеры по моддингу, а файлы в ней полностью игнорируются игрой.

Dwarf Fortress не является программой с открытым исходным кодом, поэтому её моддинг в основном ограничивается правкой raw-файлов или хаком.

Дублирование raw-файлов может привести к ряду ошибок, и даже вылету.

Синтаксис raw-файлов

filename

[OBJECT:TYPE]

[TYPE:ID] 
<...contents...>

filename — это копия имени raw-файла, только без расширения .txt; каждый raw-файл должен начинаться с этого имени. Имя начинается с определённого префикса в зависимости от типа (см. ниже).

TYPE — это тип, ключевое слово, которое указывает игре, какие объекты определяются в raw-файле (см. ниже). Отдельный raw-файл может (и должен) иметь только один тип OBJECT:TYPE.

ID — это уникальный идентификатор для выделения подклассов объектов (Например, [CREATURE:DOG], ID=DOG or [ITEM:ITEM_WEAPON_SWORD], ID=ITEM_WEAPON_SWORD).

Типы содержимого

  • BODY — части тела и их структура; префикс названия файла body_.
  • BODY_DETAIL_PLAN — подобно CREATURE_VARIATION, но используется для приписания токенов, связанных с частями тела (особенно материалы, ткани, позиции частей тела и откуда они растут, относительные размеры и т.д.); префикс названия файла b_detail_plan_.
  • BUILDING — настройка мастерских и плавилен; префикс названия файла building_.
  • CREATUREсущества; префикс названия файла creature_.
  • CREATURE_VARIATION — изменения существ (как правило, создание гигантов или антропоморфных существ). Технически, это наборы токенов, которые добавляются или удаляются из описания существа (в основном шаблонные изменения, вроде добавления пары рук); префикс названия файла c_variation_.
  • DESCRIPTOR_COLOR (основной токен [COLOR]) — цвет для использования с DESCRIPTOR_PATTERN (другое назначение неизвестно); префикс названия файла descriptor_color_.
  • DESCRIPTOR_PATTERN (основной токен [COLOR_PATTERN]) — шаблоны цветовых комбинаций для использования с существами; префикс названия файла descriptor_pattern_.
  • DESCRIPTOR_SHAPE (основной токен [SHAPE]) — описания форм; префикс названия файла descriptor_shape_. В прошлых версиях использовались для гравюр.
  • ENTITY — типы цивилизаций (и не только, в общем смысле сообществ), с заданными расами, языком, культурой, этикой и социальной структурой; префикс названия файла entity_.
  • GRAPHICS — графические тайлы существ. В папке raw/objects отсутствуют; префикс названия файла graphics_.
  • INTERACTION — файлы интеракций; префикс названия файла interaction_.
  • INORGANIC — определения неорганических материалов; префикс названия файла inorganic_.
  • ITEMпредметы, от снарядов до еды, подвиды задаются с помощью [TYPE:ID]; префикс названия файла item_.
  • LANGUAGE — определения слов, используемое для сообществ (ENTITY); префикс названия файла language_.
    • Записи, начинающиеся с [SYMBOL:ID] разделяют слова на символические/поэтические группы, чтобы потом сообщества могло ссылаться на них как на свои предпочтения.
    • Записи, начинающиеся с [WORD:ID] определяют слова и их альтернативные формы (уже на английском).
  • MATERIAL_TEMPLATE — определяет свойства, общие для группы материалов; префикс названия файла material_template_.
  • MUSIC — назначает музыкальные файлы фоновым и событийным музыкальным меткам, моддинг в настоящее время очень ограничен; префикс названия файла music_.
  • PALETTE — определяет цветовую палитру и связывает эти цвета с файлом изображения, содержащим образцы цветов; префикс названия файла palette_.
  • PLANT — определения растений, их материалов а также производных (алкоголь, семена и т. д.); префикс названия файла plant_.
  • REACTION — реакции/рецепты для мастерских; префикс названия файла reaction_.
  • SOUND — связывает звуковые файлы с сигналами о внутриигровых событиях; префикс названия файла sound_.
  • TEXT_SET — текст разговора, в основном используемый в режиме приключений; префикс названия файла text_. Example: text_dwarf.txt
  • TILE_PAGE — присваивает идентификаторы файлам изображений и задает их параметры для использования в raw-файлах графики; префикс названия файла tile_page_.
  • TISSUE_TEMPLATE — определение шаблонов тканей, для использования BODY_DETAIL_PLAN или существами; префикс названия файла tissue_template_.

Обычно пустые строки используются для разделения различных типов структур, таких как имя файла и [OBJECT:] или другие записи, однако все, что не является токеном, кроме 1-й строки (которая является именем файла), понимается как комментарии и не рассматривается движком игры.

Токены заключаются в квадратные скобки ([ТОКЕН:Значения]).

Список токенов можно найти в статье Token.

Порядок чтения

Последовательность, в которой DF считывает raw-файлы определяется первой строкой raw-файла (там не обязательно имя файла). Последовательность считывания важна для такого рода токенах, как [COPY_TAGS_FROM], но не для большинства других.

Названия raw-файлов совершенно не важны — когда вы создаете новое существо, вы можете поместить его в любой файл, куда захотите (или даже в совершенно новый файл), и игра будет работать как обычно. Вы даже можете переименовать все существующие raw-файлы, и игре все равно будет все равно (если, конечно, вы сначала сгенерируете новый мир).

Необходимые объекты

Хотя большинство raw-файлов можно заменить или удалить, некоторые из них содержат объекты, которые используются процедурно генерируемыми существами (такими как забытые твари и эксперименты). Для поддержки этих существ должны присутствовать объекты с перечисленными ниже идентификаторами. Приведённые имена файлов — это то место, где указанные объекты находятся по умолчанию, но само по себе место не важно, главное чтобы объекты имелись где-либо в raw-файлах, которые игра использует. Этот список был составлен путем изучения кода, который выдает различные сообщения об ошибках вида "Cannot generate random creatures -- missing *".

material_template_default.txt:

SKIN_TEMPLATE
FAT_TEMPLATE
MUSCLE_TEMPLATE
SINEW_TEMPLATE
BONE_TEMPLATE
CARTILAGE_TEMPLATE
HAIR_TEMPLATE
FEATHER_TEMPLATE
SCALE_TEMPLATE
NAIL_TEMPLATE
TOOTH_TEMPLATE
EYE_TEMPLATE
NERVE_TEMPLATE
BRAIN_TEMPLATE
LUNG_TEMPLATE
HEART_TEMPLATE
LIVER_TEMPLATE
GUT_TEMPLATE
STOMACH_TEMPLATE
PANCREAS_TEMPLATE
SPLEEN_TEMPLATE
KIDNEY_TEMPLATE
LEATHER_TEMPLATE
HORN_TEMPLATE
PEARL_TEMPLATE
SILK_TEMPLATE
BLOOD_TEMPLATE
ICHOR_TEMPLATE
GOO_TEMPLATE
SLIME_TEMPLATE
SHELL_TEMPLATE
SOAP_TEMPLATE
TALLOW_TEMPLATE
CHITIN_TEMPLATE
MILK_TEMPLATE
CREATURE_CHEESE_TEMPLATE
STRUCTURAL_PLANT_TEMPLATE
SEED_TEMPLATE
LEAF_TEMPLATE
THREAD_PLANT_TEMPLATE
PLANT_ALCOHOL_TEMPLATE
PLANT_POWDER_TEMPLATE
PLANT_EXTRACT_TEMPLATE
CREATURE_EXTRACT_TEMPLATE
FLAME_TEMPLATE

tissue_template_default.txt:

SKIN_TEMPLATE
FAT_TEMPLATE
MUSCLE_TEMPLATE
BONE_TEMPLATE
SHELL_TEMPLATE
HORN_TEMPLATE
CARTILAGE_TEMPLATE
HAIR_TEMPLATE
CHEEK_WHISKERS_TEMPLATE
CHIN_WHISKERS_TEMPLATE
MOUSTACHE_TEMPLATE
SIDEBURNS_TEMPLATE
EYEBROW_TEMPLATE
EYELASH_TEMPLATE
FEATHER_TEMPLATE
SCALE_TEMPLATE
NAIL_TEMPLATE
CLAW_TEMPLATE
TALON_TEMPLATE
TOOTH_TEMPLATE
EYE_TEMPLATE
NERVE_TEMPLATE
BRAIN_TEMPLATE
LUNG_TEMPLATE
HEART_TEMPLATE
LIVER_TEMPLATE
GUT_TEMPLATE
STOMACH_TEMPLATE
PANCREAS_TEMPLATE
SPLEEN_TEMPLATE
KIDNEY_TEMPLATE
FLAME_TEMPLATE

b_detail_plan_default.txt:

STANDARD_MATERIALS
STANDARD_TISSUES
CHITIN_MATERIALS
CHITIN_TISSUES
FACIAL_HAIR_TISSUES
HEAD_HAIR_TISSUE_LAYERS
FACIAL_HAIR_TISSUE_LAYERS
BODY_HAIR_TISSUE_LAYERS
BODY_FEATHER_TISSUE_LAYERS
VERTEBRATE_TISSUE_LAYERS
EXOSKELETON_TISSUE_LAYERS
STANDARD_HEAD_POSITIONS
HUMANOID_HEAD_POSITIONS
HUMANOID_RIBCAGE_POSITIONS
SHELL_POSITIONS
HUMANOID_RELSIZES

c_variation_default.txt:

STANDARD_BIPED_GAITS
STANDARD_QUADRUPED_GAITS
STANDARD_WALKING_GAITS
STANDARD_CLIMBING_GAITS
STANDARD_SWIMMING_GAITS
STANDARD_CRAWLING_GAITS
STANDARD_FLYING_GAITS
STANDARD_WALK_CRAWL_GAITS

body_rcp.txt:

RCP_BASIC_BODY
RCP_BASIC_BODY_STANCE
RCP_BASIC_BODY_STANCE_WITH_HEAD_FLAG
RCP_UPPER_BODY
RCP_LOWER_BODY
RCP_THORAX
RCP_ABDOMEN
RCP_CEPHALOTHORAX
RCP_HEAD
RCP_NECK
RCP_TWO_PART_ARMS
RCP_PINCERS
RCP_CLAW_ARMS
RCP_FIRST_SIMPLE_LEGS
RCP_FIRST_SIMPLE_LEGS_GRASP
RCP_SECOND_SIMPLE_LEGS
RCP_THIRD_SIMPLE_LEGS
RCP_FOURTH_SIMPLE_LEGS
RCP_FIFTH_SIMPLE_LEGS
RCP_SIMPLE_FRONT_LEGS
RCP_SIMPLE_FRONT_LEGS_GRASP
RCP_SIMPLE_REAR_LEGS
RCP_TWO_PART_LEGS
RCP_FRONT_FLIPPER
RCP_REAR_FLIPPER
RCP_TWO_FLIGHTLESS_WINGS
RCP_TWO_WINGS
RCP_TAIL
RCP_2_TAILS
RCP_3_TAILS
RCP_TAIL_STINGER
RCP_LOWER_BODY_STINGER
RCP_PROBOSCIS
RCP_TRUNK
RCP_SHELL
RCP_ANTENNAE
RCP_1_HEAD_HORN
RCP_2_HEAD_HORNS
RCP_3_HEAD_HORNS
RCP_4_HEAD_HORNS
RCP_LARGE_MANDIBLES
RCP_5_FINGERS
RCP_4_FINGERS
RCP_3_FINGERS
RCP_2_FINGERS
RCP_5_TOES
RCP_4_TOES
RCP_3_TOES
RCP_2_TOES
RCP_5_FRONT_TOES
RCP_4_FRONT_TOES
RCP_3_FRONT_TOES
RCP_2_FRONT_TOES
RCP_5_REAR_TOES
RCP_4_REAR_TOES
RCP_3_REAR_TOES
RCP_2_REAR_TOES
RCP_1_EYE
RCP_2_EYES
RCP_3_EYES
RCP_BEAK
RCP_NOSE
RCP_CHEEKS
RCP_LUNGS
RCP_HEART
RCP_GUTS
RCP_THROAT
RCP_SPINE
RCP_UPPER_SPINE
RCP_BRAIN
RCP_SKULL
RCP_MOUTH
RCP_TEETH
RCP_RIBS
RCP_RIBS_EXTERNAL
RCP_LIPS
RCP_1_EYELID
RCP_2_EYELIDS
RCP_3_EYELIDS
RCP_GLOSS_HOOF
RCP_GLOSS_PAW
RCP_5_FRONT_FINGERS*
RCP_4_FRONT_FINGERS*
RCP_3_FRONT_FINGERS*
RCP_2_FRONT_FINGERS*
RCP_TONGUE*
* - Игра не проверяет наличие этих объектов, но все равно будет пытаться их использовать (и выдаст ошибку, если они отсутствуют).

Объекты RCP_FORKED_TONGUE, RCP_BILL и RCP_2_HEAD_ANTLERS в настоящее время не используются игрой и спокойно могут быть удалены.

Примеры