Тему оживили) Хотел бы напомнить что я остановился на ...
В качестве примера возьмем колоду игральных карт. Сами по себе они дают множество вариантов расклада 8*10^67.
Но пока это не покерная комбинация – они просто карты. И когда у игры выпадает 2 пик и 2 треф, или Валет черв и Валет буб – то это пара. Так же и у нас в игровой модели должны быть прописаны готовые комбинации для происхождения событий в игровом мире. Только у нас несколько колод. Колода НПС где масти это сословия, а старшинство карты ранг в сословии. О есть у нас получится сословия 1) духовенство, от 2ки – это послушник до Туза это Папа Римский(или Архипеископ). 2) знать от придворного до короля, 3) торговцы от ремесленника до главы гильдии, 4) крестьяне от простого до старосты, 5) бродяги – от нищего до менестреля. И т.д. В другой колоде находятся предметы. В третьей колоде находятся местоположение. И далее.
Таким образом можно будет представить обычное событие как выпадение нужной комбинации в нашем покере на кучу разных колод. И все наши события лишь выпадение комбинаций из собственный таблицы, а игровой процесс – просто перетасовка карт. То есть на пустынной дороге выпало – купец без охраны + бандит + пустынная местность = ограбление. Это конечно сильно упрощенный вариант.
Belfegnar
> ведь человек что-то делает чаще всего потому,
> что ему так просто в башку взбрело.
Ага, я понял, о какой иррациональности ты говоришь.
Для движка она тоже ничем не отличима от рациональности. :) Просто в формулы поведения персонажа гейм-дизайнер добавит немного генераторов случайных чисел. :) Движку ведь все равно, что вычислять - рандом или синусоиду. :)
Но вообще, действительно, можно существенно упростить гейм-дизайнеру эту часть работы - заточив движок специально под такие штуки. Это будет выглядеть так...
"РАЦИОНАЛЬНЫЙ" ДВИЖОК
NPC встретил в лесу разбойников. Рассчитал свои шансы достижения следующих состояний:
1) победить в битве - 20%;
2) убежать - 40%.
Все эти шансы меньше 50% - поэтому NPC счел разумным отдать разбойникам деньги.
Т.е. ВСЕГДА в ТАКОЙ ЖЕ ситуации он будет отдавать им деньги.
"ИРРАЦИОНАЛЬНЫЙ" ДВИЖОК
После расчета шансов NPC совершит одно из следующих действий:
1) вступит в бой - с ВЕРОЯТНОСТЬЮ 20/(20+40+100) = 12.5%;
2) побежит - 25%.
3) отдаст деньги - 62.5%.
Т.е. НЕ ВСЕГДА в ТАКОЙ ЖЕ ситуации он будет отдавать им деньги... :)
Движок еще можно доработать так, чтобы при выборе действия он как-то художественно обыгрывал происходящее (выбирая подходящие сценки из заложенных гейм-дизайнером). Ведь с точки зрения игрока, наблюдающего за ситуацией со стороны: если NPC выбрал бой при столь объективно ничтожных шансах - значит, у него какое-то особенное настроение. И вот это надо показать. NPC, например, выхватывая из котомки ржавый ножик, крикнет: "Да как вы достали уже!" или: "После всего того, что со мной было на этой неделе, мне уже ничего не страшно!" Ну и еще упомянутые тобой когнитивные искажения: "Мы еще посмотрим, кто кого! В этом лесу мне всегда везло! И вообще, у меня сегодня удачный день!" :)
Хотя, в принципе, аналогичных эффектов можно достичь и на "рациональном" движке, если эмоции явно заложить в формулы оценки шансов, в формулы ценности для NPC его собственной жизни, в формулы агрессивности... NPC тогда будет выбирать бой не рандомно, а имея к тому "реальные человеческие обоснования". :) (Хотя и гейм-дизам, наверное, придется потрудится побольше, выстраивая систему этих обоснований.)
Virtex
> Ведь с точки зрения игрока, наблюдающего за ситуацией со стороны: если NPC
> выбрал бой при столь объективно ничтожных шансах - значит, у него какое-то
> особенное настроение. И вот это надо показать. NPC, например, выхватывая из
> котомки ржавый ножик, крикнет: "Да как вы достали уже!" или: "После всего того,
> что со мной было на этой неделе, мне уже ничего не страшно!"
А игрок скажет: "Да чего он несет?? Я за ним всю неделю наблюдал. Он только и делал, что собирал урожай в поле, да относил его на рынок, в перерывах посиживая в трактире. О чем он вообще?". Рандом он такой, иногда рандомные события вызывает=)
Надеюсь на наличие чувства юмора.
// хороший сценарий, интересная история
Интересность - это выдумка, или занавеска-обёртка чего-то.
Оценка "хороший" - пустышка во всех смыслах.
Чего хотят люди, которые ставят на первое место мутные термины и пустые оценки ?
Они хотят живого мира. Мутного и пустого.
Итого..
Не надо слушать хотелки.
Нужно делать клоны того, что нравится из доступного.
Virtex
> slatazan, говоря проще, ты предлагаешь неписям накапливать разнообразный
> жизненный опыт и потом наиболее значимые его кусочки учитывать в поведении?
Это и есть стек спичечных коробков самообучающего робота. При этом, нет никакой проблемы в железе, ибо слоты:)
Кстати, легко синтезируется с банальным и избытым от Krstn:
> В качестве примера возьмем колоду игральных карт.
> И все наши события лишь выпадение комбинаций из собственный таблицы, а игровой процесс – просто перетасовка карт
Belfegnar
> "я искал сюжетного персонажа два дня, а он улетел на Марс и там помер от тоски"
Belfegnar
> Так как же нам, действительно, имея на руках хороший сценарий, интересную
> историю, книгу или фильм, присобачить его к обсуждаемой системе "живущего" мира?
> Ответ: никак.
Для этого достаточно иметь дополнительный блок для "оживления" запоротой ситуации. Я где-то об этом указывал:)
Это как в настольных ролевых играх, когда DM вытягивает ситуацию, если игроки не могут решить загадку или найти ключ к дверям. Игрокам подбрасывают спасительную соломинку:) В нашем случае, это будет запуск отдельных случайных "находок".
Belfegnar
> убрать из сценария конкретных героев. То есть, условно, не "Иван, не стерпев
> предательство брата, уехал в соседнее село", а "некто, с такими-то
> характеристиками, решит сделать то-то".
Это одно, нет разницы. Есть база данных, но эта база наполнена просто сущностями.
Belfegnar
> И, если такой персонаж есть в мире, на него "надеваем" этот сюжетный момент. А если такого нет, то и нет=)
Так и работают скриптовые системы в интерактивных приключениях.
Это включаемый набор эпизодов, какие "картинки" увидит пользователь -> от условий переключателей и наличия переключателей. То есть, если сущность ЩQz?# не существует (или не активна), то ничего не произойдет в мире (либо в проверке по зонам-локациям-маякам)...
Belfegnar
> А игрок скажет: "Да чего он несет?? Я за ним всю неделю наблюдал. Он только и
> делал, что собирал урожай в поле, да относил его на рынок, в перерывах
> посиживая в трактире. О чем он вообще?". Рандом он такой, иногда рандомные события вызывает=)
Это не рандом, это... вы описываете баг игры:)
То есть, оппонент описывал схему поведения, от стеков алгоритма. А как это будет работать, уже и зависит от ума разработчика. Если он поспешит или не поймет, что от него требуется, то он и допустит такой баг:)
Выше - там все нормально, ведь программа будет следить за всеми состояниями и переключателями.
И если персонаж кричит и недоволен, то это только по случаю срабатывания ситуации и проверки его душевного состояния...
D-Prince, от какого английского слова происходит "стек"?
А то понять сложно, что ты имеешь ввиду. Мы например стеками в керамической мастерской работали :)
MixeYa
> А то понять сложно, что ты имеешь ввиду.
> Мы например стеками в керамической мастерской работали :)
Ты видимо форумом ошибся, нет?:)
Если нет, тогда вот: http://ru.wikipedia.org/wiki/Стек
==
А если ты про робота не понял, то вот же, в этой теме:
http://www.gamedev.ru/gamedesign/forum/?id=171966&page=2#m17
Добавлю 5 копеек.
Слишком сложная система может отбить интерес игрока.
Поэтому нужно добавить элемент везения. Не может герой в течение какого либо времени найти нужного NPC и тут их пути "случайно" пересекаются.
SkmDeveloper
> Не может герой в течение какого либо времени найти нужного NPC и тут их пути "случайно" пересекаются.
Ну... это же имеет прямую связь уже к сказанному:
> Это как в настольных ролевых играх, когда DM вытягивает ситуацию, если игроки
> не могут решить загадку или найти ключ к дверям. Игрокам подбрасывают
> спасительную соломинку:) В нашем случае, это будет запуск отдельных случайных "находок".
То есть, действительно, "спасительные соломинки" могут обыгрываться или включаться по разному.
D-Prince, ты уже много раз пользуешься этим термином, но моя твоя не понимать... Ну никак...
Поэтому спросил.
Virtex
В идеале, конечно, было бы здорово обойтись без полумер.
Другой вопрос, насколько это понравится игроку (массовому)... Я уже говорил про потерю им контроля над игрой. Если в игре будет всё как в реальной жизни - то и игрок будет там никем, и ничего не достигнет. :)
Второй вопрос - во сколько раз увеличится трудоемкость для гейм-дизайнеров. Ведь иррациональных правил поведения очень много, их замучаешься все описывать.
Ну и третий - технические ограничения. Изобилие правил поведения у NPC потребует мощных вычислительных ресурсов, обычный комп не осилит такое...
Так что, сколь бы красиво мы тут ни напридумывали всяких "душевных NPC", но при практической реализации придется очень многое урезать. И надо подумать, как сделать это красиво. :) В этом состоит мастерство гейм-дизайнера.
Кое-что вспомнилось по поводу реалистичного/рационального поведения. "Нелогичность поступков" долгое время же с другого края объяснялась: просто неполнотой доступной информации, на основе которой осуществляется поведение. То есть все может быть намного проще: актор не видит или чуть искаженно воспринимает некоторые числовые значения, на основе чего далее уже рационально просчитывает дальнейшее поведение, но механически результат (с точки зрения наблюдателя) почти такой же, как при "сложном" моделировании психики: персонаж неправильно "оценил" собственные характеристики = ведет себя так, как будто самоуверенн или неуверен в себе; путает расстояние до цели при стрельбе из лука = плохое зрение/волнуется, руки трясутся; неправильно оценил свой уровень здоровья = вышел из боя и убежал, потому что испугался за жизнь или героически закрыл амбразуру грудью с последними тремя очками здоровья. Грань между правдоподобно ошибающимися рациональными статистами и шапито с "шизофрениками" (действующими разумно в своем личном выдуманном мире) может быть следующая: "просчеты" не более чем в 5-10% (а то и во все без) на нос, опять же, либо по рандому для всех, либо для назначенных "личностей с нетвердой волей". В результате расчеты не переусложнены, но кто-нибудь нет-нет, да и пустится наутек от паука/возьмет с собой на базар сумму денег, меньшую, чем стоимость желаемой покупки/наденет не самую эффективную вещь и т.д. и т.п. Также можно учитывать, что люди в принципе склонны приписывать определенные мотивы чужому поведению в первую очередь исходя из того, что происходит здесь-и-сейчас (никто не подумает "убежал посреди боя, потому что вспомнил, что чайник забыл выключить").
Это, конечно, не моделирование субъективного опыта и рассуждений, но разом снимает несколько сложностей и может дать выход, близкий к иллюзии "человечности" рациональных статистов. В определенном смысле почти те же самые когнитивные искажения, но основанные на том, что в этом отдельно взятом мире первичны числовые расчеты, а не восприятие.
Krstn
Ну то есть все-таки без конкретных сюжетных арок, как Belfegnar написал? И каждый отдельный полноценный "сеанс" в итоге выливается в свою отдельную глобальную историю, драматургия в которой заключается в случайных взаимодействиях и их исходах (в одном случае половину сразу выкосила чума, а все оставшиеся переубивали друг друга за еду; в другом все вылилось в свой вариант феодальной раздробленности, и т.д.)?
Orekhovoux
Я думаю стоит для начала сформулировать некий идеал. Двигатель с КПД 100% так сказать (математический маятник если угодно). Не взирая ни на отсутствия вычислительных мощностей, ни на сложность реализации, ни на интерес какому-либо игроку вообще. А потом уже эту модель - резать и менять, чтобы вписать в ограничения. Я позже как нибудь - соберу свои мысли и выводы и запощу в этой теме.
Belfegnar
> > NPC, например, выхватывая из котомки ржавый ножик, крикнет: "Да как вы достали уже!"
> > или: "После всего того, что со мной было на этой неделе, мне уже ничего не страшно!"
>
> А игрок скажет: "Да чего он несет?? Я за ним всю неделю наблюдал. Он только и
> делал, что собирал урожай в поле, да относил его на рынок, в перерывах
> посиживая в трактире. О чем он вообще?". Рандом он такой, иногда рандомные
> события вызывает=)
Да, это недостаток описанного мной "иррационального" движка. Есть и другой недостаток: сложность изучения песочницы. Рандом вносит шум в логику поведения персонажей, поэтому игроку будет трудно понять эту логику. Он регулярно будет:
1) искать (и иногда даже "успешно находить", LOL) несуществующие закономерности (например, в упомянутом случае с крестьянином, который бросился в бой с разбойниками: игрок может подумать, что персонажей действительно можно "доставать" и провоцировать на эмоциональную реакцию, и впустую потратит уйму времени на выяснение конкретных условий этого);
2) сложность нахождения настоящих закономерностей (из-за рандома они будут не всегда проявляться в одних и тех же условиях);
3) сложность применения закономерностей (из-за рандома игрок не сможет спланировать в игре ни одной сложной заварушки).
Т.е. "иррациональный" движок не даст игроку ни серьезного развлечения, ни серьезного контроля за происходящим.
Поэтому, если есть цель сделать настоящую песочницу, то надо делать "рациональный" движок. А для интересности закладывать в правила поведения персонажей учет эмоций и каких-нибудь еще иррациональных факторов - но лишь таких, которые игрок мог бы легко наблюдать и учитывать.
Для снижения нагрузки на комп, можно ближайших NPC (которых ГГ видит) просчитывать "рациональным" движком, а остальных - "иррациональным".
Тема в архиве.