Снова генераторы
Первая статья тут: imaginaria.ru/DioWorlds/redaktor-generatorov.html
Наверное, я вам уже надоел со своими генераторами? Если да, скажите. А если нет, читайте дальше… Сегодня я попробую сделать еще один небольшой туториал.
Ну во-первых, кроме того что я исправил ряд багов, и сделал несколкьо изменений, о которых писал в комментариях в предыдущем посту, я реализовал пару ваших пожеланий. А именно:
Возможность клонировать генератор, и главное – это позволяет поделиться ссылочкой. Чем я сегодня и займусь. (Следует отметить, что в том механизме сейчас есть один маленький не критичный баг. После сохранение клонированного генератора и попытке его отредактировать генератор виснет. Я пока не придумал как это исправить, но кнопка “обновить страницу» решает проблему. Данные при этом никакие не теряются.)
Во вторых, добавил синтаксис, позволяющий вставить в текст другой элемент. Делается это так: @(число), где число – это ID элемента, который можно увидеть в его заголовке после знака #.
А теперь приступим. Сегодня я не буду писать генераторы «от фанаря», а буду демонстрировать реализацию описанных в книгах генераторах. Возьму для начала книгу «Идеальный мастер». А теперь перейду по ссылку paradoxdream.com/ngen/new что бы создать новый генератор.
В начале я введу название для своего генератора(а точнее группы генераторов из книги). Пусть он называется «Идеальный мастер».
И сделаю самый простой из возможных. Нажму кнопку «Словарь», что бы создать словарь. Затем на карандашь, что бы начать его редактировать. Впишу название «ОПИСАНИЕ ЗАПАХОВ», и сразу установлю галочку Публичный(эта галочка нужна даже, если вы не планируете публиковать сам генератор, а только пользоваться самому). И в поле Словарь, вставлю текст из книги:
Аммиачный
Ароматный
Благоухающий
Бодрящий
…
Нажму кнопку «сохранить изменения». Затем сохраним наш генератор, кнопкой save можем немного его потестировать, нажав кнопку «просмотр».
Ссылка для просмотра: paradoxdream.com/ngen/pomahufut
Ссылка для создание клона(можно посмотреть исходник): paradoxdream.com/ngen/clone/pomahufut
Словарь – это простейший элемент генератора, представляет собой список строк, которые случайным образом, равновероятно выбираются во время генерации.
Отлично, мы сделали наш самый первый генератор. Теперь сделаем что-то посложнее.
Например «ЗАПОМИНАЮЩИЕСЯ ПОСТОЯЛЫЕ ДВОРЫ». Я нажму кнопку «генератор», что бы создать генератор. Войду в его настройки, введу имя «ЗАПОМИНАЮЩИЕСЯ ПОСТОЯЛЫЕ ДВОРЫ», и поставлю галочку Публичный, а потом кнопку Сохранить изменения. Теперь я нажму кнопку +, в заголовке нового генератора, и в выпадающем списке выберу Словарь. Войду в редактирование словая и вставлю в поле словаря список из книги:
Бегущий
Бережливый
Благоразумный
…
Больше ничего трогать тут не буду, а просто сохраню изменения. Снова нажму на + в заголовке нашего генератора и выберу «Добавить пробел». А следом вставлю второй словарь.
Акула
Архон
Бард
Бог
Вот и готов наш генератор названий для таверну. Сохраню и нажму «просмотреть»
Просмотр: paradoxdream.com/ngen/nozojoyij
Исходник: paradoxdream.com/ngen/clone/nozojoyij
Итак, генератор – это элемент, который представляет из себя коллекцию других элементов, при работе которого, все его элементы генерятся и складываютя в единую строку. Т.е. в результате мы увидим результат каждого отдельного входящего в него эленемта. В нашем случае, например Бережливый Бард. Есть тут все еще проблемы со склонениями, но я пока не успеваю внедрить этот механизм. Думаю он появится на следующей неделе.
А теперь, давайте проведем маленький эксперемент, с тем что есть. Создадим еще один генератора, и назовем его, например, «Постоялый двор 2».
Теперь нажмем на + в генераторе ЗАПОМИНАЮЩИЕСЯ ПОСТОЯЛЫЕ ДВОРЫ, и выберем пункт «Создать ссылку». На том же уровне появится новый элемент:
“Ссылка #2 (ЗАПОМИНАЮЩИЕСЯ ПОСТОЯЛЫЕ ДВОРЫ)”. Я схвачу этот пункт мышкой и перетащу в белую область нашего нового генератора «Постоялый двор». Далее я создам внутри него текстовый элемент « от которого исходил ». Затем я точно так же нажму + на словаре Описание запахов, и создам ссылку на него. Так же перетащу появившеюся ссылку внутрь Постоялый двор 2. И добавлю в конце еще один текст « аромат.» Сохраняем и смотрим:
Просмотр: paradoxdream.com/ngen/gowuhoyul
Исходники: paradoxdream.com/ngen/clone/gowuhoyul
Итак, ссылка – это елемент который ссылается на любой другой элемент и ведет как оригинал. Она много лучше клона(который мы могли так же применить в данном примере), потому, что если мы сейчас добавим новые запахи, они появится сразу везде. А в случае с клоном, как не сложно догадаться – нет.
Теперь я продемонстрирую работу нового «синтаксиса». Я удалю все элементы из Постоялый двор 2, кроме одной строки, и изменю ее следующим образом: «От трактира @(2) исходил @(1) запах.».
Просмотр: paradoxdream.com/ngen/zeluvejaz
Исходник: paradoxdream.com/ngen/clone/zeluvejaz
Вообще я бы не злоупотреблял этим механизмом, как по мне, в результате немного теряется визуальная структура алгоритма. Но дело, как говорится – хозяйское :)
Итак, у нас остался один блок, для которого мы не написали примера, под названием Оъединение(я все ще не уверен, что это название для него подходит и что оно очевидно, так что если у вас есть предложение как его переименовать — пишите).
Отложим книгу «Идеальный мастер» и возьмем бесплатный шаблон для Фиаско отсюда studio101.ru/archive/studio101/fiasco/playsets/ «ошибка системы». Создадим новый генератор с помощью кнопки Новый, или перейдя по ссылке paradoxdream.com/ngen/new. Теперь нам придется потрудится чуточку больше. Создадим генератор предметов из книги. Для этого создадим в начале генератор. Добавим внутрь строку «Имплант: ». А затем словарь:
Аюрведический суперчип
Потайные монолезвия
Зрительные импланты с дополнительным модулем
Банк данных, встроенный в личную память
Проектор правдоподобных голограмм
Улучшенная печень и поджелудочная
Повторим операцию для остальных типов предметов. При желании, можно воспользоваться клонированием элементов и редактированием.
Итак, у нас получилось 6 не слишком полезных по отдельности генераторов. Галочки публичный я нигде не ставил, так что и смотреть особо нечего. Что нам теперь с этим делать? А теперь мы нажмем кнопку «объединение», что бы создать элемент этого типа. И перетащим все наши генераторы внутрь этого элемента. Теперь войдем в его редактирование, назовем Предметы и включим галочку Публичный.
Просмотр: paradoxdream.com/ngen/bodufoduv
Исходник: paradoxdream.com/ngen/clone/bodufoduv
Итак, объединение – это своего рода Словарь. В результате выбирается один из его вложенных элементов. Только в отличии от словаря, он может содержать в себе самые разнообразные элементы, а не только строки.
На этом, на сегодня все. Основные темы мы рассмотрели, ссылки на все примеры я дал.
ВАЖНО!
Если в процессе перетаскивания элементов «генератор» подвис, не надо пугаться. Нажмите на всякий случай кнопку «Сохранить», что бы никакие изменения не пропали, а затем обнавите страницу и можете продолжать. Баг этот я буду фиксить, но пока точно не знаю, когда у меня будет на это время. Опять же, я пока не знаю, в чем именно он заключается. Приношу извинения за возможные временные неудобства.
UPD:
И еще одно обновление, довольно важное для меня, потому что оно закрывает основные мои потребности от генератора и я теперь могу перенести все свои генераторы из прошлых систем. И самое сложное, наверное.
Для таких элементов, как генератор, объединение и словарь в редакторе появилось несколько дополнительных свойств, а именно:
1) Род/Число, думаю тут особо нечего пояснять.
2) Галочка «Не показывать», занести значение в переменную и не показывать. Имя переменной в которую будет занесено значение — это имя данного элемента, где включена эта галочка. Для того что бы вывести значение переменной можно пользоваться тем же синтаксисом, что и вставка элементов в строку. Только вместо ID элемента, надо вводить имя переменной. Например так: @(tavern_name)
3) Функция. На данный момент их всего две, «нижний регистр» и «склонение прилагательных». Если выбрать «нижний регистр», то после генерации все что относилось к данному блоку будет написано в нижнем регистре, даже если там раньше встречались заглавные буквы. Мелочь, но полезная. А вот про склонение я сейчас расскажу подробнее.
Тема может показаться довольно сложной, ну я надеюсь освоитесь. Пример будет прилагаться. Будем разбирать наш пример с генерацией имени таверны. Итак, у нас был следующий алгоритм генерации:
[Бегущий, Бережливый] [Бард, Акула, Болото]
Т.е. прилагательное+существительное. Но теперь нам придется его изменить. Нам в начале надо будет сгенерить существительное, узнать его род, потом сгенерить и просклонять прилагательное. Вот тут нам и понадобятся галочка «Не показывать», так как выводить существительное все равно надо в конце. А теперь попробуем это реализовать. В генераторе «ЗАПОМИНАЮЩИЕСЯ ПОСТОЯЛЫЕ ДВОРЫ» добавим элемент «объединение», назовем его например «tavern_name» и включим галочку «не показывать». Теперь перетащим внутрь словарь Элемент_5 и 2 раза склонируем. Теперь зайдем в каждый из них по очереди, и:
В первом поставим Род/Число в мужской, назовем для понятности мужской, сам словарь, и удалим из него все слова не относящиеся к мужскому роду. Затем второй установим в женский, и так же оставим только слова в женском роде. А потом третий пометим как средний, ну и удалим лишние слова. Наше объединение tavern_name перетащим в верх генератора. Теперь если мы вдруг посмотрим, что получилось, то увидим, что существительное исчезло из генератора. Это нормально. Теперь войдем в наш словарь прилагательных(элемент_3), и включим там функцию Склонение прилагательных. Обратите внимание, что сами прилагательные должны иметь именительный падеж. Итак, мы почти закончили, теперь войдем в редактор строки, там где раньше был просто пробел и измените ее на следующее: " @{tavern_name}". Это позволяет нам вывести существительное, которые мы сгенерили ранее. Сохраняем, смотрим. Если вы все сделали правильно, то все будет пучком! ;)
Рабочий вариант можно посмотреть тут: paradoxdream.com/ngen/rafej
Исходный код: paradoxdream.com/ngen/clone/zeluvejaz
Здесь я так же воспользовался функцией «нижний регистр», для запахов, в генератора «Постоялый двор 2». Но описывать не буду, сами разберетесь, если захотите ;)
Ну вот собственно и все. Думаю в ближайшее время значительных обновлений генератора не будет, потому что у меня сейчас есть ряд других, более приоритетных задач. Хотя баги, конечно, править буду. Может и функции добавлять — это не долго.
3 комментария
И еще одно обновление, довольно важное для меня, потому что оно закрывает основные мои потребности от генератора и я теперь могу перенести все свои генераторы из прошлых систем. И самое сложное, наверное.
Для таких элементов, как генератор, объединение и словарь в редакторе появилось несколько дополнительных свойств, а именно:
1) Род/Число, думаю тут особо нечего пояснять.
2) Галочка «Не показывать», занести значение в переменную и не показывать. Имя переменной в которую будет занесено значение — это имя данного элемента, где включена эта галочка. Для того что бы вывести значение переменной можно пользоваться тем же синтаксисом, что и вставка элементов в строку. Только вместо ID элемента, надо вводить имя переменной. Например так: @(tavern_name)
3) Функция. На данный момент их всего две, «нижний регистр» и «склонение прилагательных». Если выбрать «нижний регистр», то после генерации все что относилось к данному блоку будет написано в нижнем регистре, даже если там раньше встречались заглавные буквы. Мелочь, но полезная. А вот про склонение я сейчас расскажу подробнее.
Тема может показаться довольно сложной, ну я надеюсь освоитесь. Пример будет прилагаться. Будем разбирать наш пример с генерацией имени таверны. Итак, у нас был следующий алгоритм генерации:
[Бегущий, Бережливый] [Бард, Акула, Болото]
Т.е. прилагательное+существительное. Но теперь нам придется его изменить. Нам в начале надо будет сгенерить существительное, узнать его род, потом сгенерить и просклонять прилагательное. Вот тут нам и понадобятся галочка «Не показывать», так как выводить существительное все равно надо в конце. А теперь попробуем это реализовать. В генераторе «ЗАПОМИНАЮЩИЕСЯ ПОСТОЯЛЫЕ ДВОРЫ» добавим элемент «объединение», назовем его например «tavern_name» и включим галочку «не показывать». Теперь перетащим внутрь словарь Элемент_5 и 2 раза склонируем. Теперь зайдем в каждый из них по очереди, и:
В первом поставим Род/Число в мужской, назовем для понятности мужской, сам словарь, и удалим из него все слова не относящиеся к мужскому роду. Затем второй установим в женский, и так же оставим только слова в женском роде. А потом третий пометим как средний, ну и удалим лишние слова. Наше объединение tavern_name перетащим в верх генератора. Теперь если мы вдруг посмотрим, что получилось, то увидим, что существительное исчезло из генератора. Это нормально. Теперь войдем в наш словарь прилагательных(элемент_3), и включим там функцию Склонение прилагательных. Обратите внимание, что сами прилагательные должны иметь именительный падеж. Итак, мы почти закончили, теперь войдем в редактор строки, там где раньше был просто пробел и измените ее на следующее: " @{tavern_name}". Это позволяет нам вывести существительное, которые мы сгенерили ранее. Сохраняем, смотрим. Если вы все сделали правильно, то все будет пучком! ;)
Рабочий вариант можно посмотреть тут: paradoxdream.com/ngen/rafej
Исходный код: paradoxdream.com/ngen/clone/zeluvejaz
Здесь я так же воспользовался функцией «нижний регистр», для запахов, в генератора «Постоялый двор 2». Но описывать не буду, сами разберетесь, если захотите ;)
Ну вот собственно и все. Думаю в ближайшее время значительных обновлений генератора не будет, потому что у меня сейчас есть ряд других, более приоритетных задач. Хотя баги, конечно, править буду. Может и функции добавлять — это не долго.
paradoxdream.com/ngen/lawis
paradoxdream.com/ngen/kegik