batarihliy прав. Эта «живая механика» должна быть дополнением к чему то основному. Как пример Фол4 где симулятор поселений соседствует с полноценной РПГ.
/A\
> и эта функция выдает время и все что может приключиться по дороге.
Это называется случайная встреча и она используется как минимум в Скайриме и в фолыче и в сталкере и в вестердэнде и в Сайлент сторме. ТС говорит о гораздо более сложной механике
Ren
> Как пример Фол4 где симулятор поселений соседствует с полноценной РПГ.
Ф4 цепляет, тем что можно шариться по руинам дома и наткнуться на подвал с целой лабораторией или поселением мутантов, а в половине случаев еще и сюжет будет. Вот для чего нужна генерация, наполнить мир такими вот самообразованиями, потому что геймдезайнеры не смогут придумать 100 разнообразных подвала со своим сюжетом.
100% симуляция не нужна и даже вредна, должен быть некий режисер, который подталкивает нпс друг другу, чтоб они чаще взаимодействовали, либо давал подсказки нпс-компаньенам игрока, чтоб те замечали что-то и вели игрока к интересному месту.
> Это называется случайная встреча
Я не про случайные встречи, а про упрощение мира до функций, чтобы минимизировать данные и ускорить обсчет тысячи нпс.
tac
> а что делать если игрок переключается, и видит что NPC тупо стоит, а не находится в соответствующей точке?
Тогда уже просчитать детально. Зная время входа в здание и конечное время в комнате, берем текущее время и ставим нпс в промежуточное положение на основе навмеша.
Вообще надо разделять на близких к игроку и компаньенам нпс, которые просчитываются более детально и на весь остальной мир, который тоже просчитывается, чтобы когда игрок дойдет до какого-то места и там валялись трупы после стычки нпс, это покажет что мир живой.
tac
Спасибо за предложение) Может, когда дизайн "живой" игры детально и четко ляжет - пойдем, ща еще не понятно как это всё можно сделать даже в теории, детально. Да и Ildarin Diabloid Roguelike доделываю. Люди пишут, что оч понравилось и хотят еще - так что есть смысл доделывать. Там уже 90% геймплея и механик - готово, набить контентом и уровнями осталось, и забалансить.
Если кто-то другой, а не я такую "живую" игру сделает - я только рад буду. Пока делаешь уже наиграешься сам. Да даже пока детально все прописываешь - все уже понятно и нет эффекта изучения игры. А если сделаю не я - смогу кайфануть как игрок.
С минмаксом кста делал карточную игру (хентай mtg), довольно легко получилось реализовать ии. Но вот там я просто использовал код самой игры для модели предсказаний. Сложность была в том, что есть элементы рандома. Игрок не знает следующую карту в колоде, а ии, получалось - да. Так что сделать "честно" - нужно еще делать предположения случайные о действиях игрока и прочих событиях. А если вообще весь открытый мир прогонять в сотнях итераций для сотен нпц - караул для проца, так что тут надо отдельную упрощенную модель части мира из того, что нпц знает нужно гонять. Не факт, что ИФами не будет проще.
Но в теории такую механику можно вешать и на объект типа "община", типа староста планирует - кого куда назначить и куда идти. Это некая замена игрока в симуляторах колоний. Разве что строительство в этом плане сложно, вероятность, что рандомно натыканные стены выстроятся в полый кубик комнаты - крайне мала, так что либо шаблоны комнат и алгоритмы генерации зданий, либо здания как готовые объекты. В любом случае это можно закрыть предписанным ии, вроде планировщиков заданий, и разбить вариативность переменными. В карточной делал такие переменные - при расчете "успеха", ии может больше обращать внимание на количество хп своё или противника (трус/злыдень).
Любопытно может выйти, если делать такое снизу-вверх, сначала закодить модель планировщика минмакса ии для нпц и обществ нпц, накидать объектов и смотреть - как они будут "жить". Я делал типа такого на нейронках, вышло неожиданно - нпц тупо бегали вокруг и всех вокруг кормили (там генетический алгоритм). И получалось, что сами даже не ели - только кормили всех вокруг и выживали так, общество сверх-альтруистов. Но там однополое размножение делал, не было горизонтального переноса генов, но по мат.моделям вроде такого и не нужно - слишком малый размер популяции был.
/A\
> Вот для чего нужна генерация, наполнить мир такими вот самообразованиями, потому что геймдезайнеры не смогут придумать 100 разнообразных подвала со своим сюжетом.
Нет, я не согласен. Это уже делали в дагггерфоле и результат был плохой. Генерация никогда не создаст качественных и разнообразных подвалов.
/A\
> Ф4 цепляет, тем что
Совмещает два жанра РПГ и симулятора. Теперь у меня есть цель шарится по подвалам и вытаскивать из них по 300 металлических банок. Ведь переплавляя эти банки я строю своим поселенцам железобетонные доты. А вот вытаскивая две тонны доспехов из очередного данжа Скайрима, я не очень понимаю зачем я это делаю
/A\
> Я не про случайные встречи, а про упрощение мира до функций, чтобы минимизировать данные и ускорить обсчет тысячи нпс.
>
Укрупненные расчеты дадут укрупненный результат. Это не столь интересно ( а иногда и тупо) как мозаика. В целом ТС мыслит верно, просто мозаику хочет слишком мелкую.
DEV01
> Постоянно что-то загружать и выгружать. А это значит npc не смогут честно симулироваться/перемещаться по нему.
Зачем что-то загружать? Ты не можешь разделить логическую составляющую и визуальную и просчитывать только логическую без загрузки визуальной?
Ren
> Зачем что-то загружать? Ты не можешь разделить логическую составляющую и визуальную и просчитывать только логическую без загрузки визуальной?
он говорит о том, что NavMesh - тоже занимает большое место
ildarin
> весь открытый мир прогонять в сотнях итераций для сотен нпц - караул для проца
нужно просто дать нпц память, а прогонять итерациями - так это как раз "не честно"
ildarin
> Может, когда дизайн "живой" игры детально и четко ляжет - пойдем, ща еще не понятно как это всё можно сделать даже в теории, детально.
Прописывать на бумаге не то же самое, что сделать пару тестов в коде. Поэтому прототипы первичны. А прописать что-то, что обозримо запрограммировать - так давай?
Но как насчет Unity? Или мы не сойдемся уже на стадии выбора движка?
Например, можно взять карту 9 террайнов размером 1024х1024 метров каждый (для теста не важно - можно плоский), каждая карта имеет NavMesh. Взять 100 юнитов (цилиндров) и просто случайно задавать им места для перемещения. И тут и проверить возможно ли в фоне по очереди подгружать террайн, чтобы рассчитывать движение. Будет ньюанс когда NPC переходит с карты на карту. Тут мы и поймем основные цифры, что возможно. Без такого теста, все остальное будет фантазиями.
А те кто думают, что можно как то по другому сделать - возьмут тот же тест и сделают свой. А там и посмотрим, что лучше )
Ren
> Генерация никогда не создаст качественных и разнообразных подвалов.
"Плохая" генерация - не сможет. "А наш - сможет. Гляди, Пятачок" (из к/ф Винни-Пух). Вспоминается фраза про "робот превратит кусок холста в шедевр искусства?" и (20 years later) нынешние весьма достойные нейромазни генеративных сетей. Вот кста статья на тему генерации подземелий https://habr.com/ru/articles/461087/
В рогаликах во многих, если не во всех, используется генерация карт, и выходит вполне интересно, и что главное - реиграбельно. А если сравнивать ручные и генеративные - то тут всё упирается в прямоту рук и прямоту рук создателя генератора, легко можно представить криворуко созданный вариант подземелья руками. Не, ну если Кодзима будет полгода дизайнить подземелье - то тут для такого же качества чтобы генерировать - нужен генератор от гугла за лярд минимум.
Но миры генерируются в куче игр и выходит прекрасно: factorio, minecraft, dwarf fortress, deep rock galactic, no man sky, against the storm, ... в общем очень много. И выходит круто. И самое главное - реиграбельно, в факторио больше тысячи часов наиграл за счет этого. От Скайрима я тоже получил огромное удовольствие, но заходить вновь уже не тянет - история на один раз. Ты уже всё это видел, все знаешь. Разве что вариативность прокачки, некоторые сюжетные развилки и пропущенные интересности дадут повод возвращаться. Но вот что восхитительно в рогаликах - в них возвращаешься сотни раз, и каждый раз получая новый опыт.
Еще когда в марио в детстве играл - вымораживало то, что после поражения опять проходишь один и тот же уровень, снова и снова. Это надоедает, вызывает скуку. Во многих играх это есть, т.н. "сложность": повторять, пока не задрочишь паттерн в подсознание. Это тоже может быть интересно - добить идеальное исполнение последовательности, чувство виртуозности - как игра на инструменте. Но если игра каждый раз дает новый опыт, а не превращается в "день сурка" - это еще лучше. Этого хочет наш мозг - что-то нового, уникального, и, одновременно с этим - привычного, связующимся с тем, что уже в нём есть. Роглайки - такие игры, под девизом "проигрывать - это весело". И игра с "живым" миром вполне может быть и такой. Появился, вышел на дорогу, увидел орка, YOU DIED.
/A\
> обсчет тысячи нпс
Не обязательно тысяч, можно намного меньше. Человек в кратковременной памяти может держать 7 объектов; детально запоминать и строить отношения с ~15-30 людьми (исследования размера стай древних людей). Есть еще Число Донбара (150) - но это врят ли, там очень слабая аргументация (наверн над в Вики раздел критики запилить). У шимпанзе размер стаи - 10-12, что больше подходит. Из-за ограничений кратковременной памяти - человек чисто физически не способен строить модели поведения в голове из более чем 7 (плюс минус) особей, дальше уже объединяет в категории (эти 3 чела будут категория пид*расы, эти 4 - зайчики). У Бонобо размер стаи до 120, но делится на подгруппы из 2-15.
Поэтому вполне достаточно в среднем 7 нпц в группе (община, деревня), 7 деревень/городов (итого 50 нпц). Можно уже потом это и горизонтально масштабировать, но остальная часть все равно превратится "в статистов" у игрока в голове.
tac
> нужно просто дать нпц память, а прогонять итерациями - так это как раз "не честно"
Честно, человек в голове прокручивает варианты событий, так же и тут - каждая итерация - симуляция определенного варианта развития событий.
tac
> А прописать что-то, что обозримо запрограммировать - так давай?
Так я и пишу и рефлексирую, в рамках этой темы) Как бы оно могло быть - условно сделать Скайрим с живыми неписями, чтобы это было интересно и реально реализуемо. Думаю, например, системы взаимодействий нпц друг с другом и их общение для построения правового общества. Например, в Скайриме ты украл сладкий рулет - флаг "преступник" и любой непись добегает до точки А - и всё, все знают что ты жулик и вор. А как реализовать модель ситуации, когда ты и договориться сможешь, и различным образом влиять на ситуацию, но в рамках логичной модели взаимодействий нпц, а не просто флагом в памяти ЭВМ - вот уже можно подумать. Чтобы персонаж игрока подчинялся тем же правилам мира, что и нпц (нпц в скайриме не воруют сладкие рулеты, только на словах в гильдии воров, это разрушает погружение).
tac
> Но как насчет Unity? Или мы не сойдемся уже на стадии выбора движка?
Юнити - ок. Я с навмеш не работал, и предпочитаю понятные открытые решения (зачастую собственной разработки), особенно когда дело касается производительности. Сторонние решения - закрыты и сложны в понимании, что сказывается. Но построение карты перемещений и поиск пути (a star) - это тривиальная задача, тут не вижу смысла проверять - это реализуемо и результат понятен.
ildarin
> А наш - сможет. Гляди, Пятачок
Ты считаешь себя круче Беседы?
ildarin
> нынешние весьма достойные нейромазни генеративных сетей
Это не искусство. Это графическая компиляция.
ildarin
> https://habr
Перестань читать хабр. Там пишут одни и те же байки уже …. Сколько лет он существует? Вот столько и пишут.
ildarin
> Но миры
Мы говорили про данжи, а не про пустые миры. Ты как-то слишком просто поставил знак равенства. Ну давай я продолжу список. Миры генерируются в спайсХэван, ФТЛ, в ситибилдерах во всех , в цивилизации, а в МоО генерятся целые галактики.
Ты сравниваешь несравнимые вещи и пишешь об этом целую страницу. Ты в самом начале пути, если не видишь разницы между генерацией данжп в рпг, платформе, циве.
Fantarg
> Скрипт или случайное событие - такой же даст результат!
Вот что меняется
Неслучайное. Ты не понимаешь - закономерное в логике мира, чтобы не было лудонаративного диссонанса. Спорить что лучше - нарративное повествование с иллюзией мира или его рабочая модель - бессмысленно. И то и то - хорошо. Хочешь - делай нарративные и обсуждай, как сделать их лучше и прочие детали.
Ren
> Ты считаешь себя круче Беседы?
Конечно. А разве есть смысл считать себя ничтожным?
> Ты в самом начале пути
Всегда.