Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Принципы и алгоритмы сюжетной генерации | страница 5
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 5 из 16
На страницу: Пред.  1, 2, 3, 4, 5, 6 ... 14, 15, 16  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Принципы и алгоритмы сюжетной генерации»
Нужны ли такие сгенерированные сюжеты?
Да, всяко лучше, чем тупо бабло сколачивать - всегда есть чем заняться.
8%
 8%  [ 2 ]
Да, но только если хорошенько поработать над БД ситуаций и алгоритмами генерации
73%
 73%  [ 17 ]
Будет нелишне, хотя и не обязательно
13%
 13%  [ 3 ]
Нет, всё равно люди лучше придумают чем машина
4%
 4%  [ 1 ]
Нет, лучше усилия в другое русло направить (графику, например улучшить)
0%
 0%  [ 0 ]
Традиционный "пофиг".
0%
 0%  [ 0 ]
Всего проголосовало : 23
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Jerry Rezet :
"А если результат одинаков - зачем платить больше"?©
Jerry Rezet :
"Общая Теория Всего сСущщего",
Так я с тобой и не спорю Улыбка для несложного мира такой вариант прокатит и примеры этому есть, а более сложный игровой мир всё равно придётся делить на уровни детализации и на каждом более глубоком уровне потребуется учитывать всё больше параметров...

добавлено спустя 5 минут:
Чем хороши к примеру законы термодинамики или классической физики твёрдого тела? Они просты, так как их использование подразумевает всякие условности (упрощения и допущения).

Законы социума такими простыми формулами уже не опишешь, слишком много факторов надо учитывать иначе результаты моделирования будут неприемлемы для употребления...
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.

Последний раз редактировалось: Zachesa (13:34 21-01-2010), всего редактировалось 1 раз
    Добавлено: 13:34 21-01-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Zachesa :
для несложного мира такой вариант прокатит и примеры этому есть, а более сложный игровой мир всё равно придётся делить на уровни детализации и на каждом более глубоком уровне потребуется учитывать всё больше параметров...
Более сложный - это как? Дело в том, что я стараюсь добиться масштабируемости. То есть в сюжете будут некоторые переменные, которые можно и должно изменять с переходом игрока на новый уровень (определяемый не РПГ-шным левелапом, а возможностями - количеством баблосов, размером корабля и подконтрольного флота например). Например - выбирать соответствующих ему противников (по огневой мощи, например, или вместо отдельной персоны, что имеет место в начале игры, сначала фракцию (какой-нибудь пиратский клан), а потом вплоть до расы/альянса рас). То есть это один параметр как минимум. Желательно же иметь их поболее (но пока мне ничего в голову не приходит - буду рад предложениям). Тут в основе принцип "Что внизу - то и вверху", в том смысле, что упомянутые тобой законы термодинамики, равно как и статистики применимы как в микро- так и в макромире (от молекул и атомов до сообщества разумных).

Zachesa :
Законы социума такими простыми формулами уже не опишешь, слишком много факторов надо учитывать иначе результаты моделирования будут неприемлемы для употребления...
Ты ничего не слышал о математическом моделировании социальных/экономических/etz.. процессов? В них как раз и используется что-то вроде
Zachesa :
законы термодинамики или классической физики твёрдого тела
, так как поведение таких систем подчинено больше статистическим законам, чем особененостям логического мышления отдельных индивидов. Посему утверждения вроде
Zachesa :
Законы социума такими простыми формулами уже не опишешь, слишком много факторов надо учитывать иначе результаты моделирования будут неприемлемы для употребления...
я считаю несколько спорноватыми Улыбка Особенно в случае, когда нас устроит даже очень и очень приближённое подобие, ибо у нас всё же игра, а не симулятор политического мироустройства.
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 16:28 21-01-2010   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Кстати решил помучить поисковики на тему http://www.dreamer.ru/lit/soci/gulenv06.shtml
http://www.avtoradionsk.ru/texts/diklon.html

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

