www.mudconnector.su

Национальный мадконнектор.
Текущее время: Пт июл 10, 2020 12:21 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Пн авг 27, 2012 11:47 am 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1414
omlin писал(а):
Контент очень дорог, и решить проблему его дороговизны можно только с потерей его качества. Мне кажется, это аксиома, и ничего тут особо не придумаешь.

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

omlin писал(а):
Однако, если думать о действительно серьезных динамических зонах, качественных, то токенами не обойтись. Ну представьте: глобальный эвент: набег орков на какой-нибудь город. Если он закончился победой орков, зона с городом полностью трансформируется и превращается в обугленные руины, там запрещается постой, меняется набор квестов и т.д. Через месяц, например, зона возвращается к исходному состоянию (типа город отстроился). Вот это классно, это здорово, но ни токенами, ни генеренными описаниями такое не сделаешь. Тут просто делаются две зоны и подменяются - и ничего тут другого не придумаешь.

Да почемуж обязательно зоны ?
Вообще идея "подменять" не очень правильная. Динамически менять описания ведь можно, и это не проблема.
Вот и пишите по тексту
{if все хреново}
В этой комнате всё хреново.
{else}
Тут всё круто.
{endif}

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

Сгенерить вообще ничего приличного нельзя. Это как-бы аксиома.
Меня уж скоро 20 лет мучают раз в год супер-пупер идеями о "генерации книги".

Но можно сделать довольно много и очень интересных вещей. Именно программно.
Посмотри к примеру, какие автогенеренные story получаются в результате игры в dwarf fortress.
И это не так уж сложно и вполне выполнимо. Было бы желание, некий опыт, и немеряное упорство.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Пн авг 27, 2012 5:20 pm 
Не в сети

Зарегистрирован: Вт мар 24, 2009 6:20 pm
Сообщений: 213
KadVar писал(а):
Вот и пишите по тексту{if все хреново}В этой комнате всё хреново.{else}Тут всё круто.{endif}

я как раз считаю, что это крайне неудачная идея и концептуально неверная.
сейчас объясню.

давайте представим, что у нас есть некий мад, где мы хотим внедрить такую фишку.

Что мы должны для этого сделать:
1. Раньше у нас в редакторах мира был просто кусок текста. Но сейчас, конечно если делать "по уму", нам придется к нему прикрутить подсветку, какую-то справку контекстную, и интеллисенс хотя бы простейший.
2. Естественно, нужны правки в коде. Там, где раньше просто выводился кусок текста, теперь нужно парзить фигурные скобки, производить синтаксический разбор и т.д. В начале это естественно будет довольно просто, но вы же представили чистой воды шаблонизатор. А шаблонизаторы имеют свойство расти. Сегодня у нас только if, завтра еще подкрутили циклы, послезавтра вообще там можно код писать чтобы условия более сложные проверять.
3. А какие, кстати говоря, переменные мы хотим проверять? Где их выставлять? Как менять переменную? Скорее всего приходит на ум существующая скриптовая система (т.е. в circle-подобных мадах это скорее всего dg_script и его расширения). Соответственно, нужно это тоже в коде учесть и обеспечить интеграцию скриптовой системы и нашего шаблонизатора.

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

Ура, ценой всего лишь пары-тройки недель (за которые можно теоретически написать зону) всё сделано, у нас классный синтаксис, ура, всё супер.

Теперь мы пишем зоны, и используем шаблонизатор. Это работает для каких-то случаев, но нам сразу же хочется большего.
Почему шаблонизируются только описания комнат?
А как же описания предметов, монстров, заголовки комнат?
Например, мы хотим, чтобы после того как была поднята тревога в зоне, все мобы становились настороженными, и у них менялось бы описание соответственно.

Отлично, ценой еще нескольких дней можно зашаблонизировать и эти редакторы, которые раньше были обычными однострочными текстбоксами. Эти расширенные редакторы, между прочим, не только усложнят поддержку редактора и число потенциальных багов в нем, но самое главное еще более усложнят его интерфейс. А в большинстве современных редакторов MUD-миров итак с интерфейсами беда.

