flint2
> Это отдельный мир\иерархия, я туда даже не знаю с какого конца подступиться.
> Всё ресурсоёмко!
> Много чего видал(даже в умозрительных набросках в плане обсуждаемого) и все согласны(мечтатели, которых уважаю!), что всё рассыпается об реалии.
Да железа реально все хорошо отмоделировать для большого количества неписей не хватит. Как я вижу реализацию-выше отписал.
Верно,
реализация все покажет.
HexVoxel
> положительные-это позитивные события, а отрицательные- это негативные
безотносительно твоей модели:
бинарная эмоциональная модель наслуху, но не особо рабочая - как по мне. эмоции сложнее, чем хорошие/плохие. даже в sims 4 реализовали более сложные эмоции, там есть напряжение/игривость и т.д.
например, грусть - называют негативной эмоцией. но ностальгия при этом - является грустью, но приятной. там все сложно, толком модели эмоций вообще не особо проработанные. я и свою разрабатывал, более точную, но эт отдельная сложная тема, включающая многие аспекты психологии человека.
ты это хоть в каком-то виде делал, в виде какой-нибудь демки концепта? ибо заморачиваться с мультиплеером и прочими обвесами до того, как саму модельку проверил - может быть преждевременно. мультиплеер вообще тяжелая часть в разработке. Тут вот, например, основа заняла меньше двух дней, а 3 дня я UI делал, звуки и полировал https://gamedev.ru/projects/forum/?id=289988
ваще звучит прикольно, но я слабо представляю - как оно в целом будет работать
ildarin
> бинарная эмоциональная модель наслуху, но не особо рабочая - как по мне. эмоции сложнее, чем хорошие/плохие. даже в sims 4 реализовали более сложные эмоции, там есть напряжение/игривость и т.д.
Ну у меня все таки основной элемент-PVP&PVE выживач с фуллутом в полностью разрушаемом ландшафте, поэтому упарываться в эмоции прямо совсем глубоко совсем не вижу смысла.
ildarin
> например, грусть - называют негативной эмоцией. но ностальгия при этом - является грустью, но приятной. там все сложно, толком модели эмоций вообще не особо проработанные. я и свою разрабатывал, более точную, но эт отдельная сложная тема, включающая многие аспекты психологии человека.
Опять таки-моя игра о другом, неписи нужны для качественной массовки с надежной создать иммерсивный опыт для игрока.
ildarin
> ибо заморачиваться с мультиплеером и прочими обвесами до того, как саму модельку проверил - может быть преждевременно. мультиплеер вообще тяжелая часть в разработке.
Для меня мультиплеер как раз таки самая простая часть. Я 20+ лет пилил высоконагруженные низколатентные бэкенды. У меня есть самописная кластерная инфраструктура на основе же самопальной реализации TCP сервера, держащего миллионный онлайн, уже проверенная реализация, которую я пилил с нулевых годов, с кластеризацией, внутренними протоколами, авторизацией на основе токенов и много чего еще(воксельный движок разрушаемости ландшафта, собственный ECS заточенный на многопоточность и серьезную промышленную разработку-валидация потоков событий/запросов при подъеме мира, явные спецификации фич, что содержат уже конкретную цепочку систем, с валидацией зависимостей и многое чего другого). Игра не будет рилтайм к тому же(каналы и железо не позволяет), а движуха будет параллельно пошаговой.
Единственное, что я не буду пилить сам-это рендер для игрового клиента, имеющихся инструментов более чем достаточно. Я то в самописную реализацию не от хорошей жизни подался, просто нет нужных инструментов на рынке как готового решения(точнее не было еще 15 лет назад, да и лет 7 назад тоже не было, когда в другом проекте свое же решение использовал, уже будучи CTO).
Я уже думал в прошлом году альфу вытащу, но отвлекся на пару других мелких проектов, где запилил весь бэкенд :)
Фактически игровой кластер состоит из 4 независимых сервисов, живущих в кластере, два проекта ниже именно так и работают и могут масштабироваться до весьма больших цифр онлайна(если растащить каждый сервис на свой отдельный сервак под специфические требования-сервер приема команд, сервер публикации данных+обсчет мира по командам игрока + внутренние игровые процессы, сервер внешней инфраструктуры вроде платежек, выдачи токенов и прочего, сервер хранения данных со всей обвязкой). Правда у них игровая логика несложная, но вот у второго есть нюансы, все таки эффективное решение задач топологии даже для задач на плоскости приличного размера имеет нюансы.
https://gamedev.ru/projects/forum/?id=284417
https://gamedev.ru/projects/forum/?id=288854#m0
HexVoxel
Просто хотел понять именно (по сабжу) как сама модель взаимодействий нпц работает. Если это просто влияет на то, что нпц будет стрелять в игрока или нет - то ок, понял. А то не совсем понятно - на что влияет "эмоция +1" в итоге, и откуда она берется. Понял только - что есть событие, у нпц оно записывается с список, а потом агрегатной функцией вычисляется "среднее" значение "эмоция +-N".
ildarin
> Просто хотел понять именно (по сабжу) как сама модель взаимодействий нпц работает. Если это просто влияет на то, что нпц будет стрелять в игрока или нет - то ок, понял. А то не совсем понятно - на что влияет "эмоция +1" в итоге, и откуда она берется. Понял только - что есть событие, у нпц оно записывается с список, а потом агрегатной функцией вычисляется "среднее" значение "эмоция +-N".
Будет ли общаться, с каким настроением, что может рассказать, либо вообще начнет гасить сходу.
Упрощая-да, именно так. Сложнее на большое кол-во неписей вряд-ли получится сделать, вычислительной мощности просто не хватит для сотни тысяч неписей. Ведь помимо этого неписям A* надо считать, причем реалистично-с учетом их пузыря видимости и прочего, а это весьма объемная вычислительная задача, я под это дело вообще на дешевый кластер VPSок раскидывать обсчет в будущем планирую за 4 евро на штуку, основному кластеру и без этого будет непросто.
ildarin
> Тут вот, например, основа заняла меньше двух дней, а 3 дня я UI делал, звуки и полировал https://gamedev.ru/projects/forum/?id=289988
> ваще звучит прикольно, но я слабо представляю - как оно в целом будет работать
Вот и проверю, я фуллтайм своими игровыми проектами занимаюсь, рано или поздно выложу в паблик альфу, а потом долго и нудно будут развивать дальше. Хотя работы там еще столько, что иногда сам пугаюсь, уж больно объемный проект выходит, по клиенту игровому вообще еще коняка и не валялся, как и по графонию вообще, в выходить в публику как вышел DF в ASCII кодировке-мое эстетическое чувство прекрасного не позволяет.
А вообще конечно это глубокий оффтоп, поэтому прекращаю.
HexVoxel
> Будет ли общаться, с каким настроением, что может рассказать, либо вообще начнет гасить сходу.
Тогда правильнее было бы наверное сказать "отношение" или "дружелюбность", а не "эмоция".
Есть события, и по внутренним весам известных событий нпц вычисляет "отношение" +-N к игроку. Аля система скайрима - украл сладкий рулет - получай стрелу в колено. Выполнил квест - цены торговца ниже.
А между собой-то нпц как-то взаимодействуют, обмениваются информацией о событиях? Или тоже исключительно расчет на весах, как в Caves of Qud и т.д. - помог вражеской фракции - стал врагом?
ildarin
> Тогда правильнее было бы наверное сказать "отношение" или "дружелюбность", а не "эмоция".
Само событие имеет эмоциональную силу(с плюсом либо минусом), а итоговое значение по конкретной строке в таблице отношений непися да-уже что-то другое.
И упрощено для того, чтобы приоритетная очередь была очень эффективная, весьма быстро можно её сортировать с учетом устаревания событий и сам алгоритм простой. Что-то лепить сложное-значит отрезать вычислительное время кластера от других гораздо более важных задач.
ildarin
> А между собой-то нпц как-то взаимодействуют, обмениваются информацией о событиях? Или тоже исключительно расчет на весах, как в Caves of Qud и т.д. - помог вражеской фракции - стал врагом?
Да, как я писал выше-речь один из типов взаимодействия между неписями, где помимо самого типа взаимодействия, эмоциональной силы(непись же может и ругаться, может и договариваться либо дружить с кем-то)-есть еще и факты, я выше писал об этом, видимо запутанно.
Сложность в интерпретации этих фактов, как я тоже выше писал-интерпретатор всех событий, что произошли с неписью для подачи их на вход уже недоAI неписи-отдельная и объемная по коду задачка, как бы не половина, если не больше-остального объема кода интерпретатора.
Когда доберусь до этой задачи, возможно сделаю некий внутренний DSL по аналогии с CyC для хранения этих данных, без претензии на вывод зависимостей и прочей требухи, что делает CyC(я игру пилю, а не AI) чтобы было удобно самому глазами читать при достаточной компактности. Не хочется получить черный ящик, который непонятно как работает из-за огромного кол-ва всех переменных.
Но возможно сделаю как проще в разработке, ибо время на разработку все таки решает, а дальше буду делать уже хорошо(как обычно :) ).
HexVoxel
> Само событие имеет эмоциональную силу
А понял - на запоминание влияет. Тогда "важность".
Получается 2 параметра оценки входящего события - важность и отношение. Circumplex model, James Russell. Хотя, как я понял у тебя произведение записывается в значение "эмоция", а не две нормали.
> речь один из типов взаимодействия между неписями
"речь" как я понял - не передача информации о событии (один пнц передает реальную информацию о событиях другому), а заготовленный тип события?
типа щелкнуло неписю ругаться - он подошел к другому и выдал ему условно "событие эмоция -3". как в симс - иногда они друг к другу рандомные события выкидывают и это влияет на полоску "отношение".
ildarin
> James Russell
Хз кто это, надо погуглить :)
У меня знак есть-с + положительное отношение, с - отрицательное. А важность(как медленно событие пропадет из контекста)-по модулю, но думаю-что отрицательные события будут медленнее терять свою силу.
Update0: Погуглил. Ну да, я изобрел опять трехколесный велосипед. Но мне скорее всего его хватит.
ildarin
> "речь" как я понял - не передача информации о событии (один пнц передает информацию о событиях другому), а заготовленный тип события?
> типа щелкнуло неписю ругаться - он подошел к другому и выдал ему условно "событие эмоция -3". как в симс - иногда они друг к другу рандомные события выкидывают и это влияет на полоску "отношение".
Я в симс не играл, поэтому пас :)
Речь как тип события имеет помимо эмоциональной оценки собственный контекст в виде фактов, но эти факты сами по себе для эмоциональной оценки не используются, на них просто скопом вешается число с плюсом или минусом, а вот сами факты надо уметь интерпретировать и уже дальше гнать на недоAI неписи для участия в решении задач по планируемым в будущим действиям, довеском к пузырю, что видит и помнит непись. А вот уже интерпретатор фактов должен уметь добавлять по упоминаемым неписям либо игроков дополнительные события в таблицу взаимодействия конретной неписи(чтобы слухи о том или ином неписи либо игроке потихоньку расползались, а не так-что инфа о поступке мгновенно разлетелась везде). Это же приводит к тому, что нет тела-нет дела :) Т.е. в отсутствии свидетелей можешь так сказать избежать негатива. Но если кто-то стал свидетелем, то дальше инфа может поползти дальше(зависит от общей оценки к тебе неписи, может и не начнет дальше трепать факты с явным минусом уже по отношению остальных неписей к тебе).
А общее настроение непися-это функция от его состояния(может он больной, и/или пьяный, и/или под грибами, и/или раненный, и/или голодный, и/или уставший, и/или испугавшийся и прочая).
Сама матрица возможных состояний может быть большой, но выбор итогового состояния непися будет эффективным, тупо суммируем эффекты по каждому состоянию, что имеет соответствующие эффекты на непись-и получаем итог.
Ну и как я выше писал-непись это агент, т.е. постоянно обсчитывает с учетом собственного окружения, показателей, настроения и прочего-чтобы ему еще сделать. Возможно вообще накидаю десяток-другой архетипов поведения, а дальше внутри каждого архетипа и будет индивидуальные нюансы всплывать.
В общем-общие мысли такие. Как это будет в реализации по факту-покажет время, и скорее всего за эти задачи я уже не в этом году возьмусь.
HexVoxel
> Я в симс не играл
ну эт ты зря. у меня она в топ3. имбовая игра.
HexVoxel
> чтобы слухи о том или ином неписи либо игроке потихоньку расползались, а не так-что инфа о поступке мгновенно разлетелась везде
Понял, т.е. да, есть передача информации о реальных событиях. Это прикольно.
Интересно было бы на такую модель посмотреть в действии.
В скайриме кста типа такого сделали - там если непися убить в уединении - он не успеет сообщить остальным. Хотя в стелс играх все же "тревога" общая на всех стражей, аля по рации.
В dwarf fortress кста есть механизм "расследования".