Последний раз редактировалось: Zachesa (17:24 21-01-2010), всего редактировалось 2 раз(а)
    Добавлено: 17:14 21-01-2010   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Zachesa :
В фэнтазийных игрушках можно примыкать к разным гильдиям и подняться одновременно наверх во всех них требует большого игрового времени. В игре вроде иксов и прочих такую возможность также можно предусмотреть, но придётся придумывать всё это искусственно, вводя в игровой процесс разного рода таинственные силы и их познание.

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

Последний раз редактировалось: Guest (18:39 21-01-2010), всего редактировалось 2 раз(а)
    Добавлено: 18:37 21-01-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Zachesa :
То что описываешь -- рост игрока по служебной лестнице в сингле организовать не сложно, только как можно дольше должна быть возможность к новым достижениям иначе оказавшись на вершине поймёшь, что игра закончилась...
То, что я описываю - не рост игрока по служебной лестнице. И совсем не обязательно в сингле. Ты или забыл, или не читал, но я упоминал несколько тезисов, на которых должно всё строиться. Что-то типа: "Всегда есть три вещи - кто-то сильнее тебя, то, где ты не бывал и дело, которым ты ещё не занимался". И это совсем не связано с карьерой или её ростом. Не просто "Ещё три звёздочки к званию в профиле", а соответствие сюжета возможностям игрока. "Карьерный рост" - это когда в иксах тебя, Рыцаря Королевства и Героя Федерации, олигарха и почётного ветерана при обращении за заданием на станции посылают попинать ногами за те же бабки, что и раньше будуЮщий труп какого-то задрипанного Юссандриоса Фигпоймиктоонтакой Хренассиоса, спёршего ещё более чем он сам задрипанный "Крокодил" и триста баксов жалкий миллион кредиток (не иначе оный миллион дорог своему владельцу разве что как память о первом заработанном).

Вот это - карьерный рост в играх. А то, что описываю я - это ситуация, когда игрок может выбрать адекватную своему уровню миссию, или ему могут предложить нечто большее, чем гоняться за тремя пиратами по пятачку 3x3 километра на эсминце, в то время как он их на любом корыте (лишь бы летало) порвёт как ботов. Подмигиваю
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 10:20 22-01-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Итак.. Есть табличка, в которой описан примерный смысл фраз, которые надо придумывать для сюжетного генератора. Горизонталь - действие (1. Атака/уничт 2. Защита/эскорт 3. Доставка/добыча 4. Разведка/поиск. 5. Патрулирование.), вертикаль - объект, к которому это действие применимо (1. Корабль(один/группа) 2. Объект/станция/фабрика (один/группа) 3. Товар/ресурс/предмет 4. Раса/фракция)

По этой подсказке придумывается фраза из нескольких взаимозамменяемых частей и записывается в xml-файл в следующем формате (пример для 1ой строки, 1го столбца - "Атака(уничтожение) Корабля (одиночного/группы кораблей)":
Код:
<!-- Атака, Корабль -->
<phrase ID="001001" obj="person" parts="3">
 <part n="1"> "Объект задания - %NAME%. </part>
 <part n="1"> "Необходимо найти некоего %NAME%. </part>
 <part n="1"> "Есть один субъект - %NAME%." </part>

 <part n="2">"Является опасным преступником."</part>
 <part n="2">"В своё время сильно надоел. А сейчас - опять за старое."</part>
 <part n="2">"Задрал нас уже серьёзно"</part>

 <part n="3">"Найти и уничтожить."</part>
 <part n="3">"Необходимо избавиться от него."</part>
  <part n="3">"Кто знает, что он ещё удумает, поэтому это надо пресечь."</part>
</phrase>

<!-- Атака, Корабль -->

ID - это типа идентификатора фразы, в то же время является указателем типа действия и объекта действия. Первые три цифры - тип действия (001-й - это "Атака/Уничтожение"), вторые три - объект (001-й объект - это корабль).

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

добавлено спустя 5 минут:
Таким образом мне требуется заполнить ячейки этой таблички фразами, соответствующими по смыслу заголовкам столбцов и строк. Буду благодарен, если кто-нибудь из пилотов просто даже в сообщении подкинет тот или иной вариант фразы - моя фантазия нынче в глубоком ауте. Буду рад любой помощи.

P.S.: Объявление: иссякла фантазия. Куплю,сниму в аренду, или приму в дар даже б/у. Гы-гы

добавлено спустя 11 минут:
Кстати, для тех, кто не хочет качать - сделаю просто скриншот таблички, один фиг, в качестве подсказки можно и картинку использовать Улыбка
 Собсно - Табличко.xls   (кликните здесь для просмотра)

P.S.: Там ещё вторая табличка "Причины" - это такая же подсказочка для написания фраз для "затравок миссии" - надо же объяснить игроку, зачем ему это надо делать, и что послужило этому причиной. Фразы составляются абсолютно аналогично первой табличке.

.xls
 Описание:
Excell-подсказка для придумывания сюжетных фраз.
 Имя файла:  .xls
 Размер файла:  21.5 KB
 Скачано:  360 раз(а)

_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]