Ок, мы сделали что у нас шаблонизируются все описания, но теперь нам еще хочется менять комнатам флаги. Ну например, в зоне произошло какое-то событие и зона погрузилась в темноту. Я хочу чтобы флаг DARK ставился на комнату только в случае, если это событие произошло. Или же я делаю супер-монстра, который вокруг себя распространяет тьму, и соответственно если клетка на некотором расстоянии от этого монстра, ей должен выставляться флаг DARK...

Дальше нам захочется менять выходы, дополнительные описания, да вообще все свойства комнат которые вообще есть. И в зависимости от сложных условий. И конечно хочется чтобы это было всё сделано по аналогии с шаблонизатором...

ААААААА...

Итого

Куча рисков, куча ограничений. Задачи построения более-менее динамической зоны не решает. В итоге все равно сводится к каким-то скриптам, поэтому я и написал с самого начала:

Цитата:
Мне кажется, достаточно вынести в триггеры возможность изменения room.description. Можно наколдовать еще в коде, чтобы при ррэепопе описания автоматом сбрасывались на дефолтные. Дальше уже хай билдер решает, стоит ему манчкинить с этими описаниями, или нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Пн авг 27, 2012 6:14 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1414
А вот категорически не согласен.
Вы предлагаете мне поменять удобство работы скажем с 10.000 комнат на вашу экономию в написании редакторов.
Это изначально тупиковый путь.
Делать надо не так, чтобы было "легко фигачить", а чтобы было легко поддерживать.

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

Тупик однозначно в том, что вы боитесь влить 2 недели работы в улучшение редакторов, которые сэкономят многие человекомесяцы. А так да. Текстовых строк быть вообще не должно, в любой текст должны быть возможность написать любой скрипт.

И да... "резко поменять" одного моба на другой столь же плохо, как "резко поменять" одну комнату на другую.
У них состояния есть(моб ослеплен, комната с предметами).
Менять надо только то, что РЕАЛЬНО попросил поменять билдер.
Т.е. по-хорошему состояния-копии вам не подходят... почти не подходят.
В целом же, крайне полезно видеть что конкретно меняется от состояния к состоянию.
А не две комнаты, 50 строк текста, 20 взведенных флагов, и отличие в одном каком-то вам неизвестном.
А потом окажется, что где-то лишняя запятая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Вт авг 28, 2012 4:56 am 
Не в сети

Зарегистрирован: Вт мар 24, 2009 6:20 pm
Сообщений: 213
KadVar писал(а):
Делать надо не так, чтобы было "легко фигачить", а чтобы было легко поддерживать.

Поддержка шаблонизатора как раз обойдется в копеечку. И работать с ним будет сложнее. По большому счету, любой шаблонизатор - это упрощенный алгоритмический язык. Т.е. попытка внедрить шаблонизатор - это по сути попытка ввернуть в редактор "для писателей" элемент для программистов.

Кроме того, как я говорил выше, неминуемо разросшиеся интерфейсные элементы тоже удобства не добавят.

KadVar писал(а):
"А найди-ка друг в каком триггере меняется описание этой комнаты" мне не подходит катастрофически.

не вижу чем это отличается от "а найди-ка мне друг в каком триггере переключается состояние комнаты"

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Ср авг 29, 2012 12:38 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1414
omlin писал(а):
не вижу чем это отличается от "а найди-ка мне друг в каком триггере переключается состояние комнаты"

Реально не видите разницы в ситуациях:
1. Я вижу комнату и все состояния
2. Я вижу комнату, но она приходит в какие-то иные состояния непонятно как, когда, и приходит ли вообще.

По мне, так второе путь к многочисленным проблемам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Ср авг 29, 2012 6:00 pm 
Не в сети

Зарегистрирован: Вт мар 24, 2009 6:20 pm
Сообщений: 213
KadVar писал(а):
Реально не видите разницы в ситуациях:
1. Я вижу комнату и все состояния
2. Я вижу комнату, но она приходит в какие-то иные состояния непонятно как, когда, и приходит ли вообще.

По мне, так второе путь к многочисленным проблемам.

Во-первых, я согласен что контент (т.е. текст описаний) лучше хранить в одном месте - об этом я писал выше.

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

Более того, в описанном вами виде шаблонизатор (т.е. {if} .. {else}) НЕ решает вот эту проблему:
Цитата:
2. Я вижу комнату, но она приходит в какие-то иные состояния непонятно как, когда, и приходит ли вообще.

