Игровой ДизайнФорумОбщее

Реальная коммуникация между нпц (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
13:38, 8 апр 2025

flint2
> Вот чего то похожее по сути механик: https://instead.huge… e/metaparser/
> https://instead.hugeping.ru/
В качестве интерфейса кста оптимальным мне кажется словарик. Выбор из списка (яблоко, пещера и т.д.) на основе услышанного.
Ввод новых слов - это уже словообразование. Тоже может быть элементом механики.

#31
13:50, 8 апр 2025

ildarin

Нпц в группе между собой будут знать стиль, а игрок тогда может выступать переводчиком групп
Перевод и разные языки, диалекты - тоже возможная механика, на тему свойства доступности информации

В качестве шутки когда то делал на Прологе: https://disk.yandex.ru/d/6-YBUvQhVrnaag
Простенько и сердито, и никаких Гугл-переводчиков не надо.

#32
(Правка: 15:19) 15:12, 8 апр 2025

ildarin
> Хочется получить что-то простое, без лишних усложнений, но при этом - рабочее. На уровне тетриса. Чтобы оно воспроизводило реальную модель коммуникации, в понятном для игрока виде.
  НПЦ могут принимать команды от игрока - типа GO, ATTACK, DEFEND
С одной стороны это очень просто, но врятли это полноценное общение.

  Как я это вижу - обьект НПЦ получает сообщения от игрока и действует соответствующим образом.
В процессе обучения НПЦ может научиться новым командам.

#33
15:44, 8 апр 2025

Alesca
> НПЦ могут принимать команды от игрока - типа GO, ATTACK, DEFEND
> С одной стороны это очень просто, но врятли это полноценное общение.
Да тоже норм, но прикол то в том, что это должны быть от нпц к нпц в первую очередь. А игрок - просто тоже должен иметь возможность "встраиваться" в общение между нпц.
Как в Shadow Mordor - игрок может влиять на иерархии орков, имея "своих людей", помогать своим продвигаться, устранять конкурентов
В Guild 3 оч много таких механик, на репутациях и отношениях, правовых аспектах. По глубине механик тот же The Sims, но все же.
В Dwarf Fortress - нпц сами решают, чем заниматься, игрок там менеджер с непрямым контролем. Как в Majesty. https://stopgame.ru/games/compilation/392/p1
А насилие как ключевой сеттинг не особо тут нужен.

#34
15:53, 8 апр 2025

Alesca

В процессе обучения НПЦ может научиться новым командам.

Хорошая мысль!
Но просто это сделать не получится.
Это не генетические алгоритмы.
ildarin

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

Даже такие простые модели не просты. А сложную модель через простое вдвойне сложней.
Но сама тема интересная.

#35
(Правка: 18:05) 16:15, 8 апр 2025

>Мне больше нравится на частях речи. Со своим языком.
Еще можно пойти на более высокий уровень абстракций, на модель риторики, а не логики.
С элементами: оскорбить, льстить, угрожать, доказывать, интересоваться и т.д. Но сложно это связать с системой действий, действия останутся атомарными сепарированными от риторической механики элементами, а сама риторика лишь останется влияющей на параметры нпц. Да и действия должны завязываться на сеттиннг.
Т.е. эти элементы должны быть ключевыми для изменений состояний игры - "действиями".

Сеттинг насилия не особо подходит, куда лучше: потребности, социальный статус, торговля, правовой статус, секс/размножение.
Как в stellaris - много элементов завязано на экономику, на размножение населения, сокращение населения.
Да и игры про насилие в основном про "геноцид красного, размножение зеленого". Разве что файтинги - про язык боли.



Состояние игры через декартову систему наглядное, красивое. Можно оси вместо х/у использовать (например) доверие/страх. Тогда отношение состояний, фигуры перехода (действия) - могут обуславливать "движение" по этой сетке, условия перехода.

Условно:
"Угроза": +3 по оси у.
"Похвала": +2х, +1у.
"Аргумент": вращаемая фигура Г (конь в шахматах)
"Просьба": ставит точку в х/у, фигуры рядом получают -2 к успеху
"Маркетинг": свои фигуры в области 3 получают +2 к успеху

Правда, опять же вопрос - как это связать с нарративными "привычными действиями", кроме как параметрически, вроде "шанс успеха".

#36
(Правка: 20:36) 18:16, 8 апр 2025

Могу рассказать своё виденье в более широком плане.
Мне кажется, что задумка перекликается с темой топика.

+ Смеркалось.
#37
(Правка: 21:01) 11:28, 9 апр 2025

Что-то интересное.
Prom Week

+ Показать

https://promweek.soe.ucsc.edu/play/



Научная статья про имплементацию модели игрового мира с распространением знаний через NPC
>игра, которая в основе своей основана на убеждениях персонажей
Simulating Character Knowledge Phenomena in Talk of the Town
https://www.researchgate.net/publication/335746180_Simulating_Cha… k_of_the_Town


Научная статья про программных агентов, которые имитируют правдоподобное человеческое поведение
Generative Agents: Interactive Simulacra of Human Behavior
https://arxiv.org/abs/2304.03442

+ Показать

Имплементация https://github.com/joonspk-research/generative_agents

#38
(Правка: 10 апр 2025, 6:32) 21:41, 9 апр 2025

На тему языка нпц (частей речи) https://gamedev.ru/gamedesign/forum/?id=289744&page=2&m=6040690#m16
Слово est не только как физическое местонахождение, но и свойство объекта
(1) НПЦ: люблю est яблоко (яблоко содержит "люблю")
Тогда, возникает необходимость в свойстве информации "объективность". Решается через более объективное (однозначное) "вкусно", становится проверяемым.
Нпц2 может попробовать яблоко и не найти там "вкусно", а "горько". Значит (1) - недостоверно. Чтобы не порождать субъективности и упростить модель - можно придерживаться исключительно абсолютных значений: положение в пространстве по глобальным координатам; если "вкусно" - то всем.

На упрощенной модели проще строить роевой децентрализованный разум, в котором достоверность - фактор оценки принадлежности индивида группе. Каждый индивид имеет свою копию части общих знаний, расхождения - недостоверны.
Фактор важности информации - по новизне.
Рейтинг доверия к источнику - по достоверности.



Действие описывает смену состояния (событие). Было: вкусно est яблоко; стало: гниль est яблоко.
Свойство актуальности информации определяет достоверность.
Вариантов структуры элемента языка события - множество.
1. Отдельное слово на каждую возможную смену состояния (перемещение, атака и т.д.)
2. Описание событий связанных с субъектом (гниль pro вкусно est яблоко; яблоко est пещера pro озеро)
3. Общее описание смены состяния, без привязки к субъекту
4. Отмена (забывание) предыдущих состояний, предикат "не". (Non вкусно est яблоко; гниль est яблоко.) Non означает "прошлое".

Однозначность достигается через полноту в сообщении. Если яблок 2, одно в коробке и одно в сундке, сгнило в коробке: "яблоко est коробка; non вкусно est яблоко; сгнило est яблоко".
Если 2 яблока в коробке, описывается - какое именно "яблоко est коробка; зеленое est яблоко;" Для абсолютно идентичных объектов - количество теряет смысл, кроме событий.
Добавляется еще и требование контекста сообщения (разговор). Контекст так же требуется для вопросительных сообщений.



Двух слов est и non (скорее всего) хватает для описания состояния мира и событий изменений этого состояния. Может использоваться и нпц, и системой для команд изменений, как протокол сообщений.

+ Показать
#39
(Правка: 15:40) 15:33, 25 апр 2025

Тоже думал над подобной реализацией в своей игре, пришел пока к выводу-что мощностей железа пока не хватит, как и весьма трудоемкая реализация+при большом количестве неписей слишком большой контекст для каждой неписи придется хранить, причем постоянно разрастающийся, который рано или поздно придется резать, т.е. это можно сделать только для ключевых неписей, но тогда теряется вся прелесть подобного подхода, тем более что ключевые неписи могут умереть. У меня неписей в игре будет десятки, возможно сотни тысяч, причем "жить" они будут и без фокуса внимания игроков.
Сейчас вернулся к разработке своего основного проекта (https://gamedev.ru/job/forum/?id=281543), возможно что-то попробую сделать, но пока в приоритетах на десятом месте, других забот вагон и телега.
С памятью хоть и стало попроще с момента, как создавал ту тему, т.к. придумал ряд способов упаковки воксельных пространств для вокселей с нетривиальной геометрией, но проблему разрастания контекста "жизни" неписи это не решает, особенно с учетом необходимости эффективного для быстрой обработки формата данных "контекста".
Так то думаю процессинг обсчета "мышления" неписи кластеризовать на дешевых VPSках, пока основной мир будет работать на здоровенном серваке, но один фиг это не решает проблемы объема данных.

#40
(Правка: 18:12) 17:58, 25 апр 2025

HexVoxel

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

....
Вот именно по этому надо всё строить находу, в зависимости от фазы сюжета\сценария, сцены\локации и чего натворил ГГ + некоторые характеристики НПЦ если они выстрелят в будущем.
Конечно это справедливо к концепции, что описал выше.

#41
19:02, 25 апр 2025

flint2
> Вот именно по этому надо всё строить находу, в зависимости от фазы сюжета\сценария, сцены\локации и чего натворил ГГ + некоторые характеристики НПЦ если они выстрелят в будущем.
> Конечно это справедливо к концепции, что описал выше.
Это не применимо для открытой песочницы, где мир живет без фокуса внимания игроков, постоянно генерируя новый контент, ибо нет никакого сюжета фактически, нет раздельных локаций(один огромный бесшовный мир с разрушаемым ландшафтом, под который уже есть работающий воксельный движок ландшафта с поддержкой до 4200кв км площади, целиком находящийся в памяти сервера, с обсчетом всего, понятное дело не рилтайм, ибо геймдизайн позволяет, на клиенте очевидно есть лишь только маленький кусок мира), ГГ вообще отсутствует(потому что ММО в одном мире без каких либо шардов).

#42
19:39, 25 апр 2025

HexVoxel

Это не применимо для открытой песочницы

Это отдельный мир\иерархия, я туда даже не знаю с какого конца подступиться.
Всё ресурсоёмко!
Много чего видал(даже в умозрительных набросках в плане обсуждаемого) и все согласны(мечтатели, которых уважаю!), что всё рассыпается об реалии.

#43
20:27, 25 апр 2025

HexVoxel
> У меня неписей в игре будет десятки, возможно сотни тысяч, причем "жить" они будут и без фокуса внимания игроков.
Ты какие-то интересные решения для общений нпц придумал или вообще решил не делать?

Как-то пилил умных нпц с очень детальной проработкой мира, в котором у каждого объекта было куча свойств. Там у каждого нпц была в голове своя картина мира. Т.е. почти полная локальная копия всего мира, точнее то - как нпц его видит и помнит.
В общем-то и тот подход, что DemiosFantasimo писал - тоже вариант. Тут делать общение с использованием ключевых событий и пред-записанной логикой реакций нпц. В целом -это уже и в The Sims есть - но можно и что-то интересное придумать, ветвистое.

#44
(Правка: 21:50) 21:17, 25 апр 2025

ildarin
> Ты какие-то интересные решения для общений нпц придумал или вообще решил не делать?
Делать детальное хранение "контекста жизни" неписи однозначно буду, но не в первых релизах, у меня пока других нерешенных задач вагон и телега.
Но мысль простая и очевидная, хотя и трудоемкая в реализации и затратах железа, уже похоже на то, что тут описывали, правда я тут еще на эмоции замахнулся и вкратце вижу это так:
С одной стороны непись есть агент с заданными эволюционирующими характеристиками в игре(интеллект, восприятие, предпочтения, пол и прочая)+текущее состояние(болеет, влюблен, не в настроении, потерян из-за потери близкого непися и прочая).
Выбор текущего состояния эмоционального состояния неписи происходит по набору эвристик, что опираются на имеющийся опыт неписи и произошедшее с ним в прошлом, любое воздействие на непися имеет "эмоциональную силу", воздействие которой падает с кол-вом прошедшего от момент воздействия времени, а также его личных характеристик(сила воли, мораль и прочего). Т.е. это отдельный список, который относится к самому неписю без взаимодействия с другими неписями, а только со средой вокруг.
С другой стороны у каждой неписи есть таблица, в которой буквально построчно записаны все неписи и игроки, с которыми он контактировал, а каждая строка-это собственно контекст взаимодействия неписи с конкретной неписью либо конкретным игроком(куда входят все события с эмоциональной силой по модулю > 0, где с положительные-это позитивные события, а отрицательные- это негативные, отсортированные с учетом времени возникновения этого события), в итоге совсем старые события(либо имеющие малую эмоциональную силу), будут быстро вылетать из контекста. Ну и грамотно надо отбалансировать эмоциональную силу любого взаимодействия, чтобы было худо-бедно достоверно.
Полюс(на позитиве, либо негативе) текущего взаимодействия неписи между собой(либо с игроком)-функция от текущего состояния неписи и приоритета по эмоциональной силе контекста событий на конкретное взаимодействие.
Сам контекст конкретного взаимодействия-это фактически закодированные действия взаимодействия между неписями(сотни, а далее и тысячи типов взаимодействий, а самих взаимодействий может быть многие тысячи и десятки тысяч, пока не вывалятся из контекста) в виде постоянно сортируемой по модулю эмоциональной силы события(как я выше писал-с течением времени эмоциональная сила события уменьшается), где речь фактически выглядит как набор фактов об окружении другого непися либо его оценка какой-то ситуации(но тем не менее это в таблице взаимодействия с конкретной неписью будет иметь какую-то эмоциональную силу).
Сложность в написании интерпретатора этого самого контекста, т.к. сами действия и данные в них очень разнообразные, а уж в недоAI неписи докинуть ту или иную инфу для участия в решений(помимо того что он видит)-ничего сложного.
Но цепочки будут очень длинные+эвристики для работы с такими разнообразными данными тоже будут непростыми. Когда нибудь может быть и нейросетки гипотетически можно будет натравить, но это пока мне видится фантастикой.
В итоге получим эмоционально взаимодействующих с окружением неписей, худо-бедно эмулирующих эмоции с индивидуальными особенностями и настроением, потихоньку забывающее плохое, но и хорошее(скорее плохое забывать будут медленнее, как и люди), и все это завязано еще на личные особенности неписи.
Сложности тоже понятны:
1) Размер контекста для большого количества неписей(но тут вроде как спасает подрезание контекста с временем)
2) Сложность эвристик как алгоритмически(с точки зрения реализации-дофига типов взаимодействия и фактов, все это надо уметь сохранять и интерпретировать), так и из-за вычислительной сложности
Когда-нибудь я это сделаю, но пока есть задачи важнее.

Страницы: 1 2 3 4 Следующая »
Игровой ДизайнФорумОбщее