Написание игрового модуля

Структура модуля

Игровой модуль представляется набором файлов, содержащих его данные. Главным файлом игрового модуля является текстовый файл с расширением ".MODULE", который следует разместить в папке "Modules" или вложенных в нее папках.

Главный файл

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

[НАЗВАНИЕ]
- наименование модуля (текст)
[ПОДСКАЗКА]
- краткое описание модуля (простой текст)
[РИСУНОК]
- имя файла рисунка для описания. Рисунок вставляется в текст описания
[СТАРТ]
- если 1, "true" или "да" - этот модуль можно играть самостоятельно, и он не является частью других модулей. По умолчанию значение "да". Для выключения флага следует указать 0, "false" или "нет".
[КАРТЫ]
- список файлов изображений через запятую - они будут приведены в закладках на странице модулей для данного модуля (это могут быть файлы BMP, JPG, PNG)
Каждый файл указывается в виде имя_файла=заголовок. Заголовок может быть опущен. Кроме того, вместо имени файла изображения можно указать имя файла карты (с расширением ".MAP")
[ОПИСАНИЕ]
- полное описание модуля (текст)
[ВХОД]
- список через запятую идентификаторов входных комнат (секторов) или пар идентификатор=описание


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

Файлы комнат и секторов

Файлы комнат и секторов - текстовые, с расширениями ".ROOM" или ".SECTOR" соответственно. Имя каждого файла - идентификатор для обращения к нему, сам файл состоит из секций. Файлы являются стандартным файлами данных, в которых допускаются также следующие теги:

[НАЗВАНИЕ]
- название или номер комнаты/сектора (текст)
Если название состоит только из числа, то к нему автоматически будет прибавлено "Комната" или "Сектор"
[СКРЫТЬ]
- если 1, "true" или "да" - не будет отображаться с списке комнат/секторов локации
[ТЕКСТ=идентификатор]
- текст части сюжета, где идентификатор - идентификатор части, используемый в ссылках (текст).
Частей может быть несколько, идентификаторы в пределах комнаты должны быть уникальными.
Идентификатор может быть опущен (как правило, это для входных в комнату/сектор частей)
[ВАРИАНТ=ссылка]
- текст варианта выбора, предлагаемого после прочтения части сюжета (текст), ссылка - переход к другой части или одна из стандартных ссылок:

#gameover - конец игры
#end - конец комнаты
#exit - конец локации, открывается ее страница описания
#gameoversuccess - конец игры, победа
#gameoverfail - конец игры, все погибли

вариантов может быть несколько, все они добавляются к текущей части, тег ТЕКСТ которой последним встречен перед тегом ВАРИАНТ.
Если ни одного варианта в части не указано - считается, что это конец комнаты (автоматически добавляется ссылка #end).
Входной в комнату частью будет самая первая.
[НЕТВАРИАНТОВ]
- если в тексте не предусмотрено никаких вариантов ответа, вариант концовки автоматически добавлен не будет

Ссылки на части модуля

Для перехода между частями модулей используются символьные ссылки вида:

идентификатор_модуля.идентификатор_комнаты.идентификатор_части

Ссылка может быть неполной - в этом случае по первой ее части сначала ищется часть комнаты (сектора) (если ссылка только из одной части), если не находится - комната (сектор), если не находится и она - тогда модуль.
Последняя часть ссылки может быть значением стандартной команды:

#end - выбрать ссылки по остальным частям и закончить

Идентификаторы

Под идентификаторами подразумеваются индивидуальные метки-названия, по которым программа ориентируется при переходе между составными частями модулей. Каждый идентификатор должен состоять из латинских букв, цифр или символов подчеркивания, и не может начинаться с цифры.
Идентификатор модуля - имя главного файла модуля без расширения, идентификатор комнаты (сектора) - имя файла комнаты (сектора) без расширения, идентификатор части - заданный идентификатор части внутри файла комнаты (сектора).

Теги форматирования текстов

Помимо стандартных тегов форматирования, в текстах комнат также допустимы теги:

<img=имя_файла> - вставка рисунка
<go=ссылка> ... </go> - активная ссылка перехода к части модуля
<if> ... </if> - выделение цветом некоего условия (как правило - чтобы отделить фрагмент сюжета, который зачитывается при соблюдении определенного условия)
<hidden> ... </hidden> - выделение цветом текста, который не озвучивается игрокам (информация для ведущего)
<hidden=идентификатор_текста> ... </hidden> - то же, что hidden, но текст с указанным идентификатором будет добавлен в качестве заметки
<note=идентификатор> - текст с указанным идентификатором будет добавлен в качестве заметки
<inc=идентификатор> - вставить текст с указанным идентификатором из этой же комнаты (сектора)
<item=идентификатор> - вставить ссылку на описание предмета и т.п.


См. также:

Файлы данных
Игровые модули
Вставка таблицы в текст
Файлы описания предметов
Файлы описания карт