Последний раз редактировалось: Jerry Rezet (07:06 28-01-2010), всего редактировалось 2 раз(а)
    Добавлено: 07:06 28-01-2010   
Minx
 980 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 136
Сообщения: 10528
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Jerry Rezet :
Итак..

А прогресс в чем?
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 16:20 28-01-2010   
Minx
 980 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 136
Сообщения: 10528
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Вспомнилась нижеследующее. Может поможет в чем-нить.

 Cкрытый текст   (кликните здесь для просмотра)
From : Peter Repin 2:5020/400 Птн 19 Окт 01 23:15
To : Alex Rakcheyev Птн 19 Окт 01 23:27
Subj : Re: Ищется генератор докладов
===============================================================================
From: "Peter Repin" <surg@nvkz.kuzbass.net>

Hello, Alex!
You wrote to All on Thu, 18 Oct 2001 19:38:28 +0400:
AR> Когда-то (лет 10-15 назад) в журнале "Огонек" была напечатана
AR> инструкция по генерации докладов на разного рода заседания и
AR> пленумы. Идея проста как три копейки: список фраз разбит на 3 или 4
AR> столбика. Рандомно берется фраза из первого столбика, из второго,
AR> третьего и четвертгог. Записывается получившееся предложение. Далее
AR> снова выбираются рандомные фразы.
AR> Получается этакий заумный доклад ниочем и весьма эхотажный. Так вот,
AR> если у кого либо завалялись эти самые столбики, то закиньте их плиз
AR> либо в мыло, либо в эху (ежели мод разрешит).

Таблицу в эху слать не получится, пишу по столбцам:

I столбец:
1. Товарищи! (Господа!)
2. С другой стороны,
3. Равным образом,
4. Hе следует, однако, забывать, что
5. Таким образом,
6. Повседневная практика показывает, что
7. Значимость этих проблем настолько очевидна, что
8. Разнообразный и богатый опыт
9. Задача организации, в особенности же
10. Идейные соображения высшего порядка, а также

II столбец:
1. реализация намеченных плановых заданий
2. рамки и место обучения кадров
3. постоянный количественный рост и сфера нашей активности
4. сложившаяся структура организации
5. новая модель организационной деятельности
6. дальнейшее развитие различных форм деятельности
7. постоянное информационно-пропагандистское обеспечение нашей деятельности
8. управление и развитие структуры
9. консультации с широким активом
10. начало повседневной работы по формированию позиции

