KadVar писал(а):
Вот и пишите по тексту{if все хреново}В этой комнате всё хреново.{else}Тут всё круто.{endif}
я как раз считаю, что это крайне неудачная идея и концептуально неверная.
сейчас объясню.
давайте представим, что у нас есть некий мад, где мы хотим внедрить такую фишку.
Что мы должны для этого сделать:
1. Раньше у нас в редакторах мира был просто кусок текста. Но сейчас, конечно если делать "по уму", нам придется к нему прикрутить подсветку, какую-то справку контекстную, и интеллисенс хотя бы простейший.
2. Естественно, нужны правки в коде. Там, где раньше просто выводился кусок текста, теперь нужно парзить фигурные скобки, производить синтаксический разбор и т.д. В начале это естественно будет довольно просто, но вы же представили чистой воды шаблонизатор. А шаблонизаторы имеют свойство расти. Сегодня у нас только if, завтра еще подкрутили циклы, послезавтра вообще там можно код писать чтобы условия более сложные проверять.
3. А какие, кстати говоря, переменные мы хотим проверять? Где их выставлять? Как менять переменную? Скорее всего приходит на ум существующая скриптовая система (т.е. в circle-подобных мадах это скорее всего dg_script и его расширения). Соответственно, нужно это тоже в коде учесть и обеспечить интеграцию скриптовой системы и нашего шаблонизатора.
Итого, мы влетаем как минимум на внедрение шаблонизатора - даже если предположить что мы сумели найти хороший готовый шаблонизатор, подходящий для наших нужд и нормально интегрирующийся со скриптовой системой нашего мада. И редактор этого шаблонизатора, соответственно, тоже придется внедрять в наш редактор мира.
Ура, ценой всего лишь пары-тройки недель (за которые можно теоретически написать зону) всё сделано, у нас классный синтаксис, ура, всё супер.
Теперь мы пишем зоны, и используем шаблонизатор. Это работает для каких-то случаев, но нам сразу же хочется большего.
Почему шаблонизируются только описания комнат?
А как же описания предметов, монстров, заголовки комнат?
Например, мы хотим, чтобы после того как была поднята тревога в зоне, все мобы становились настороженными, и у них менялось бы описание соответственно.
Отлично, ценой еще нескольких дней можно зашаблонизировать и эти редакторы, которые раньше были обычными однострочными текстбоксами. Эти расширенные редакторы, между прочим, не только усложнят поддержку редактора и число потенциальных багов в нем, но самое главное еще более усложнят его интерфейс. А в большинстве современных редакторов MUD-миров итак с интерфейсами беда.
Ок, мы сделали что у нас шаблонизируются все описания, но теперь нам еще хочется менять комнатам флаги. Ну например, в зоне произошло какое-то событие и зона погрузилась в темноту. Я хочу чтобы флаг DARK ставился на комнату только в случае, если это событие произошло. Или же я делаю супер-монстра, который вокруг себя распространяет тьму, и соответственно если клетка на некотором расстоянии от этого монстра, ей должен выставляться флаг DARK...
Дальше нам захочется менять выходы, дополнительные описания, да вообще все свойства комнат которые вообще есть. И в зависимости от сложных условий. И конечно хочется чтобы это было всё сделано по аналогии с шаблонизатором...
ААААААА...
ИтогоКуча рисков, куча ограничений. Задачи построения более-менее динамической зоны не решает. В итоге все равно сводится к каким-то скриптам, поэтому я и написал с самого начала:
Цитата:
Мне кажется, достаточно вынести в триггеры возможность изменения room.description. Можно наколдовать еще в коде, чтобы при ррэепопе описания автоматом сбрасывались на дефолтные. Дальше уже хай билдер решает, стоит ему манчкинить с этими описаниями, или нет.