[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-10 13:53:42
Да всё правильно написали, это очень сложная или скорее объемная задача. Поэтому не надо пытаться генерировать литературу машиной, надо поверх некого общего сюжета и продуманных персонажей впихнуть хорошую вариативность, которая таки будет сильно ограничена степенями свободы сюжета и прочих вещей. Такой подход уже опробован в различных играх и он оправдывает себя. В какой то мере можно привести тот же Fallout, там вроде открытый мир, но мы всё равно в лапах сюжета. Мне лишь хотелось бы чтобы с персонажами можно было более подробно общаться, а то они часто вообще не знают где находятся, даже дорогу не спросить (такая ситуация была в игре "Трудно быть богом").
[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-10 14:05:39
Хотя вы так смачно описали генерацию сюжета, что и это интересно было бы попробовать. Я бы не сказал, что существующие в репозитории игры (кроме портированных) сильно разнообразны сюжетами. Учитывая что для определённого жанра игр не требуется красочное литературное описание, быть может "электронный распорядитель игр" сможет внести в досуг много интересных загогулин, генерируя разные части сюжета и персонажи к ним. Сочинение произведения - это творчество, но ведь оно обязано подчиняться определённым законам и требованиям, 3-4 актная структура и т.п. :-) Если иерархически представить себе конструкцию из мельчайших действий до целых актов "экспозиция", "завязка", "поворот", "кульминация", "развязка" и т.п. то высокая вариативность может быть перерастёт в качество. Это не будет роман, сочинённый машиной, это будет игра, в которую можно играть то так то этак. Конечно это сложнее того, что я первоначально описывал. Думается начать надо с внедрения "вариативных персонажей" в более менее стабильный сюжет. Для примера берём "квантового кота" и реализуем все действия на основе честного добровольного выбора действий, расширяем набор возможностей, глубину персонажей. С каждым проигрышем игрок будет находить что то новое, какой то новый слой, который он до этого не видел. Ну в общем свой "Мир дикого запада" с блекджеком и прочими :-)
[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-10 15:34:39
> В общем, на мой взгляд, симуляция -- не улучшает сюжет или мысль произведения. Она немного "прячет" рельсы, но это похоже на обман.
А я думаю у неё такой функции и нет, чтобы улучшать сюжет и литературность или что то делать с рельсами, я думаю это просто другой жанр. Точно также как игры не являются книгами, а интерактивная литература не является аркадами, стрелялками и т.п. - игры с симуляцией - это особый вид искусства причём междисциплинарного, тут и литература и программирование и инженерия знаний. Думается и для них должна быть ниша. Кому то нравится жёсткий но хорошо прописанный сюжет, а кто то хочет наоборот повышенной интерактивности мира даже ценой утери его литературной составляющей. Пробовать песочницы - это тоже интересно. Не надо ничего "променивать", пускай расцветают тысячи цветов, нельзя же силой все усадить писать игры в одном жанре в одном стиле и т.п. Лично меня необычность Карантина потрясла, это было что то новое, как бы рассказ "Стой кто идёт" в интерактивной форме. Было бы скучно, если бы игр и кино не было, а был бы один исходный рассказ.
[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-10 18:57:30
Спасибо. Вообще если говорить о генерации сюжетов прямо с нуля, то на ум в первую очередь лезет Пропп с "Морфологией волшебной сказки", вот уж где по полочкам всё размазано.
Я наконец добрался до последних версий своего кода системы вывода и планировщика на старом компе, вроде выглядит неплохо, тут же куча написанных мной же исследовательских текстов по аспектам генерирования сюжетов. Это я написал когда меня накрыло в прошлый раз. Выглядит неплохо, надо интегрировать в Instead, а то я писал под внешнюю Lua IDE. По крайней мере целеориентированная парадигма ИИ с операторами и эффектами GOAP (применяется в когнитивных архитектурах Act-R, SOAR) понятно как работает и она концептуально проста, к тому же совместима со всеми подходами к логическому выводу, хотя как такового вывода не требует.
Задаём операторы (действия) которые создают некий эффект на состояние мира, например если персонаж поест, то он станет сытым, его вес увеличится и т.д., или если дверь закрыта и есть ключ то можно выполнить "открыть". Если дверь открыта, то можно пройти в локацию за ней. Таким образом попасть в локацию за дверью можно только найдя ключ. Планировщик может построить цепочку действий с минимальной стоимостью для достижения цели или провести верификацию какого то утверждения, таким образом для обычных игр Instead мы могли бы проводить верификацию проходимости ещё до запуска игры, а идеале этот же движок и должен реализовывать проверки,а не ручной код. Производительность труда для создания обычных игр должна существенно повыситься, т.к. это даже не конечный автомат, не система вывода вроде Пролога или CLIPS, а следующий уровень - планировщик, который позволяет связывать довольно общие определения, паршивенькая но модель левого полушария мозга :-)
[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-10 19:03:36
Кстати вот ещё практический подход, офигенская книга от создателя IBM Watson, я даже нашёл ранние версии кода:
Daydreaming in Humans and Machines: A Computer Model of the Stream of Thought
Попытка научить компьютер фантазировать и порождать сюжеты.
[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-10 19:07:25
Если кому интересно:
DAYDREAMER is a cognitive architecture that models the human stream of thought and its triggering and direction by emotions, as in human daydreaming. DAYDREAMER includes: daydreaming goals: strategies for what to think about; emotional control of thought: triggering and direction of processing by emotions; hierarchical planning: achieving a goal by breaking it down into subgoals; analogical planning (chunking): storing successful plans and adapting them to future problems; episode indexing and retrieval: mechanisms for indexing and retrieval of cases; serendipity detection and application: a mechanism for recognizing and exploiting accidental relationships among problems; and action mutation: a strategy for generating new possibilities when the system is stuck. DAYDREAMER is implemented as 12,000 lines of Lisp code.
Автор: крутой перец - Erik T. Mueller - на его логическом движке пашет IBM Watson. Судя по всему при должном масштабе этот подход работает.
[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-11 17:05:24
В общем я на вашей стороне. На этом этапе покушаться прямо на генерацию сюжетов - это самоубийство и никогда не будет сделано (кроме концептов генераторов сказок). Я долгое время ковырял лингвистику, это адова задача, хотя у меня накоплен немалый задел (в плане материала), в том числе большие тезаурусы с претензией на охват ВСЕГО. :-)
А вот оживить "традиционную" игру некой динамичностью с вариативностью игры персонажей - это более чем реально. Я пилю планировщик и концепт его использования в игре. Пытаюсь придумать какой нибудь сюжет, в рамках которого он выглядел бы красиво (как Карантин).
[>]
Re: Вопросы генерации сюжета машиной
std.tech
XSet(syscall,18) — Peter
2017-05-11 18:09:36
Ничего себе, "пока других идей нет", да уже эти две идеи прямо шедевральные и видимо хорошо подходят к возможностям планировщика! Завидую я (белой завистью) вашей созидательности, у меня какая то банальщина в голову лезет по Стругацким. Не обязательно конечно прямо этим сюжеты использовать, но направление мне понравилось, влияние на множество ботов к тому же итеративно. Кстати я изучил этот ваш "Восточный Экспресс", там рельсы сюжета весьма жёсткие, но персонажи действуют непрерывно и отклоняются от прямого выполнения строчка за строчкой, если сильное отклонение, то вылазит побочная концовка и надо продолжать с места ошибки (как фильме Исходный Код). Например можно ничего не делать, тогда в точное время взорвётся спрятанная сербами бомба и герой погибает, а можно выяснить что да как, найти бомбу и обезвредить. Но сюжет по сути один и он прямой, нельзя например снова зарядить бомбу и сойти с поезда оставив бомбу и т.п. Что мне понравилось - время течёт непрерывно, всё живёт и двигается. Что не понравилось - фактически нет общения с персонажами, всё сильно заскриптовано, нет вообще никакой свободы воли.
В общем я хотел бы что то больше похожее на Карантин, чем на пряморельсовый сценарий.