III столбец:
1. играет важную роль в формировании
2. требует от нас анализа
3. требует определения и уточнения
4. cпособствует подготовке и реализации
5. обеспечивает широкому кругу (специалистов, предпринимателей, депутатовУлыбка возможность подготовки
6. участвует в формировании
7. позволяет выполнить важные задания по разработке
8. в значительной степени обуславливает создание
9. позволяет оценить значение (представляет собой интересный эксперимент проверки)
10. влечёт за собой интересный процесс внедрения и модернизации

IV столбец:
1. существующих финансовых и административных условий.
2. дальнейших направлений развития.
3. системы массового участия.
4. позиций, занимаемых участниками в отношении поставленных задач.
5. новых предложений.
6. направлений прогрессивного развития.
7. системы обучения кадров, соответствующей насущным потребностям.
8. соответствующих условий активизации.
9. модели развития.
10. форм воздействия.

_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 01:42 29-01-2010   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
как тут не вспомнить Остапа Бендера и его "Незаменимое пособие для сочинения юбилейных статей, табельных фельетонов, а также парадных стихотворений, од и тропарей"
http://petrov.com.ua/GoldCalf/pages/52.htm
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 02:24 29-01-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Minx :
Jerry Rezet :
Итак..

А прогресс в чем?
Это не прогресс, это просьба о помощи. Вот и всё. У меня фантазия закончилась.
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 11:28 29-01-2010   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
В табличке много сокращений, поэтому не всё понятно. Могу помочь дополнить вариантами, но всё зависит от модели мира и игровой механики. Вариантов заданий может быть больше.

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

Вообще стоит разнообразить задания, общением с третьими лицами при поиске информации, получении технической, финансовой или военно-силовой помощи.

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

Также добавить пункты: если ограничения по времени, дополнительная информация, где искать объект воздействия или дополнительно у кого эту информацию можно получить (купить, украсть, отобрать).

Сделать возможность связки заданий между собой для образования квеста. К примеру надо отобрать кристалл, найти аппарат в который этот кристалл вставляется прочитать там информацию, по координатам отыскать корабль выбить оттуда владельца, выбить из него следующий пункт куда надо лететь и так далее хоть до бесконечности Подмигиваю
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 12:37 29-01-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Zachesa :
Вариантов заданий может быть больше.
Естественно. Это только основной костяк, остальное добавить не проблема. Была бы фантазия. Вопрос в другом - я пока иссяк насчёт данного конкретного дела - не могу выдумать части фраз для основы генератора. Вот и всё.
Minx :
Вспомнилась нижеследующее. Может поможет в чем-нить.
Это, наверное, оно и есть. С точностью до константы. [; По крайней мере принцип тут тот же. Не виду ничего плохого в том, чтобы применить это к играм. ;D
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 12:44 29-01-2010   
Raunijar
 215 EGP


Рейтинг канала: 2(15)
Репутация: 46
Сообщения: 245
Откуда: Sol III. Terran swamp
Зарегистрирован: 07.01.2008
Но это не «генерируемый сюжет», а каша из нагенерированных миссий, между собой не взаимосвязанных.
Zachesa :
и так далее хоть до бесконечности

А название топика кагбе намекает нам и, помнится, поначалу были размышления по поводу структурно вложенных генерируемых ситуаций, из которых возможно построение сюжета и потом уже отдельных событий..
_________________
EkerilaR asugisalas muha haite gagaga ginuga he lija hagalawijubig
    Добавлено: 13:59 29-01-2010   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Jerry Rezet :
не могу выдумать части фраз для основы генератора
если ты о воде, которой надо разбавлять фразы, то это можно набросать влёт используя словарь синонимов.

Тот минимум что ты предложил дальше можно расширять только затачивая идей под конкретный проект. Присоеденяйся http://www.elite-games.ru/conference/viewtopic.php?p=2383405#2383405 и доработаем твою идею применительно к Elite on-line.
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 14:10 29-01-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
От же ж блин.. Значит придётся самому.. "Злые вы.. Уйду я от вас."©
Zachesa :
если ты о воде, которой надо разбавлять фразы, то это можно набросать влёт используя словарь синонимов.
Какае, к чёрту, синонимы? Минкс ясно выразился что тут требуется с его "шпорой для докладов".
Zachesa :
Тот минимум что ты предложил дальше можно расширять только затачивая идей под конкретный проект. Присоеденяйся http://www.elite-games.ru/conference/viewtopic.php?p=2383405#2383405 и доработаем твою идею применительно к Elite on-line.
Сначала помогите хотябы продолжить, чтобы было что присоединять. А уж с готовой реализацией пристроиться - раз плюнуть.
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 17:38 29-01-2010   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Так у тебя базис и так готов, потому ты и не можешь дальше сдвинуться, так как дальше идёт кастомизация.
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 17:59 29-01-2010   
Minx
 980 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 136
Сообщения: 10528
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Кстати, любую лингвистическую генерацию проблематично локализовать потом будет. Это так, наблюдение.

А форму генерации я бы изменил на множество вложенных макросов (при желании можно и в XML, не в этом суть).

Например так:

Код:
%PERSON_ATTACK% = {%WHO% [%REASON% %HOW_TO_FIND% %MISSION_ATTACK%]}
%WHO% = {Объект задания - %NAME%}, {Необходимо найти некоего %NAME%.}, {Есть один субъект - %NAME%.}
%REASON% = {Является опасным преступником.}, ...
%HOW_TO_FIND% = {В %TIME% планирует отправится из порта %STARPORT% системы %SYSTEM%}, {Согласно разведданным до %TIME% он будет находиться в "%STARPORT%, %SYSTEM%".}, ...
%MISSION_ATTACK% = {"Найти и уничтожить."}, ...

[%REASON% %TO_FIND% %MISSION%] - перечисление в произвольном порядке (random_shuffle).

И потом можно будет написать так:
Код:
%PERSON_FIND% = {%WHO% [%REASON% %MISSION_FIND%]}
%WHO% = {Объект задания - %NAME%}, {Необходимо найти некоего %NAME%.}, {Есть один субъект - %NAME%.}
%REASON% = {Является опасным преступником.}, ...
%MISSION_FIND% = {Найти, где он скрывается. В последний раз его видели в системе %SYSTEM% на корабле %SPACESHIP%.}, { Его корабль %SPACESHIP% был замечен в системе %SYSTEM%. Нам требуется срочно его разыскать."} ...

Таким образом, достаточно будет при задании миссии сформировать окружение (%NAME%, %SYSTEM%, ...) и вне зависимости от типа задания производить генерацию.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 03:54 31-01-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Minx :
Кстати, любую лингвистическую генерацию проблематично локализовать потом будет. Это так, наблюдение.
Эмм.. Это ты так перевод обозвал?
Minx :
А форму генерации я бы изменил на множество вложенных макросов (при желании можно и в XML, не в этом суть).
v2.0 Обязательно попробую. Пока буду развивать свой метод, естественно, он не идеален, будем считать его версией 0.1, в конечном итоге перейти к твоему способу макросов - я не очень хорошо понимаю что такое макросы (в качестве языка описания), но, думаю, стоит покопать в этом направлении. Громадищще пасибищще!!!111oneone Супер!
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 10:24 31-01-2010   
Minx
 980 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 136
Сообщения: 10528
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Jerry Rezet :
Эмм.. Это ты так перевод обозвал?

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

Jerry Rezet :
я не очень хорошо понимаю что такое макросы (в качестве языка описания)

http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BA%D1%80%D0%BE%D1%81

Выше написал в толькопридуманном синтаксисе, чтобы интуитивно понятно было.
У тебя %NAME% - это макрос. Вложенный макрос подразумевает, что после макроподстановки возможно потребуется провести макроподстановку ещё раз.
При генерации на вход функции подается выражение, а в памяти имеется много макросов. Это выражение заменяется в результате парсинга на новое до тех пор, пока макросы в выражении не закончатся.

---

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

В предыдущем имеем:
Код:
%PERSON_ATTACK% = {%WHO% [%REASON% %HOW_TO_FIND% %MISSION_ATTACK%]}

Т.е. тут может быть сгенерировано 6 вариантов (3!=6 для того, что внутри []). И тут все что хотим сказать - это то, что WHO должен идти ранее чем другие.

Но если рассматривать общий случай, то более гибким и точным вариантом является не сборка такой строки "{%WHO% [%REASON% %HOW_TO_FIND% %MISSION_ATTACK%]}" ручками, а задание условий на последовательность сборки. Одним из самых общих условий является требование, чтобы информация X в задании подавалась ранее информации Y. Т.е. для описываемого примера это будет: для того, чтобы сказать %REASON%, мы уже должны сказать %WHO%, для того, чтобы сказать %HOT_TO_FIND%, мы должны уже сказать %WHO%, и т.д.
Множество данных условий можно представить следующим образом (макросы уже тут не сработают, или сработают, но это уже не их ниша):
Код:
<mission_find_person>
  <items>
    <item name='who' />
    <item name='how_to_find' />
    <item name='reason' />
    <item name='mission_find' />
  </items>
  <dependences>
    <after what='how_to_find' from='who' />
    <after what='reason' from='who' />
    <after what='mission_find' from='who' />
  </dependences>
</mission_find_person>


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

%TIME_LIMIT% = {Нам он нужен до "%END_TIME%".},{До "%END_TIME%" миссия должна быть выполнена.}, ...

и соответственно хотим, чтобы данное выражение шло после %HOW_TO_FIND%. Получаем:
Код:
<mission_find_person>
  <items>
    <item name='who' />
    <item name='how_to_find' />
    <item name='reason' />
    <item name='mission_find' />
    <item name='time_limit' />
  </items>
  <dependences>
    <after what='how_to_find' from='who' />
    <after what='reason' from='who' />
    <after what='mission_find' from='who' />
    <after what='time_limit' from='how_to_find' />
  </dependences>
</mission_find_person>

В результате могут быть сгенерированы следующие последовательности:
Код:
 1. who how_to_find reason mission_find time_limit
 2. who how_to_find reason time_limit mission_find
 3. who how_to_find time_limit mission_find reason
 4. who how_to_find time_limit reason mission_find
 5. who how_to_find mission_find time_limit reason
 6. who how_to_find mission_find reason time_limit
 7. who reason how_to_find mission_find time_limit
 8. who reason how_to_find time_limit mission_find
 9. who mission_find how_to_find time_limit reason
10. who mission_find how_to_find reason time_limit
11. who mission_find reason how_to_find time_limit
12. who reason mission_find how_to_find time_limit

P.S. Если кто возьмется за реализацию, не забудьте проконтролировать равномерность распределения получаемых последовательностей на выходе.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (03:45 01-02-2010), всего редактировалось 2 раз(а)
    Добавлено: 00:56 01-02-2010   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Minx :
P.S. Если кто возьмется за реализацию, не забудьте проконтролировать равномерность распределения получаемых последовательностей на выходе.
Немного не понял как "контролировать равномерность" и что такое в данном случае понимается под термином "равномерность"?
Minx :
Выше написал в толькопридуманном синтаксисе, чтобы интуитивно понятно было.
У тебя %NAME% - это макрос. Вложенный макрос подразумевает, что после макроподстановки возможно потребуется провести макроподстановку ещё раз.
При генерации на вход функции подается выражение, а в памяти имеется много макросов. Это выражение заменяется в результате парсинга на новое до тех пор, пока макросы в выражении не закончатся.
Тут уже, думаю, неплохо бы всё писать на более высокоуровневом языке, чем просто C++, - Python, например. Читаем из файла, парсим, и рассовываем всё по переменным (имхо - по строковым массивам), и выводим составленную фразу путём выборки по заданным правилам путём сложения выбранных строк. Мдя.. Похоже стоит ещё и Питона укрощать ;-D
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 10:48 01-02-2010   
Канал Игры Мечты: «Принципы и алгоритмы сюжетной генерации»
На страницу: Пред.  1, 2, 3, 4, 5, 6 ... 14, 15, 16  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Надя, умоляю, не закрывай темку, я щас, только за пивом сбегаю! (умолял 027)

  » Принципы и алгоритмы сюжетной генерации | страница 5
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18