Снова генераторы


Первая статья тут: 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 комментария

avatar
Внес в генератор одно маленькое, но по моему, очень полезное изменение. Теперь при добавлении нового элемента(за исключением ссылок, пробела, клонирования), для вновь созданного элемента автоматически открывается редактор! Для, так сказать, уменьшения количества телодвижений.
avatar
Обновил пост...

И еще одно обновление, довольно важное для меня, потому что оно закрывает основные мои потребности от генератора и я теперь могу перенести все свои генераторы из прошлых систем. И самое сложное, наверное.
Для таких элементов, как генератор, объединение и словарь в редакторе появилось несколько дополнительных свойств, а именно:
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». Но описывать не буду, сами разберетесь, если захотите ;)

Ну вот собственно и все. Думаю в ближайшее время значительных обновлений генератора не будет, потому что у меня сейчас есть ряд других, более приоритетных задач. Хотя баги, конечно, править буду. Может и функции добавлять — это не долго.
avatar
Добавил пару забавных генераторов
paradoxdream.com/ngen/lawis
paradoxdream.com/ngen/kegik
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.