1
Универсальный редактор зон: мысли и идеи

В ходе обсуждения статьи Требования к современному мад серверу возник вопрос о необходимости редактора зон, учитывая трудоемкость его создания. Лично мое мнение – редактор необходим обязательно. Тогда тут же возникает другой вопрос, каким его делать, как он должен выглядеть и функционировать? Дальше я попытаюсь поделиться своими мыслями по этому поводу.



Если рассмотреть ситуацию в целом, то в мире не так то и много редакторов зон с открытым исходным кодом. А, те, что есть (перечислены в статье Ресурсы для билдеров), уже очень стары и рассчитаны на древние кодовые базы, использовать их в текущих реалиях будет проблематично. Отсутствие современных редакторов с открытым исходным кодом объясняется и тем, что в современных кодовых базах (типа CoffeeMUD, Evennia и т.д.) редактор – часть движка, встроен обычно в веб-панель управления мадом. Учитывая развитие и изменение со временем любого мадовского движка, мне кажется, что редактор должен разрабатываться с учетом универсальности и применимости к любой кодовой базе.

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

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

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

Например, скрипт описания комнаты %create.room.description%, результатом его работы будет описание комнаты, оформленное в соответствии с требованием конкретного мада, то есть само описание и специальные символы его обозначения и разметки. Аналогично, будут скрипты для выходов из комнаты, наличия объектов и мобов в комнате. Схематично это должно выглядеть как-то так:
Схема редактора зон

К элементам графического интерфейса редактора привязаны скрипты низкого уровня, которые объединяются на следующей стадии в скрипт создания комнаты целиком. Результатом работы %create.ROOM% будут являться уже непосредственно файл или файлы зон, понимаемые движком мада. От пользователя редактора требуется лишь вводить описания в соответствующие поля, преобразование описаний в требуемый формат возлагается на описанные выше скрипты. Аналогично, задаются и мобы и объекты.

Некоторые выводы

Мне кажется, что такой легко настраиваемый под любой мад редактор зон будет востребован не только для русскоязычных мадов, но и для англоязычных, так как мировые аналоги отсутствуют. Кроме того, многие разработчики пытаются писать мады в одиночку, а тратить свои силы еще и на редактор, им может быть слишком затратно. По поводу скорости создания такого редактора ничего сказать не могу, но проблема быстрого создания графических приложений стоит перед программистами не первый год, и вроде как для этого придуманы всякие Qt и т.д.

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

3 комментария

avatar
  • artist
  • 0
Мне любопытны идеи насчет интерфейса такого редактора. Мой же опыт, как программиста, говорит, что максимум, что можно выжать из этой идеи — текстовый редактор, но с помощником, который будет подсказывать как писать, подставлять шаблоны для описания комнат, мобов и т.д., в которые потом нужно подставить нужные значения.
avatar
Я представляю графический интерфейс как набор свободно добавляемых и перемещаемых полей, к каждому из которых привязан конкретный скрипт. Поле может быть трех типов: поле для текстового ввода информации, выпадающий список и таблица.
С программами с похожим интерфейсом я сталкивался, но на чем они написаны не знаю. Вот, например, программа для управления хроматографом с масс-селективным детектором: http://aimanalytical.com/Manuals/Agilent%20G1701DA%20Manual.pdf, интерфейс на 6й странице показан, там каждое прямоугольное окошечко свободно добавляется/удаляется/перемещается, выбор значений для отображения в нем выбирается из списка, который появляется при клике правой кнопкой по такому окошку.
avatar
В принципе, твой клиент уже достаточно похож на такой редактор. На кнопки кликпада повесить эти самые скрипты, команды будут обрабатываться мад-сервером. Но, это надо протестить, вероятно не будет хватать наглядности и интерактивности.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.