Общая информация о конфигурационных файлах
Раздел содержит основные принципы описания игровых компонентов
SDL файлы
SDL (structure definition language) - общий формат конфигурационных файлов, используемых игровым движком Gem RTS.
SDL-файлы Gem RTS не имеют ничего общего с языком графического моделирования и файлами SDL из Visual Studio от Microsoft
SDL-файлы применяются для описания большинства компонентов игры.
Примеры использования:
описания игровых объектов;
описания элементов интерфейса;
настройки юнитов;
настройки режимов игры;
файлы игровых уровней (карт);
описания логики миссий;
описания спецэффектов (VFX) и звуковых эффектов (SFX);
описания свойств и поведения юнитов;
описания анимаций;
...
SDL-файлы - текстовые документы, сохраненные в кодировке utf-8. Файлы можно просматривать и редактировать с помощью любого текстового редактора, такого как Sublime, Notepad++, Vim и другие.
Для ряда SDL-файлов в приложении Editor предусмотрены отдельные редакторы (смотрите раздел документации РЕДАКТОР). Такие файлы необходимо создавать и редактировать с помощью соответствующего редактора, а прибегать к использованию текстового редактора в случае крайней необходимости.
Правила именования SDL-файлов
SDL-файлы могут иметь разные расширения, но при этом всегда имеют общий синтаксис. Наиболее распространненые расширения SDL файлов представлены в таблице.
.def
Описания игровых объектов
.ext
Дополнительные описания объектов
.set
Описания компонент игры и настройки параметров
.inc
Используются для структурирования описаний и выноса общих описаний для групп компонентов. Содержимое .inc файлов вставляется парсером движка в итоговый SDL в тех местах, откуда вызывается файл .inc
.info
Настройки компонент игры
.mi
Описания логики миссии
Расположение SDL-файлов
Расположение SDL-файлов зависит от того, какой компонент игры в нем описан. От расположения файла зависит формат и структура описания.
Большинство файлов должны находиться в строго определенной папке или иметь конкретное название
Более подробно принцип размещения файлов рассматривается в статье Архитектура ресурсов игры
Содержимое SDL-файлов
Содержимое SDL-файла зависит от того, какой компонент игры в нем описывается.
...\scene\set\interaction_entity\human.inc ...\scene\set\target\human.inc ...\scene\properties\selection\human.inc
SDL-файлы имеют одинаковое имя и расширение, но содержат разный формат описания, зависящий от расположения файла в структуре ресурсов игры
Любой файл из папки ...\scene\set\environment
SDL-файлы из папки environment описывают один и тот же компонент игры: погоду и визуальные эффекты окружения. Имеют одинаковый формат описания параметров и настроек эффектов. Содержимое файлов из папки environment отличается лишь значениями параметров погоды, названиями эффектов и текстур
Синтаксис
Структура SDL-файла формируется из блоков. Минимальная единица блока - строка, которая заключена в фигурные скобки и содержит имя параметра.
Каждый блок SDL должен иметь открывающую и закрывающую фигурную скобку. Потеря скобки влечет за собой критические ошибки в работе игры.
Опционально блок может содержать одно или несколько значений параметра. В качестве значения параметра может быть число или имя переменной. Имена переменных, содержащие пробел, записываются в двойных кавычках.
Формат записи блока SDL:
{parameter [data]}
Если значений несколько, то они перечисляются через пробелы.
Блоки могут быть вложенными. Табуляции и переводы строк необязательны, но рекомендуются для облегчения восприятия описаний.
Условия
SDL-файлы, в которых прописываются настройки компонент игры, могут содержать условия для вызова или установки параметров.
Формат записи условия
condition - условие; [data] - значение параметра, если требуется
Условия также могут быть вложенными. Условия перебираются последовательно. Будет выбрано значение параметра из первого сработавшего условия.
Комментарии
С помощью символа точки с запятой можно сделать однострочный комментарий. Все, что написано в строке после точки с запятой будет проигнорировано движком при загрузке.
Все однострочные комментарии удаляются при загрузке. Не используйте однострочные комментарии в SDL-файлах, которые создаются и редактируются с помощью Редакторов игры
С помощью символа двойной решетки ## Редактор игры создает в файле SDL пометки отключенных блоков. При загрузке блоки, отмеченные двойной решеткой, не игнорируются и не удаляются. Отображаются в редакторе с пометкой, что блок отключен.
Сборка SDL
Загрузка SDL-файлов поддерживает поэтапную сборку итогового файла. С помощью системы пакетов можно как полностью “перекрыть” базовый файл, так и дополнить его.
SDL-файл расположенный по неправильному пути может привести к ошибке при загрузке или быть проигнорированным
Отладка сборки
В редакторе игры предусмотрена возможность собрать финальный вариант обработанного SDL-файла с помощью консольной команды preprocess_sdl “path_to_file” для целей отладки. Результат выполнения данной команды будет доступен в папке “...\Users\<user>\AppData\Local\Men of War II\preprocess\”
Инструкции
Инструкция - повторяющаяся часть SDL описания, которая выносится в отдельный файл или фрагмент для дальнейшего вызова в нужных местах описаний и настроек.
Инструкции используются для:
избежания повторений в описаниях компонентов игры;
структурирования описаний;
глобальной модификации параметров и настроек компонент игры в зависимости от режима игры
Синтаксис инструкций
Вызов инструкций происходит в нужных местах SDL файла. Вызов одной и той же инструкции можно осуществлять многократно в нужных местах.
Признаком инструкции является фрагмент SDL, заключенный в круглые скобки.
Формат описания и вызова инструкции зависит от ее вида.
Описание инструкции содержит название ее вида и имя. Имя инструкции заключается в двойные кавычки. Опционально описание инструкции может содержать фрагмент SDL. Вызов инструкции происходит по ее имени.
Инструкции могут быть вложенными.
Виды Инструкций
Инструкция включает содержимое SDL файла в другие файлы, где это нужно. Это позволяет структурировать описания по темам и избегать дублирования описаний
Инструкция используется для создания макросов, что позволяет избежать дублирования описаний или однотипных кусков описаний, которые отличаются только значениями параметров
Инструкция позволяет включать/исключать часть кода или менять значения параметров в зависимости от режима игры
Аргументы
Аргументы используются для вызова одной и той же инструкции, но с разными значениями параметров. При описании инструкции признаком аргумента является символ процент %.
Аргументы можно задавать двумя способами:
порядковым номером;
именем переменной
В качестве значений аргументов могут быть как числа, так и наборы символов, например, имена переменных.
Аргументы в виде порядковых номеров
При описании инструкции в качестве аргументов можно использовать целые числа, начиная с нуля. При вызове инструкции используется слово args и перечисление значений аргументов строго от 0 и по порядку.
Формат задания аргументов с порядковым номером
%0 %1 %2
Формат задания значений аргументов с порядковым номером
args data%0 data%1 data%2
При вызове инструкции с аргументами, заданными порядковым номером, необходимо строго соблюдать порядок перечисления аргументов. Несоблюдение порядка приведет к ошибкам.
Именные аргументы
Для описания именных аргументов используются имена переменных.
Формат задания именных аргументов
%name
Формат вызова именных переменных
name(data)
При вызове Инструкции с именными аргументами порядок перечисления аргументов не важен.
Важно следить за тем, чтобы аргументы не содержали названия других аргументов, передаваемых выше, если только это не является вашей задумкой.
Заключение
Овладение структурой и синтаксисом SDL-файлов открывает широкие возможности для кастомизации и улучшения игрового опыта. Понимание аспектов написания конфигурационных файлов позволяет вносить уникальные изменения, делая игру более интересной и отвечающей новым вызовам. Творчество и внимание к деталям станут основой для создания качественных и инновационных изменений игрового процесса и правил, приводя к созданию новых незабываемых сюжетов.
Подробнее узнать о работе с Инструкциями:
Более подробную информацию о работе с конфигурационными файлами можно найти в следующих разделах.
Last updated