Потому что даже при наличии шаблонизатора мы по прежнему не знаем, когда и где и по каким правилам переключаются состояния зоны и всякие там глобальные переменные, которые используются в нашем шаблонизаторе.

А состояния зоны очевидно все равно будут переключаться в триггерах. И кстати, любой более-менее разветвленный сюжет обычно подразумевает десятки составных состояний, я как представлю как это всё будет выглядеть в шаблонизаторе, мне вот честно плохо становится...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Чт авг 30, 2012 10:47 am 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1414
omlin писал(а):
Более того, в описанном вами виде шаблонизатор (т.е. {if} .. {else}) НЕ решает вот эту проблему:
Цитата:
2. Я вижу комнату, но она приходит в какие-то иные состояния непонятно как, когда, и приходит ли вообще.

Потому что даже при наличии шаблонизатора мы по прежнему не знаем, когда и где и по каким правилам переключаются состояния зоны и всякие там глобальные переменные, которые используются в нашем шаблонизаторе.

А состояния зоны очевидно все равно будут переключаться в триггерах. И кстати, любой более-менее разветвленный сюжет обычно подразумевает десятки составных состояний, я как представлю как это всё будет выглядеть в шаблонизаторе, мне вот честно плохо становится...


Если вы пишете что-то типа if varXX=aaa then то да.
Если у вас написано if <Квест10Начат> then то нет.
Зависит от конкретной реализации. И довольно остро.
В целом это должна быть хорошо продуманная система. Сделать её можно, но наибольшие
затруднения тут будут в её разработке, а не внедрении.

Честно говоря не припомню просто-таки ДЕСЯТКОВ составных состояний.
Наверное разветвленных сюжетов никогда не делал и не видел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Пт авг 31, 2012 4:03 pm 
Не в сети

Зарегистрирован: Вт мар 24, 2009 6:20 pm
Сообщений: 213
KadVar писал(а):
Если у вас написано if <Квест10Начат> then то нет.

А что кроме квестов там еще может быть? Т.е. правильно ли я понимаю, вы предлагаете некое ограниченное множество автоматически выставляющихся флагов, без участия триггеров?

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

Нет, честно, у меня не раз такое было: вот вроде бац, простенький шаблонизатор, написал за час. Ура, всё работает. Начинаешь использовать - то одно понадобилось, то другое, то третье. Не предусмотришь всего, что потребуется. Особенно в таких творческих и индивидуальных вещах, как зоны вымышленного мира...

KadVar писал(а):
Зависит от конкретной реализации. И довольно остро.

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

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

Трудозатрат в случае с шаблонизатором больше в разы, а результат лучше ненамного, и куча рисков...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Текст описания комнаты
СообщениеДобавлено: Ср сен 12, 2012 5:22 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1414
Цитата:
А что кроме квестов там еще может быть? Т.е. правильно ли я понимаю, вы предлагаете некое ограниченное множество автоматически выставляющихся флагов, без участия триггеров?

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

Шаблонизатор вообще вещь странная и малонужная.

Цитата:
Согласен, любая идея имеет право быть, если её хорошо отшлифовать. Но мне кажется, это будет сложно сделать. Хотя бы потому, что совмещение визуального редактора с редактором кода - концептуально очень опасная идея. Примеров её удачной реализации я ни разу не видел.


Ну как-же не видели, никогда не видели Visual Studio :) ? К примеру.
В целом никакого когда, кроме микроскопического микрокода вообще не надо в пользователя давать.
При наличии внятного API 99% типовых задач билдеров решаются вызовом "крупных и жирных" функций.
Да и в любом случае: любая шаблонизация - дело технически подготовленных людей.

В целом... хорошо конечно нарисовать качественный мир объемом 3000х2000км, где каждая комната будет
10х10км, и соответственно это все будет всего-то из 60000 комнат состоять :). Но я не знаю никого,
у кого хватит на это "запала". Это на год-полтора очень плотной ежедневной работы.
И смысле в общем-то нету. Вот тут и можно было бы использовать что-то подобное.
Но в целом. Вероятно от автогенерации лучше уходить даже и в этом случае.
Лучше, действительно конструктор. В котором подкручивается "руками".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron