RSS
# Re: Критерий идеальной игры.
std.game
lisptracker(syscall,54) — Peter
2020-02-13 16:51:14


Я давно это читал думал об этом. Есть существенный аргумент:

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

Большая часть игр ТОЖЕ не имеет настолько интересных сюжетов, чтобы сразу засчитать поражение компьютерному сочинителю :-) Ну и какой сюжет в "Карантине" когда игрок занят выявлением чужих ? Да и в других играх, та же картина, сюжет это в основном рамки, а геймплей - это не пустое место, убери минимальную свободу действий и получится просто книга. Она может и воздействует на читателя, но явно не так как игра. По моему вопрос слишком доводится до крайности. Я долго откладывал, потому что некогда было писать целую игру, но несколько простых экспериментов с "Карантином" с ходу подтверждают, что более живой мир придаёт игре гораздо большую глубину, а способности людей как уникальных творцов сильно преувеличены, большая часть креатива - это просто комбинации старого. То есть сочинять надо и сюжет нужен, но и машина не так плоха, как её пытаются представить :-)

# Re: Критерий идеальной игры.
std.game
lisptracker(syscall,54) — Andrew Lobanov
2020-02-12 12:29:49


Я согласен, оборотная сторона медали тоже неприятна, например тот же Mount and Blade, много свободы и много пустоты. Но ИМХО куча линейных игр всё равно это не заменяет. При том, что технология книг или линейных игр давно устоялась, а технология создания живых игр ещё похоже только начинается, хотя в истории было куча прецедентов. Я думаю рогалики - это не совсем тот пример, я бы даже предложил создавать не большой мир и набор правил, а наоборот небольшую локацию, с рядом подлокаций, как в Карантине, и углублять детализацию самих персонажей и локаций, то есть бродим не по большому лабиринту в пространстве, а по лабиринту отношений между персонажами, предметами, проблемами. Я понимаю, что возникнут проблемы стабильности, но это ведь экспериментальная задумка, а не проект уровня топовых студий, которые боятся выпускать что то кроме рельсовых сюжетов. А там может быть какие то принципы создания таких штук кристаллизуются и станет ясней насчёт стабильности. Ограничено стабильность можно задавать теми же внедрёнными сюжетами, а так же средствами верификации на основе самого же движка, т.е. попросить движок проверить достижимость каких то состояний, хотя конечно если много предметов, персонажей и т.п. не факт что удастся учесть всё. Опять же многие ли игроделы используют Model Checking для проверки достижимости недопустимых состояний ? Думаю всё таки эту сферу сильно сдерживает несовершенство инструментов и привычки разработчиков.

Есть ещё мысль, что для разбиения гордиева узла, насчёт мышления персонажей и сложности общения с ними можно попробовать методы машинного обучения. По крайней мере в конечном виде сеть преобразования для чат бота в наше время сводится большей частью к обычным сетям прямого распространения, даже LSTM не надо реализовывать. Это ж можно и на Lua тогда исполнять. Генерируем ситуации, обучаем реакциям, или фразам, потом веса переносим в Lua и используем для приниятия решений персонажами. Вряд ли такое было в каких то рогаликах и нетхаках, и вообше там вряд ли можно нормально поговорить с персонажами, в том смысле, что хотелось бы чтобы персонажи оперировали недавними событиями их мира с точки зрения своих действий и целей, а не говорили как попугаи заранее заложенные утверждения. Например персонаж мог попросить вас помощь что то получить или куда то пройти, может быть что то донести или посторожить. Потом подошёл другой персонаж и спрашивает мол ты тут чего, а ты мол Сарумян попросил посторожить его любимый Плантир, пока он сбегает настучит оркам по башкам посохом. В общем в таком супе взаимодействия может родиться куча всяких сюжетов (как в игре Космическая Станция 51). Думаю даже при относительно фиксированном количестве действий, но достаточно большом, будут завязываться всякие дикие комбинации, которые разработчику даже не могли прийти к голову.

# Критерий идеальной игры.
std.game
lisptracker(syscall,54) — Peter
2020-02-11 17:24:06


Вообще, развивая предыдущую мысль, можно вывести асимптотический (недостижимый) критерий идеальной или абсолютной игры (играбельности). Это когда сам автор, зная о её устройстве, естественно сюжете и т.п. имел большое желание играть в неё снова и снова. Например большая часть игр, которые мне встречались на Instead, всё таки были построены на парадигме литературы, т.е. кто то придумал-продумал сюжет, головоломки, персонажей и т.п. атрибуты литературного произведения. Конечно всякие мини-игры повышают повторную играбельность, но в целом раз ты уже прочитал книгу, снова читать не так интересно, а когда ещё сам же её написал - то нет уже притягательности радости познания нового.

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

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

А как хорошо работает идея, что каждый раз чужой кто то неизвестный ! Но вот проблема, в игре персонажи конечно интересно описаны по профессиям, картинки есть, но дальше в них нет почти никакой разницы, за исключением паники и что чужие ведут себя по другому. Если усилить эффект их разности по специализации, характерам, моральному состоянию, то смена заражённого будет давать ещё больший эффект, потом в игре они сидят на месте и ничего не делают. Это не критика, я понимаю, что это стиль игры вынуждено такой. Я просто думаю в порядке эксперимента может быть поднатужиться и получится всё таки чтобы завертелось и не рассыпалось. То есть персонажи допустим пускай ходят и выполняют какие то обязанности, обмениваются информацией и это тоже будет источником для выявления чужого, в том числе интересно будет фильтровать дэзу (надо продумать, чтобы это не сводилось к "не проверить где тут правда"), может быть чужим надо дать более ущербную память, чтобы они не могли назвать каких то фактов из жизни их исходных персонажей и т.п., но и самому игроку чтобы эти факты надо было добывать (как вариант документы у начальства, перекрёстные расспросы и т.п.). Ну и всё таки тут есть элемент логической игры, например группа утверждает, что жену Медведева зовут Света, а он сам говорит что Ольга, группа вроде бы имеет больший вес, но может быть Медведев чужой, а может быть наоборот вся группа чужие.

Насколько я помню из ранних обсуждений трудность в создании такой системы виделась в её сложности, т.е. попросту сложно такое вручную запрограммировать. Но я подозреваю, что как в случае самого движка Instead, который облегчает львиную долю вопросов программирования интерактивной литературы и не только, просто требуются более правильные инструменты и подход. Т.е. нельзя это программировать вручную, надо сразу закладывать управление персонажами, предметами и т.п. на планировщик, он же должен помощь верифицировать какие тупиковые ситуации, т.е. состояния которые не должны быть достигнуты. Но в случае "Карантина" я заметил, что все так уж мрачно, приделывать какие то новые поведения в целом не так уж трудно, даже когда игра на это не была изначально заточена (благодаря объектной ориентированности движка). Думаю как раз главная угроза в том, что замахнувшись сразу на ВСЁ, трудно достичь результата и энтузиазм быстро падает. Если приделывать элементы постепенно, то вероятность достичь наивысшей точки гораздо выше :-)

# Re: Изменения в играх. Плагиат. Живой мир.
std.game
lisptracker(syscall,54) — Peter
2020-02-11 16:53:41


Наверное вы правы. Я бы ещё хотел обратить внимание на одно негативное явление, связанное с обновлениями API. Основное обучение всё же происходит при изучении чужого "боевого" кода, а вот в документации и полноте отражения всех приёмов я далеко не уверен. ИМХО вы как автор движка и другие опытные разработчики позволяете себе гораздо больше, чем отражено в документации, иначе многие шедевры (вроде "Карантина") бы вовсе не появились. К примеру документация как бы тяготеет к тому, что мир состоит из по большей части статично сцепленных объектов, особенно локаций (в парсере вообще целая система объектов и атрибутов), но любая мало-мальски сложная игра в первую очередь рушит эту статичность, для её обхода используются разные приёмы, которые скорей всего можно узнать только изучая код опытных разработчиков. Потом есть ещё такой момент, что API часто сверкает каким нибудь синтаксическим сахаром (к примеру система диалогов), но теряет прозрачность и управляемость с точки зрения программирования, для диалогов не совсем очевидно как полностью программно управлять диалогом, а для метапарсера хотелось бы большего контроля над процессом разбора и подсказок. Вы наверняка скажете, что это всё есть, но мне как не очень опытному "инстедеру" это не так очевидно, скорее всего вы даже представить не можете насколько эти детали могут быть не ясны.

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

# Изменения в играх. Плагиат. Живой мир.
std.game
lisptracker(syscall,54) — All
2020-02-11 12:12:51


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

Речь идёт об игре "Карантин" Петра. Как мне кажется самая перспективная игра в плане создания живого мира. Я понимаю, что Пётр специально заблокировал персонажам возможность активно шастать, чтобы можно было "делать ходы", пока ситуация заморожена. Но всё равно это одна из самых живых игр для дополнения. Пока начал с баловства для разминки. Например я добавил туда ещё коробку патронов и перезарядку револьвера, когда патроны заканчиваются, а также возможность пристрелить любого, даже если он был человеком. Но есть куча идей, чтобы разговоры с персонажами имели смысл, т.е. тварь можно было поймать на слове, сравнивая какие то факты (может быть записи в документах имена жён и детей, прошлые разговоры). Чтобы все персонажи перемещались в Live и имели какие то задачи и цели, имели какое то представление о мире игры и его ограничениях (типа заперто-не войти, холодно-нельзя оставаться спать и т.п.), выполняли планирование действий из множества вариантов. Надо больше предметов и их взаимодействия. Я понимаю, что в текущем квесте-детективе количество предметов чётко выверено для поставленной задачи. Но если лепить живой мир, но там механика вынуждена быть другой, иначе персонажам будет нечем заняться, например думаю они должны есть и может быть даже ходить в тот самый туалет, который сейчас посещает только главный герой :-)

В общем если кому интересно, можно скооперироваться. Я бы даже сказал, что парсер лучше подходит, но в нём чёрт ногу сломит, надо чтобы эта система была достаточно гибкая, а в парсере уже довольно "настойчиво" заложена определённая модель (хотя может быть это и надо). У меня есть простой целеориентированный планировщик, позволяющий построить план действий из набора действий и простых эффектов вроде флагов со значениями true false, он же позволяет строить пути через комнаты и верифицировать при необходимости любые состояния сводимые к таким флагам. Есть также самодельная версия движка обратного вывода аля Пролог, т.е. задаём факты и просим систему "доказать" некий факт. Может быть можно как то всем миром потихоньку создать самостоятельную игру ?