Raw file

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_.- ITEM_AMMO — боеприпасы для стрелков.
- ITEM_ARMOR — одежда на тело, включая броню.
- ITEM_FOOD — описания приготовленной пищи.
- ITEM_GLOVES — одежда на руки (перчатки), включая броню.
- ITEM_HELM — головные уборы, включая броню (шлемы).
- ITEM_INSTRUMENT — описания музыкальных инструментов.
- ITEM_PANTS — одежда на ноги, включая броню.
- ITEM_SHIELD — щиты.
- ITEM_SHOES — обувь, включая броню.
- ITEM_SIEGEAMMO — снаряды для осадных орудий (пока только баллиста).
- ITEM_TOOL — многоцелевые предметы, которые могут быть оружием, контейнером для пищи и проч.
- ITEM_TOY — игрушки.
- ITEM_TRAPCOMP — компоненты, которые можно использовать в оружейных ловушках (два специальных тега определяют компоненты, которые можно использовать в других конструкциях:
[IS_SCREW]и[IS_SPIKE]). - ITEM_WEAPON — оружие, используемое солдатами, а также инструменты для копания.
- 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 в настоящее время не используются игрой и спокойно могут быть удалены.