Как это делается сейчас: в игре есть ключевые заскриптованные персонажы, а все остальные, это болванки генерирующиеся вокруг героя и так же бесследно исчезающие когда героя проходит мимо них не оглядываясь. Понятно, что этот вариант был выбран не из-за хорошей жизни, ресурсы ограничены и все такое, но время идет и пора двигаться дальше.
Мои тезисы просты:
1. Производительность ПК однажды достигнет такого уровня, что можно будет расчитывать +- жизнь города. Речь не о ближайших 2-5 года, если что. Даже если на это потребуется 100 лет, все равно, этот день настанет
2. Кто-то должен начать двигаться в эту сторону уже сегодня
Я начинаю движение в этом ИТТ. Погнали!
Графы - это простейший способ описать маршруты движения в городе и перемещения по ним НПС
Принцип неопределенности - тут уже сложнее. В первом приближении, я вижу решение проблемы расчета таким:
В самое первое мгновение старта мира мы получаем среднестатистическое что-то, где ничего не известно о конкретных личностях, но мы знаем, что кто-то учится, кто-то работает и вот это вот все.
Например, мы появились в квартире типовой пятиэтажки. И в идеале мы будем иметь возможность выйти в подъезд и постучаться в дверь каждой квартиры. Как только мы в нее стучимся или просто видим ее, схлапывается функция и для этой квартиры генерируется ее конкретное население. Например, это семья из двух взрослых и один из них - рнн. Стучимся в квартиру, а мамки нет дома, поэтому нам открывает сына-сыч. И если мы зайдем в квартиру, то можно будет подождать и дождаться когда его мать придет с работы
Очевидно, что реалистичной реакции на какие-то конкретные действия можно от них не ожидать, но как минимум движение из точки А в точку Б можно реализовать
Да где же я писал, что алгоритм будет интереснее? Я хочу поразмышлять как решить конкретную проблему мертвых городов в играх
Для нормального кодинга графов нужно знать дискретку. Сам я в ней плаваю но какой нибудь матанон вполне может тебе накидать нормальную тему.
Знаешь что? Создавай проект на гитхабе и давай делай фремворк для всего этого на плюсах или крестах. В идеале что бы на выходе была длл или со чтот бы можно было её подключить. Назовем гд комьюнити фреймворк "навуходоносор"
Да, в идеале так и надо делать, чтобы любой мог импортировать это все к себе в проект. Осталось только плюсы выучить
>Для нормального кодинга графов нужно знать дискретку
Могу ошибаться, но достаточно знать алгоритмы, которые уже и так все запрограммированы и оптимизированы
А ты какой нибудь язык знаешь? Думаю можно хоть на жаваскрипте можно сделать.
Из того, что знаю, больше всего подходит с#, его и планировал использовать
Ну например что бы обойти граф попав в каждый узел лишь раз или минимальное количество раз обходя по связям нужно знать формулу. Которую я кстати забыл. Не думаю что такое уже закожено.Такие мелочи потом костью в горле встают когда ты пишешь обходы, изменения эелементов или что то такое.
Прекрасно. Создавай проект, доску на трелло и можешь еще в юмл нарисовать прототип. Юмл помогает структурировать мысли. Да и в картинках воспринимать что то новое проще.
Так смысл графа как раз в том, чтобы избежать тех ситуаций, когда надо обходить весь граф, иначе бы он не выигрывал у какого-нибудь массива или связанного списка
>>714358
Алсо если какая то подзадача будет мне по силам попробую реализовать и пушнуть тебе в гит.
Ну для самого короткого пути от а до б с минимальным количеством прыжков тоже нужна формула вроде. Иначе как раз полным обходом дело и закончится. Ну еще можно рекурсивно ходить пока не придешь.
Еще нет окончательного варианта того, как это должно выглядеть. Для начала все распишу на бумаге. Максимум сейчас - это какие-то мини эксперименты, на основании которых можно будет сформировать понимание
Только обязательно назови проект "навуходоносор". Классные имена для проектов - половина успеха. Знаю по себе.
Попробуй вместо бумаги юмл.
https://youtu.be/OmSTwKw7dX4
Мне оч помогло для моих нужд. Может и тебе тоже зайдет.
>Как только мы в нее стучимся или просто видим ее, схлапывается функция и для этой квартиры генерируется ее конкретное население
С квантовой физикой это не имеет никакой связи, это издроченный в программировании паттерн "lazy initialization"
Как вариант. Еще я пробовал вики движок с мермейдом- штукой для генерации из текста схем. Но забросил. В чем то было удобнее чем писать текстом в файлик или рисовать схемы руками.
Схлапывание в квантовой физике - это частный случай ленивой инициализации, где параметр инициализации, это вероятность
Все это уже придумали и запрограммировали в виде готовых либ
>>714388
Твое понимание квантовой физики и твоя грамматика выдает в тебе школоту ебаную юношу восторженного с глазами горящими.
Ого, апелляция к возрасту. Диалог выходит на новый уровень. Что дальше? Может ты просто аргументы приведешь?
Ленивая инициализация - это паттерн в программировании. Коллапс волновой функции - это физический феномен. Чтобы утверждать, что это связанные вещи, или, тем паче, что одно - частный случай другого, нужно обладать некислой шизой, ну или быть школотроном, как ты.
У меня к тебе встречный вопрос, а почему ты стыдишься того факта, что ты шкальник? Тут полборды или такие же юные, или по ментальному развитию недалеко от тебя ушли.
Хорош траллить показывай свою игру которой у тебя нет.
Ии весь на питоне. Книг не знаю но как вводную можешь использовать этот курс
https://www.youtube.com/watch?v=i8D90DkCLhI
Еще это.
https://www.youtube.com/watch?v=aircAruvnKk
>Физический феномен
Нет, лол. Это математический прием, а далее:
Before collapse, the wave function may be any square-integrable function. This function is expressible as a linear combination of the eigenstates of any observable. Observables represent classical dynamical variables, and when one is measured by a classical observer, the wave function is projected onto a random eigenstate of that observable. The observer simultaneously measures the classical value of that observable to be the eigenvalue of the final state
Грубо говоря, мы (наблюдатель) измеряем волновую функцию жителей квартиры, когда стучимся в нее
Какая формула лол. Это же алгоритм Дейкстры или A*, если нужен кратчайший путь именно между двумя нодами, а не до всех.
Я про ту которая считает необходимое количество итераций. Что бы вместо фореач использовать фор до нужного количества.
Он спросил про ии я ответил про ии. Автоатака, передвижение по точкам и преследование мобами это говно а не ии.
Спс, посмотрю. Если это мне поможет, как вводный материал. Я пока хочу попробовать именно просто написать простого бота для ск2 сейчас.
Да. При обходе графа или при поиске кратчайшего пути можно расчитать сколько итераций нужно что бы не перебирать все целиком. Если есть количество граней или известные свойства то по формуле считается. В графах же и циклы бывают и вложенные циклы.
Нет никакой формулы для нахождения длины кратчайшего пути, её можно найти, есди посчитать этот путь.
Ну тут я тебе не в помощ. Нужно спрашивать у гениев без игр которые лучше всех все знают.
Ты путаешь поиск пути и обход графа. В графе количество узлов и граней известно.
Не понимаю, про что ты. Есть формула Эйлера, которая связывает количество вершин рёбер и граней, но она работает только для планарных графов.
> Грубо говоря, мы (наблюдатель) измеряем волновую функцию жителей квартиры, когда стучимся в нее
Это не "грубо говоря", это профанация. Макрообъекты не могут существовать в суперпозиции, это призван показать, например, мысленный эксперимент с котом Шредингера, сводящий образ мыслей, подобный твоим, к абсурду. Электрон может находиться в суперпозиции положительного и отрицательного спина, потому что это квантовый объект. Кот и дядя Вася из квартиры - макрообъекты, они не могут одновременно быть живыми и мертвыми, существующими и несуществующими.
Твой энтузиазм я поощряю, но матчасть надо тоже подтягивать.
Вообщето уже доказали что волна и частица сосуществуют. Бред про суперпозицию - математическая абстракция не более.
https://youtu.be/WIyTZDHuarQ
ОФФ НАУКА: Достоверно ничего не известно о применимости принципа суперпозиции (как и квантовой механики вообще) к макроскопическим системам.
ЧЕЛ С ДВАЧА: Макрообъекты не могут одновременно быть живыми и мертвыми, существующими и несуществующими
Впрочем, ты все еще рассуждаешь в контексте физики, когда как речь идет о самом принципе суперпозиции и применении его в гейдеве.
>одновременно быть живыми и мертвыми
А никто и не говорит, что они одновременно живые и не живые, мы всего лишь утверждаем, что в квартире кто-то живет с вероятностью в 75% и никто не живет с вероятностью в 25%. Это не значит, что там одновременно кто-то живет и не живет. Там будет что-то одно, но только тогда, когда волновая функция схлопнется
> как решить конкретную проблему мертвых городов в играх
Не делать игры-кинцо про пустые города с болванчиками.
Я вот смотрю стрим по киберпунку и дошёл до неуклюжей, постыдной сцены интима между главным героем и сюжетной тяночкой. Блять, до сих пор испанский стыд, блять. Блять.
Игры надо делать, а не симуляцию подката к пизде. Тьфу, блять.
> Всю малину палить не буду
Охоспаде! Кодзима в треде, лол. Тему он палить не будет. Ты даже 1% тех наработок, что есть у ААА-студий не сможешь повторить, не говоря уже о том, чтобы превозмочь. Любой GOAP при правильной настройке (и зашкаливающем трудолюбии в написании сотен томов диалогов) даст пососать твоей секретной малине с аутистографами. Без обид, анон, ничего личного, просто факты.
> Еще нет окончательного варианта того, как это должно выглядеть.
Главное GOAP загугли, чтобы велосипед не изобрести.
Зря ты так. Цели разные. Маркетинг решает. Из 200 гигабайт игры максимум 1 мегабайт кода. Остальное звуки шейдеры текстуры модельки анимации. Вот куда идут бюджеты и человекочасы. Никто не старается прыгнуть выше головы и выдать сомнительный геймплей с риском оказаться недопонятым и без подотчетного результата. Картинку и модельку сразу видно Бабло потратилось получился обьект. А вот живой город непонятно назуя нужен и сколько стоит. Если когда то ааа и сделают то живой город будет целиком геймплеем вообще без всего остального.
Вот ты говнодела кодзиму вспомнил. А ведь в стрендинге ты ничего не делал кроме ходьбы и лайков. Геймплейно игра полный провал а играли в нее изза катсцен и говноедства уровня консолей.
В х3 тоже что то подобное есть. Приватеры вообще класс довольно продуманных игор с сильной механикой.
Streets of rogue.
Ну и долбоёб, если уверен.
Сначала напиши функцию "паниковать и дать по газам" лучше, чем в ГТА5 (это на самом деле возможно, только ты ведь кукаретик ёбаный и не сделаешь нихуя), посмотри, сколько времени займёт её написание и дебаг с составлением хороших тестбедов, а потом кукарекай.
Ну держи краткое объяснение https://gameprogrammingpatterns.com/state.html
Ну не траль, давай ты тут сам объяснишь. Если честно, я просто не осилю сейчас изучать то, что ты там скинул. Нет, у меня на самом деле претензия в другом: подавляющее количество кода сегодня пишется в парадигме структурного программирования, а это всего три структурных блока (пикрил). И то, что ты сейчас принес, это всего лишь еще одна абстракция над этими блоками, не более. Если ты хочешь сказать, что "правильный" ИИ не может быть построен на if, то это будет звучать как: "ребята, я ничего не понимаю в программировании, но осуждаю"
Там написано про стейтмашины. До середины норм а потом пошло гуляние в наследовании и полиморфизме по моему лишнее. Лишняя сложность там где можно без нее.
>Там написано про стейтмашины
Ну это я по заголовку понял. Но чем if не угодил? Дополнительные абстракции это круто, но только там, где они действительно нужны
Бывает иногда полезно несколько булевых переменныйх обьединить в один енум типа
enum Enum:int
{
a=1<<1,
b=1<<2
}
Что бы потом проверять один стейт вместо кучи ветвлений иф.
>иногда полезно
А иногда полезно не делать этого. Чем просто if не угодили?
if слишком противный. Понимаешь? От него педиками несет.
> a=1<<1,
> b=1<<2
Зачем ты задаёшь константы таким образом? Битовым сдвигом, если я правильно понял. Не впервой вижу.
мимо ньюфаг но хочу понять
>Зачем ты задаёшь константы таким образом?
От всех остальных способов несет педиками, понимаешь?
В первом случае получается ...0010 во втором ...0100. Тоесть два булева значения упакованы в оду переменную. Можно их двоично складывать и тогда получится ...0110 например что бы одновременно определить бег и плавание типа ты и плаваешь и ускоряешься. Одновременно.
А сон будешь через умножение этих значений описывать, лол?
Ну если предполагается что во сне можно бегать то да.
Уж лучше if if if, чем магия. Хоть при доработке не будет вариантов обосраться
А что не так? Бинарную логику понять куда проще чем кажется. Я же понял а я не слишком то и умный.
>А что не так?
Все так, но всему свое место. С бинарной логикой все ок, но если тебе надо описать два состояние или даже три, она не нужна. Во главу угла я предлагаю ставить читаемость и поддерживаемость кода, так как именно в этом случае ты сможешь его в будущем доработать так, как тебе это нужно. А если ты начнешь применять стейт машины и бинарную логику там, где этой самой логики на 1-2 if, из этого ничего хорошего не получится
Ну вот мне понадобилось как то 32 состояния и они как раз уложились в инт. С булями я бы заигрался до пены изо рта.
Да нахуй это не нужно, зачем эти огромные города, куча квестов, персонажей вот это все, ведь они все по прежнему сводятся к сними шкуру с 10 волков и доставь письмо, только в огромных масштабах. Какое тут развитие? Ну ходишь, ездишь на тачке, слушаешь диалоги, стреляешь в тупых врагов, прокачиваешь хуйню, нечего не поменялось.
Байтоебство тоже приветствуется только там, где это оправдано
>нечего не поменялось
Потому что города мертвые. Моделек домов понаставили, а по факту изменилось лишь расстояние от А до Б и время движения
У меня хобби ммо писать. Без байтоебства тут никак. Мне больших трудов стоило что бы для 300 клиентов мой сервак мог отдавать дату 60 раз в секунду. Но этого оказалось мало. Теперь я скриплю мозгами как бы эту дату уменьшить что бы не засорять 100 мегабитный канал.
>Без байтоебства тут никак
Именно это я и имел в виду, когда говорил о " только там, где это оправдано"
Ну а что думаешь в стейтмашинах не нужно байтоебствовать? Вот будет у тебя хотя бы 500 жителей города и тут окажется что они съедают весь проц и весят 2 гига. Вот тогда тебе придется скрипеть мозгами что бы было быстрее и меньше.
Дада и сервак с гигабитным каналом. И 8 процев что бы не лагало. Жаль только у меня нет лишних 7к в месяц на это.
>Ну а что думаешь
Premature optimization is the root of all evil. Думаю, что инструменты и средства должны выбираться исходя из конкретной задачи
Это не оптимизация а архитектура. Если с архитектурой проебался то никакая оптимизация уже не поможет.
>Это не оптимизация а архитектура
Ты еще задачу не уточнил, а уже архитектуру оформил?
Алсо у опа цель живой город. Это например 1000 жителей. Все они должны не только отрисовываться но и принимать решения. У меня вот 1000 чаров без ии и без инвентаря весят 8 мегабайт на диске и около 100 мегабайт в памяти.
Архитектура первична. Задача может меняться и потому архитектура должна это позволять.
Первична задача, все же, а архитектура должна позволить легко доработать решение под хранение состояния хоть с учетом байтоебства, хоть без. Именно в этом суть архитектуры паттернов, а не в использовании конкретного решения
Так никогда не достичь совершенства. В диздоке написано(гдето) что 1000 игроков значит 1000. В крайнем случае занижу количество апдейтов до 20 на игрока, но с количеством даты все равно нужно что то делать.
Алсо я уже все перепробовал. Все что было в справке мсдн. Сделал все асинхронным. Игрался с тредами. Все равно не получается на моем проце выжать больше. А ведь как то работают хпц системы что гигами дату отдают миллионам пользователей... Пожалейте меня.
В принципе можно архивировать но на пакетах меньше 8 килобайт эффекта либо нет либо он противоположный.
Я здесь. Извини, друг, сейчас НГ на носу, я пока просто отдыхаю. Могу репозиторий запилить на днях, но ничего путного там не будет какое-то время
Ну ладно. Тогда буду для своей ммо пока сам придумывать живой город. Или может попрокастинирую.
Нужно чтобы в каждое строение можно было войти. Вот в любое входишь и там кваритры, бары, нпс живут там. Вот тупо каждое, если это огромный небоскреб то там должно быть 1000 помещений, в каждое можно зайти или какая нибудь хижина на окраине.
>Это не поможет
Это не решит проблему, но приблизит к ее решению. Вокруг этого всего можно будет чуть более сложный сюжет закрутить
Спасибо, теперь я допёр. Это удобный способ задавать сразу нужный регистр. А вот я ещё видел твои посты, где такими же шифтами производится сравнение входных данных с имеющимся набором битовых флагов. Тоже пока не могу понять логику. Можешь на пальцах объяснить?
И ещё вопрос, если мне нужны не битовые флаги, а многобитовые? Это возможно организовать? Например, если стейтмашина состоит из наборов стейтов, каждый из которых занимает, скажем по 4 бита, и может содержать в себе, как несложно вычислить по 15 стейтов. Как это организовать? С заданием понятно, я беру нужный стейт и сдвигаю его на нужное количество регистров, например a=12<<4 я правильно понимаю, что это даст нам паттерн 1100 сдвинутый на 4, что значит 11000000? Как потом мне парсить такой инт? разбивать на слова по 4 регистра и вычислять паттерны по маске в каждом? Какие есть удобные операторы для этого?
> приблизит к ее решению
Тут на ютубе один ютубер буквально вчера высказал интересную мысль: Когда игра создаёт атмосферу открытого мира, не претендуя на реалистичность, мозг автоматически принимает этот расклад и не докапывается к болванчикам, что они болванчики. И напротив, если игра понтуется, что у неё крутой ИИ с полной реалистичностью, мозг наоборот начинает искать косяки. В пример приводились две игры. В качестве понтовой игры, кичащейся своими болванчиками - обла (ЧСХ не скайрим, а именно обла), где всем болванчикам тщательно сгенерировали имена, ГОАП-распорядки-дня, простенькие диалоги, рандомные на 6-8 строк, в качестве скромной игры - ведьмак 3, где болванчики с общими именами типа "крестьянин1" и одним диалогом из 1 строки.
Чувак между прочим недооценённый, разрешите пропиарить, дельные вещи говорит: https://www.youtube.com/watch?v=ubD-RwFrDfI
А нахуй, проще наобещать с три пизды, собрать денег и сьебать
попробуй Ultima 7
Что бы узнавать какие булевы там активны нужно делать примерно так.
state.running & test==state.running
где стейт это сам энум а тест это экземпляр с актуальными данными.
Что бы сравнивать многобитовое используется та же конструкция. В результате её выполнения все единицы которые есть и там и там сравниваются с шаблоном. То есть
...0011 0011 & ...0110 0001 это будет ...0010 0001
если твой стейт и есть ... 0010 0001 то сравнивание с ним будет истинно. Так же ты можешь сравнивать не с одним стейтом а с несколькими опять же через булевы операции.
Я делал так - оборачивал все это конструкцией
public bool test(state a, state b)
{
return a&b==b;
}
а потом через любимые всеми ифы.
Бля, спасибо за урок, братишка-анонимус! Примерно такое же я пытался делать, но теперь в голове всё упорядочилось. Идёт сравнение по маске.
Теперь я смогу создать тру байтоёбскую стейтмашину, прям как диды!
Мне важно было понять, как запихнуть в одну инт-переменную несколько многобитовых "сиквенсов", каждый из которых был бы субсостоянием общего состояния, чтобы в одной переменной можно было комбинировать "ходьба_на_кортах", "ходьба_с_мечом" и т.п. и эффективно различать такие сорта состояний, и независимо изменять одно субсостояние, не трогая остальные (или трогая, но только согласно игровой логике).
До этого я городил низкопроизводительный костыльный массив. Теперь-то я сделаю круче.
Только не забудь сделать битаррай что бы дебажить. Типа что бы видеть какие единички и нули в инте или что у тебя там будет. А потом когда как надо заработает закомментишь.
Мне в любом случае придётся городить визуализацию. Для совмещения с другими частями кода. Ты прям в энуме битовые сдвиги задаёшь, а я хочу попробовать задавать их в сеттерах, типа: SetState(int State, int Shift) а внутри { mySyperState = mySuperState & (State << Shift)}
Ну попробуй. Я так правда не делал еще. Надеюсь будет тебе польза.
Алсо я бы сделал иначе всетаки. С енумами по коду очевидно какие где стейты. А так не очень. Неделя пройдет и забудешь. В крайнем случае сделай энум для стейтов так
enum state
{
running=1,
walking=2,
something =3
}
А потом уже
SetState(int State, state S) а внутри { mySyperState = mySuperState & (State << (int)S}
Однако все равно странная конструкция получится. Я бы так не стал.
Алсо как потом маски городить и как сравнивать? Кажется придется много кода писать да к тому же очень неочевидного.
Ну вот, значит я ещё не до конца понял. Покажу мою идею бинарно:
0100 0001 0011 0100
В каждый сиквенс из 4х регистров предполагается обращаться независимо. И доставать оттуда независимое число, от 0000 до 1111 (15). То есть, в данном примере мы можем задать отдельный энум до 15-ти последовательных констант на отдельный субстейт. Если надо больше - мы увеличиваем сиквенс. Главное, чтобы все они влезли в 64х битный инт (насколько я знаю это максимум, что завезли на сегодняшний день, но если я ошибаюсь, то можно и в 128-битный влезть, если есть, и если прям такая сложная машина, на практике такая сложность редко встречается)
Далее в игровой логике можно будет задать паттерны соответствующие тому или иному набору субсостояний, описываемые этим 32битным числом. И в едином свиче их все чекать и роутить.
Например, 0011 0000 - это скажем, состояние выставленного оружия, а 0100 - это состояние ходьбы, следовательно паттерн ходьбы с выставленным оружием - 0011 0100. А скажем, состояние пребывания на скользком полу - это 0001 0000 0000, значит, чтобы определить, что персонаж на скользком полу, движется с выставленной пухой, нам понадобится вычислить, соответствует ли общее состояние паттерну (маске) 0001 0011 0100. И последний сиквенс 0100 0000 0000 0000 у нас допустим, означает что перс идёт пешком, а не на каком-либо транспорте, проверка аналогичная.
Ну в принципе да. Но я довольно глупый и большие штуки в голове хранить не умею. Поэтому я всегда делю задачи так что бы в любом состоянии сознания суметь прочесть код и понять что происходит.
Ты прав что можно упаковать в лонг 64 бита про все на свете. Я вот в инт упаковал 32 различных ячейки инвентаря. Он у меня такой. Например бутылки не должны принимать ничего кроме жибкости, порошка и газа. Дрова в бутылку ты не положишь. Или например мешки для денег принимают только монеты.
Но воротить 64 бита это слишком. Если на твою анимацию что то влияет это не всегда стоит упаковывать так.
Не знаю короче. Рад что ты разобрался с системой но по моему ты слегка усложняешь себе задачу.
>Когда игра создаёт атмосферу открытого мира, не претендуя на реалистичность, мозг автоматически принимает этот расклад и не докапывается к болванчикам, что они болванчики
Ну во-первых: это больше похоже на обычную проекцию, когда человек свое очень важное мнение выдает за какой-то общепринятый факт. Ну не может быть такого, что у всех людей будет именно так же работать мозг. С ним может быть это так и есть, но конкретно у меня очень большие претензии к сегодняшним играм
Во-вторых: все течет и все изменяется. Не может быть такого (я надеюсь), что даже в ближайшем будущем игры будут на том же уровне, что и сегодня. Ну представь, ты попадаешь на 20-30 лет вперед, а там ГТА 12 с еще более реалистичной графикой и еще большей картой, но во всем остальном - это тот же ГТА 5 со всеми его дубовыми НПС. Меня даже дрож берет от такой перспективы. Надеюсь, каждый отдельный аспект игровой механики будет развиваться во времени
> все по прежнему сводятся к сними шкуру с 10 волков и доставь письмо
В реальной жизни всё ещё скучнее.
>>714903
энкаунтеры потому и работают лучше, чем квесты, мир кажется живым
но зачем, когда кал про 10 шкур волков жрут основные два рынка - азия и сшп? их приучили за 20 лет.
у японцев дрочба одного и того же - это прокачка мэджикарпа, им нормально, но традиции типа шикоукенкецу сглаживают эффект от дрочильней, и японская дрочильня всегда отличима от любой другой страны, да и игры ли это? в англосфере есть термин GEMU и он отдичается от видеогейм
Лолд блядь
Чисто технически уже все это реализуемо было давно, тут мощность компов непричем.
Можно делать степени симуляции, вокруг персонажа в 200м - максимально точно, далее - раз в секунду.
Алсо >>714488 двачую гоап, гуглите мамины говноделы, все уже придумано до вашего рождения
yakuza 0 пока самое близкое к описываемому
самосбороигры сосут именно поэтому: хуй ты даже майнкрафтоподобный гигахрущсгенеришь
примеры даже на вики есть
статей тоже куча
сайдквесты в той же якудзе 0 - вообще игра заставляет задуматься
> Производительность ПК однажды достигнет такого уровня, что можно будет расчитывать +- жизнь города
Пчел, дело не в производительности. Она уже давно достигнута. Просто кибербанк обосрался ввиду того что что бы сделать интересный город придется нехило поработать над ним. Но додики думают что если закидать пшеков шекелями, то из этого что то обязано выйти, а если нет - значит это невозможно. Производительность ПК, лол. Не смеши мои тапки, анон.
>>714360
> Прекрасно. Создавай проект, доску на трелло и можешь еще в юмл нарисовать прототип. Юмл помогает структурировать мысли. Да и в картинках воспринимать что то новое проще.
Это даже не смешно. ЮМЛ мертв, и идеи с ним связанные. Его только в вузах и шарагах зачем-то еще вспоминают.
дурик, это придумали еще в 2007. все неписи в свалкере могут взаимодействовать с другими неписями в риалтайме, даже когда игрок находится вне локации, эти события генерируют квесты, а также действия и реплики некоторых нпс. к примеру прибежали собаки на дикую территорию и сразу же генерируется квест на убийство собак. или ты освободил дикую территорию от наемников и после этого прибежал долг. дело в том,что это никому нахуй не уперлось.
Поясни про "всех со всеми". Вот алкоголик Вася пришёл к другу, алкоголику Пете. Они выпили, побеседовали, подрались, выпили, помирились, уснули. Зачем остальным двум сотням жителей того же дома знать об этом событии и как-то на него реагировать? В лучшем случае источник шума заденет десяток ближайших соседей, но реагировать им на это не обязательно. Аналогично на улице, пока у магазина толпится очередь, человеку достаточно держать в поле зрения того, кто впереди, если он в очереди. А простой прохожий может вообще игнорировать очередь как объект, ведь он идёт по своим делам, а не в магазин.
Можно прикинуть, что какой-нибудь мэр города должен анализировать состояние каждого жителя, но, во-первых, если он и будет работать с анкетами жителей, то в них отображается фиксированная на какой-то период информация, а не актуальные данные последней секунды симуляции, а, во-вторых, мэр не должен управлять каждым жителем, он только анализирует статистику и раздаёт приказы подчинённым структурам. И в-третьих, прежде чем симулировать такие обширные структуры, было бы неплохо для начала сделать простых жителей, которые дома спят и развлекаются, в магазине закупаются продуктами, а на работе получают деньги для продуктов и развлечений. Это уже покрыло бы 99% жизни обычного города, оставшийся 1% происходит редко и малозаметен с позиции обычного жителя. А уж для игры этот процент реализовывать вообще не нужно.
>теория которая оперирует 5 понятиями
Слишком высокоуровнево и слишком отдаёт пустой философией. Если такое реализовывать на практике, рано или поздно запутаешься что куда относить и либо забьёшь, либо начнёшь упрощать.
>уникальной человеческой эмоции отвращения
Ничего уникального в ней нет. Отвращение есть и у животных. Говно, например, отвратительно высшим животным, даже если им приходится его натурально жрать (чтобы очистить место обитания от отходов детёнышей). В целом любые резкие запахи могут вызывать отвращение у животного с хорошей обонятельной системой, т.к. выбиваются из привычной картины мира животного. Человеческое отвращение ничем от животного не отличается, просто человеческий мозг создаёт связи более высокого порядка, связывая с эмоцией отвращения вещи, которые непонятны другим животным.
>одни способы жизни и поведения – чистые и возвышенные, а другие – грязные, низменные, отталкивающие
Если отбросить философскую шелуху, "способы жизни" могут вызывать отвращение только по ассоциациям. Ассоциируется с отвращением всё, что опасно для жизни. Контакт с говном, например, опасен заражением различными инфекциями, и поэтому отвращение к говну закодировано в наших и не только наших генах. А человек, убивающий других людей, вызывает отвращение потому, что убийство человека человеком опасно для ещё живых людей, следовательно его нужно избегать и всеми силами предотвращать, иначе ты сам можешь стать чьей-то жертвой. Конечно, чтобы построить логическую цепочку "человек убил человека, следовательно он может убить меня, следовательно он опасен" нужно обладать человеческим мозгом или чем-то подобным человеческому мозгу, однако к эмоции отвращения это не имеет никакого отношения.
Эмоции вообще не участвуют в мышлении, а только мешают, переключая организм в древние и зачастую неактуальные состояния, потому что формировались они задолго до развития этого нашего мышления и были необходимы для выживания без способности мыслить. Так что не надо делать эмоции фундаментом ИИ, нужно абстрагироваться от них.
>>может вообще игнорировать очередь
>может просто пройти сквозь очередь пьяниц и...
Ты не понял. Прохожий игнорирует очередь в том смысле, что он не пытается изучить детали: кто с кем разговаривает, кто куда смотрит и т.д. Он просто обходит очередь стороной, как обычное препятствие. Его не интересует очередь, пока он идёт куда-то по своим делам.
Если, например, пьяница в очереди захочет пристать к этому прохожему, очевидно, прохожий обратит внимание на пьяницу, оценит его параметры и предпримет какое-либо решение относительно своих действий. Ему по-прежнему не обязательно изучать всю очередь, также как людям в очереди не обязательно наблюдать за конфликтом пьяницы и прохожего. Большинству людей вообще безразлично, что происходит с окружающими, пока к ним лично никто не пристаёт. "Меня это не касается" и всё, а часто и вообще без мыслей.
Если же прохожий не идёт куда-то, а вышел погулять с целью познакомиться, он может быстро оценить людей в очереди и пристать к кому-то конкретному, начав с ним диалог. Ему опять же не обязательно держать в фокусе внимания всех остальных людей в очереди и людям в очереди должно быть плевать на этого прохожего, он им не интересен, пока не мешает лично им.
Ну и где тут квадратичная сложность?
это ты вообще не врубаешься, дурачок. квадратичная сложность, лол. слов умных выучил, а значение их = нет. пиздуй в школу, баран.
Видимо, он имел в виду экспоненциальный рост сложности, а точнее комбинаторный взрыв. Главное что суть понятна, а какими словами он неумело выразился не столь важно.
Сложность линейная. Я не знаю, чуваки, вы когда на улицу выходите в магаз и каждый шажок делаете перед ним, вы со всеми льдьми в городе созваниваетесь? А они со всеми остальными? Или когда на митинге стоите (если стоите), тоже от всех стоящих людей высчитываете свою траекторию ходьбы? Я не знаю как тут может получиться придумать worst-case сценарий, потому-что это бред нахуй.
Нет, если макаку заставить помолится, она может и расшибет себе лоб и сделает все-ко-всем, и у нее будут комбинаторные взрывы и вообще что угодно, но нормальным людям то это нахуй не надо. Не разводите шизу, постыдитесь.
Вот именно, вот об этом я и писал. Взаимодействия между ботами минимальны, они даже не знают о существовании друг друга пока лично не встретятся.
Но вообще, прежде чем думать о сложности симуляции целого города, квартала или дома, ящитаю, нужно хотя бы одного бота симулировать, чтобы он мог заниматься повседневной деятельностью, реагировать на окружающую обстановку и её изменения, действия игрока и т.д. Добавить второго такого бота и наладить между ними возможность коммуникации. Будут ли проблемы с производительностью на сотни таких ботов - вопрос не срочный, всегда можно докинуть процессоров или урезать симуляцию до одной маленькой деревни. Речь-то идёт о живом мире, а не городе на миллион жителей.
Кстати, а что на счёт симс? Я помню, их хвалили за подробную симуляцию жизни персонажей, да и разработчики признавались что симуляция жизни была главной целью разработки симсов. Не нравится жта из-за "тупых болванчиков" - идите играть с симсами, а жта не про интерактивных кукол которым нужно жрать и срать.
Хотя я бы хотел сделать жта с ботами уровня симсов. Да, это потому что я сыч и с людьми не хочу контактировать.
https://www.popularmechanics.com/culture/gaming/a10698/inside-the-mind-of-the-sims-4-16906802/
> So, when making every decision, a Sim considers all possible actions, analyzes their outcomes, references the utility curve, and selects the best one. However, these actions are somewhat randomized by design so the AI doesn't start to feel predictable.
> In The Sims 4, developers have improved the AI's efficiency by creating an autonomy hierarchy. "Instead of considering everything in the entire world every time a Sim is deciding what to do, we first evaluate all of the commodities and figure out what sorts of things are most important to the Sim," Ingebretson says. "That lets us eliminate from consideration a large amount of possibilities." This means Sims become faster and more efficient at making decisions and can multitask rather than following a strict "first this, then that" script.
Крч как я понял, у сима есть какие-то возможности и исходя из его потребностей, вычисляется топ возможностей и сим начинает по ним работать. Наверное каждая возможность имеет какую-то длюннющую формулу от персонажа (включая условия). Как я понял нет каких-то долгосрочных целей а-ля goap, все на уровне амёбы, пусть и сложной.
Интересно что есть мультитаскинг, кстати. Хотя я в симсов никогда не играл, поэтому не вкурсе как там что работает.
> Будут ли проблемы с производительностью на сотни таких ботов - вопрос не срочный, всегда можно докинуть процессоров или урезать симуляцию до одной маленькой деревни. Речь-то идёт о живом мире, а не городе на миллион жителей.
Я думаю, что на сотни - это вообще раз плюнуть. Конечно зависит от того насколько крутых хочешь ботов, но все равно. Еще не обязательно каждый тик обрабатываеть всех, можно просто просчитывать только часть популяции за момент времени. Или если игрок может наблюдать только одну часть локации за раз, то и думать нечего, это старый трюк. Оптимизаций куча.
>>747523
Не совсем согласен, что это нахуй никому не уперлось. Даже в свалкере могли бы это сделать на уровне, но они зачем-то обдолбились и начали отпрявлять неписей на выполнение квестов игрока. Идею реально развили только в клир скае, с фракциями которые пиздят друг друга. Но особо там и правдо это нахуй не надо. Но в киберпанке бы точно зашло. Сука, просто видеть живой город, с людьми которые не очевидно-деревянные додики. Ну просто типа следишь за челом, а он идет пьет кофе, потом идет в толкан, потом расплачивается на кассе, пиздует домой. Но пшеки решили жидко обосраться со своим police.spawn("behind") или как там было, и когда оборачиваешься и старые прохожие исчезают и появляются новые. ААА. Позор блеать.
А если N = 1000, то тоже все всех должны оценивать за раз? Охуенно. Братан, у того что ты говоришь есть лимит, который вписывается в линейную константу. Лимит того что человек может воспринять за раз. И для людей (или мы нахуй киборгов моделируем уже?) этот лимит довольно низкий и от кол-ва населения вокруг него не зависит. ИРЛ ты тоже за одну единицу времени не оцениваешь всех прохожих идущих тебе на встречу, насколько ты их там уважаешь, ты оцениваешь одного либо небольшими группами.
Ну ты и ебобо, ей богу. Ладно, хватит с меня шизоидам что-то объяснять.
Можно оценивать по признаку а группу, отсеивая то, что не подходит. Тем самым ты в конце концов будешь обрабатывать только нужных людей.
Главный вопрос: зачем? Геймеры покупают картинку, а не симуляцию. Разработка такой симуляции так же очень сложа и ведёт к проблемам с балансом, историей и прочим. Игры с симуляциями такого рода надо искать в индиках, приличную часть можно сделать хоть сейчас.
>>751848
Это именно что модель "психологии и психотерапии" которую психологи и психотерапевты и то и другое - суть цыгане и мошенники впаривали лохам, во времена расцвета психотерапии в США.
Достаточно просто попробовать написать простенький сюжет, руководствуясь этой моделью, чтобы понять примитивность этой модели.
Зато нервическим домохозяйкам очень хоходит. Жертва-преследователь-спаситель. Для женских романов разве что пригодится.
Я реально пытался использовать эту схему для написания сценария.
Но то ли слова "агрессор" "жертва" "спаситель" сами по себе лишком сильные и настраивают на определённый лад, либо схема сама по себе придумана для увлечённых эмоциями дамочек, либо и то и другое но выходит из этого именно такая женская "драма ради драмы".
Посмотрите на саму постановку сцены. Тут обязательно есть жертва. И тут отключён нейтралитет. Либо жертву спасают, либо травят. И выхода нет.
> Это именно что модель "психологии и психотерапии" которую психологи и психотерапевты и то и другое - суть цыгане и мошенники впаривали лохам, во времена расцвета психотерапии в США.
ага, и как видно, впаривают до сих пор. лох таки не мамонт и таки не вымер. как вся эта тупистика дожила до 21 века вообще не понятно.
Задачу нужно решать аппаратно.
Множество параллельно работающих процессоров уровня STM/AVR. Множество объектов (педестрианы, здания, авто). Отображаем одно множество на другое. На один проц придется, как правило N игровых объектов. Поскольку, размер такого компа и энергопотребление будут сильными, все это дело помещается в сервере аналога интернет-провайдера и за вход в игру ты платишь абонентскую плату. Это все можно сделать, но для этого нужны деньги, исследования и т.п.
>Даже если на это потребуется 100 лет, все равно, этот день настанет
1998
У каждого npc в городе свой распорядок дня, в зависимости от будней, выходных, погоды, и праздников.
Ну ты пориджа совсем разъебал
я то хотел хотябы Обливион 2006 года упомянуть, где помимо всего тобой описанного были курьезные случаи, когда баг в расписании графини заставлял ее ебашить пешком в другой город каждое утро, где ее убивали в лесу грязекрабы с медведями (без всякого присутствия игрока)
Тупа Симс.
Тут проблема не в мощностях, мощностей давно хватает, тут проблема в необходимости, которой просто нет.
Никому это нахуй не нужно.
У тебя ирл сотни многоэтажек вокруг с такой вот "жизнью города". Они тебе интересны?
И никому они не интересны.
Интересны истории, для придумывания которых нужен талант.
>У тебя ирл сотни многоэтажек вокруг с такой вот "жизнью города". Они тебе интересны?
>И никому они не интересны.
А там ничего и не происходит в этих многоэтажках. Мы ж в эмуляции. Люди скрываются из твоего поля зрения и растворяются за дверью подъезда, который и не подъезд вовсе, пока тебе в голову не придет его посетить. Меня тоже не существует, есть только этот комментарий, который ты прочитаешь, а иных комментариев не существует, чтобы ресурсы не тратить, ты же их не прочитаешь.
Нет вообще никакой возможности доказать, что у "вон того дерева на холме" есть другая отрисованная сторона, пока её никто не видит.
Ну то есть сейчас всё реалистично в играх и большего не надо.
И как "шрамы" могут подтвердить наличие этой стороны при отсутствии наблюдателя?
>Мои тезисы просты:
>1. Производительность ПК однажды достигнет такого уровня, что можно будет расчитывать +- жизнь города. Речь не о ближайших 2-5 года, если что. Даже если на это потребуется 100 лет, все равно, этот день настанет
>2. Кто-то должен начать двигаться в эту сторону уже сегодня
>
>Я начинаю движение в этом ИТТ. Погнали!
В GTA 4 всё это нормально реализовано. В Hove beach - русские, в shottler - жиды, на star junction - офисные педы, в alderny - байкеры. Что не так? Это норм развитие. Как раз и пресеты сделали и подгружают их если попадаешь в район.
А сразу всю область делать живой нет смысла.
>Никому это не нужно.
Нормисам может и не нужно. А я вот хикка, за ручку с тян не держался, вся жизнь прошла мимо меня и продолжает проходить, пока я годами не выхожу за пределы квартиры. С какой стати ты решаешь за меня, что мне не нужно симулировать тян, чтобы ходить с ней в её виртуальном мире в парк или на пляж, играть вдвоём в разные мини-игры, считать звёзды и встречать рассветы? И один ли я с таким желанием?
inb4 >делай
Не получается.
>истории, для придумывания которых
А не нужно ничего придумывать. Полностью симулированный город суть песочница, а в песочнице истории возникают сами по себе, остаётся лишь искать их и следить за ними или участвовать. Жители взаимодействуют друг с другом, дают друг другу задачи, торгуются, встречаются, женятся и заводят детей, и т.д. Наблюдая за обсуждением разных игр, я обнаружил, что многим людям нравится обнаруживать такие генеративные истории, возникающие лишь благодаря компьютерной симуляции, а не прописанным сценариям. Сценарист всё равно не сможет придумать всего того, что может возникнуть в симуляции, его мозг слишком ограничен опытом.
В Cities Skyline население занимается жизнью, пусть и очень примитивной (дом-работа). Да даже Simcity 2000 по-моему у каждого человека тоже были свои занятия.
Купи себе ВР и няшь там тянку пока не ёбнешься, а не еби людям мозг, потому что эта не та задача, которая обсуждается.
>Купи себе ВР
Меня не интересует ВР, мне нужна симуляция жизни/ИИ.
>няшь там тянку
Какую, лол? Я хочу свою создать, копаться у неё в мозгах.
>эта не та задача, которая обсуждается
А какая тогда обсуждается-то, лол? Живой город - это не просто болванчики, которые двигаются от точки "дом" до точки "работа" и обратно, а полная симуляция взаимоотношений людей, как между неигровыми персонажами, так и между игроком и этими персонажами. Т.е. в идеале игрок должен мочь подружиться и завести романтические отношения с любым персонажем города, если будет правильно себя вести.
Вот в GTA SA и GTA IV были романтические отношения, а в GTA IV и GTA V - дружеские, но всё это заскриптовано, ограниченно и доступно лишь с несколькими специальными персонажами. Тем не менее, это создавало ощущение, что город живёт своей жизнью, что персонажи чем-то своим занимаются, выделяют тебе своё время, хотят отдохнуть или повеселиться, изменяют своё отношение к тебе в соответствии с твоими поступками. Да, все остальные жители города - призраки, возникающие за спиной и исчезающие за углом, но даже небольшая группа полностью скриптованных товарищей делает мир игры более живым.
Так что если и делать симуляцию города, без таких отношений никак не обойтись, и игрок должен мочь активно участвовать в них. Короче, полноценный подробный симулятор города подразумевает включение симулятора свиданий как доступную ветку взаимодействий с персонажами, иначе это неполноценный симулятор города про бесполых болванчиков, движущихся по скриптованным маршрутам от дома до работы и обратно. Зачем вам неполноценный симулятор?
>проблема ИИ - он не понимает че происходит
Даже самый примитивный ИИ понимает в меру полноты своей картины мира, которая зависит от сенсоров/датчиков. Если ИИ имеет возможность рейкастами сканировать пространство перед собой, он поймёт, когда его путь преградит непроходимое препятствие, а если у него таких рейкастов нет - будет долбиться лбом об стену, которую игрок видит, а он - нет. Так что проблема в том, чтобы снабдить ИИ всем необходимым, тогда он и будет "понимать, что происходит" в рамках своего мира.
>поиске пути заметно, если его обгородить машинами, он будет просто стоять
Тут проблема системы поиска пути, которая не учитывает подвижные объекты. Если бы бот лучами сканировал пространство перед собой и умел перепрыгивать препятствия, такой проблемы бы не было, но это сложнее делать, чем обычный поиск пути по вейпойнтам или по клеткам.
>у него нет более глобавльного видения картины, типа он опаздывает на работу
В играх типа ГТА у пешеходов вообще никакой работы нет, они никуда не опаздывают, они просто движутся по рельсовым маршрутам и зачастую даже не заходят в дома, а просто ходят по кругу вокруг нескольких кварталов. В играх типа Симс персонаж может впадать в панику, если не сможет найти путь до нужного ему места, но что может сделать сим против всемогущего игрока, который закрыл сима в коробке из стен без окон и дверей? Ничего, если не давать возможность ботам ломать препятствия.
>должен впасть в берсерк и начать крошить всех вокруг, нечего терять
У людей разные характеры. Кто-то взбесился и начнёт всё ломать, кто-то попытается позвать на помощь, а кто-то просто сядет на пол и будет плакать из-за того, что не может выбраться из этой ситуации. Т.к. мы говорим о полноценном симуляторе города с людьми, должны быть разные характеры у разных персонажей, а не полный город неуравновешенных психов. Более того, персонаж должен всегда соответствовать своему характеру, а не выбирать стратегию рандомно, люди крайне редко меняют сложившийся характер.
>Такие, чтобы было интересно по ним передвигаться
Это скорее вопрос геометрии и декораций, а не NPC.
>npc были бы наделены хоть какой-то душей и сутью
Я понимаю, ОПа давно нет с нами, но дайте кто-нибудь определение "души и сути" в контексте NPC, а то я что ни придумаю - получаются
>заскриптованные персонажы,
которые хоть и могут принимать решения, но все решения прописаны заранее, в скриптах.
Можно сделать примитивную систему самообучения, по проблема любой такой системы в том, что её результат может оказаться "неправильным" с нашей точки зрения, хотя и оптимальным в математическом смысле. Скажем, жители города вокруг горы обнаружат, что переть через гору эффективнее, чем по дороге вокруг горы, и будут массово переть через эту гору, а на дороги вообще забьют. Или обнаружат какой-нибудь нетривиальный баг физического движка и научатся его эксплуатировать, чтобы добиться максимально эффективной жизни. Нельзя их за это ругать, мы бы тоже воспользовались багами своей Матрицы, если бы их нашли, но игроку вряд ли интересно наблюдать, как боты эксплойтят баги вместо него.
> а все остальные, это болванки генерирующиеся вокруг героя и так же бесследно исчезающие когда героя проходит мимо них не оглядываясь. Понятно, что этот вариант был выбран не из-за хорошей жизни, ресурсы ограничены и все такое
Недавние секс-скандалы в крупных студиях показали, почему конкретно так происходит.
Ничего не мешает сегодня сделать так, чтобы генерируемый болванчик сохранялся в файле сохранения своим GOAP-планом и чтобы была вероятность встретить знакомых болванчиков в открытом мире. Ресурсов хватит. Однако, для этого нужно, чтобы девелопер подходил к вопросу с душой, а это невозможно, блять, если в офисе царит жесточайший кранч, хейт, доёбы. Лютая текучка кадров не позволяет никому сконцентрироваться на деталях. Геймдизайнерам поебать на такие мелочи, как детально воспроизводимые открытые миры. Им акционеры приказали ебашить по формуле из экономического отдела бизнес-модели шапок для отбива вложений.
И напоследок вот вам живой пример. Вот такие мудаки олицетворяют большинство в геймдев-продакшене. Вот этот хуй по вашему будет с душой корпеть над открытым миром? Врядли. >>782389 (OP)
>Ничего не мешает сегодня сделать так, чтобы генерируемый болванчик сохранялся в файле сохранения своим GOAP-планом и чтобы была вероятность встретить знакомых болванчиков в открытом мире.
Не мешает. Но смысла нет.
Вот смотри. Ты делаешь игру про преступника в большом городе, который гоняет на дорогих ворованных тачках, убивает всех, включая толпы копов и военных чисто в одиночку, в одиночку грабит банки и так далее. Ты прекрасно знаешь свою ЦА - твоя ЦА будет давить пешеходов не задумываясь, устраивать массовые расстрелы, погони, взрывы и тому подобное. Будут собирать толпу народа, закрывая их автомобилями, и затем всё это закидывать динамитом, чтобы посмотреть, как будут разлетаться рэгдолы и куски машин.
Теперь подумай: что будет, если все болванчики уникальны, следуют своим маршрутам, имеют сложное поведение, всегда сохраняются и не спавнятся рандомно? Да большинство игроков выпилит всё население города за первые полчаса игры и потом будет писать негативные отзывы на тему "город мёртвый, никого нет". Тебе оно надо? А игрокам это надо? Кому это вообще нужно, мёртвый город в первые полчаса игры из-за того, что игрок может безнаказанно убивать всех уникальных ботов, которые не респавнятся?
Если ты попытаешься сделать полноценную экономику, производство и тому подобное в виде полной симуляции, то вся симуляция очень быстро сломается, когда игрок поубивает большую часть ботов, а остальные не смогут ничего произвести/купить/продать. Город будет не совсем мёртвым, но и боты будут тупить или шляться без дела, потому что не могут найти себе задачу.
Короче, полная симуляция жителей имеет смысл только в игре, в которой игрок не имеет возможности или задачи свободно и массово убивать жителей. Вот в РПГ, где за любое преступление героя сажают в тюрьму или вообще делают геймовер, там симуляция будет работать, пока игрок не найдёт какую-нибудь уязвимость. А в игре по типу ГТА такое нормально не заработает, пока не будет полноценный ИИ, способный дать отпор игроку - но с таким сложным ИИ большинство игроков откажется играть, им хочется тупое мясо, чтобы гиперкомпенсировать свою ИРЛ немощность. Если игрока и босс на работе нагибает, и игроки в онлайн-играх, и даже ИИ в ГТА - вряд ли он согласится покупать эту самую ГТА.
>кранч, хейт, доёбы
Это касается только легко заменяемых работников: программистов, художников, звуковиков и т.д. Геймдизайнер скорее всего один и работает совершенно без стресса - не ему ведь контент делать, он только придумывает задачи для всех остальных.
>должны приезжать боты
Я рассматривал такую идею. Проблема в том, что нарушается симуляция, это всё равно что спавнить мобов за спиной игрока. Какая разница, спавнится моб за спиной игрока или в самолёте, летящем в аэропорт города? Он так и так материализуется из ничего. Если мы рассматриваем полноценный симулятор города, он не может быстро и без последствий получать новых ботов взамен старых. Тем более если старые погибают от рук непобедимого серийного маньяка.
>они должны были понять
Обычный бот сможет понять только то, что ты закодишь в него, а ты не сможешь закодить все возможные ситуации. Мало того, что у тебя сложная симуляция на сотни ботов, так ещё и игрок совершенно непредсказуем - даже в обычных играх игроки постоянно находят и эксплойтят кучи багов.
>начать адаптироваться
Как ты это себе представляешь? Нейронные сети, генетические алгоритмы? Или жёстко прописанные рельсы от дизайнера? С рельсами уже выше описал - ты не сможешь прописать все возможные варианты адаптации, как не сможешь даже просто представить себе все возможные ситуации. Даже простейший процедурный генератор способен удивить своего создателя, а мы обсуждаем сложную симуляцию.
Генетические алгоритмы позволяют виртуальным существам адаптироваться к, наверное, любым возможным ситуациям, но чтобы ГА заработало, нужно много поколений - даже с простыми формами виртуальной жизни ГА требуются сотни, а то и тысячи поколений. ГА можно использовать для начальной инициализации жителей города, чтобы они были уникальными, но в процессе игры ГА в таком виде неприменим.
Как вариант, с помощью ГА можно вырабатывать стратегии поведения внутри каждого персонажа без его гибели, т.е. в одно поколение персонажа, но всё равно потребуются сотни и тысячи поколений стратегий поведения, чтобы получилось что-то юзабельное. Учитывая то, что ботов в городе должно быть много, а каждое поколение ГА подразумевает какие-то расчёты, предполагаю слишком сильную нагрузку на компьютер. Для пошаговой игры сойдёт, но не для экшен-игры уровня ГТА или любой современной РПГ.
Нейронные сети пока не могут адаптироваться на лету к сложным ситуациям. Т.е. да, они чему-то могут учиться, но это занимает уйму времени, требует уйму данных и памяти. Уже пытаются внедрять "нейрочипы" в качестве стандартных ускорителей (по аналогии с видеокартами), но до масс это дойдёт не скоро. К тому же, по-моему, с ними намного сложнее работать, чем с ГА. В принципе, можно объединить ГА и НС, т.е. вместо обучения НС, просто делать новую как потомка/мутанта старой, но недостатки всё те же, что у любых ГА.
ГОАП и другие специальные типы ИИ вообще не предполагают адаптации, т.е. будут работать только в изначальных условиях, к которым ты их подготовишь (возвращаемся к тому, что ты не сможешь учесть все возможные ситуации).
Если знаешь какие-то другие подходы - рассказывай, интересно. Я тоже хочу такой город с симуляцией жизни, но пока, можно сказать, в самом начале пути (очень затянувшемся начале).
>Ведь если у тебя не симулируется весь мир, а только 1 город, то и так симуляция нечестная, какая разница?
Одно дело симулировать какие-то глобальные события во внешнем мире, которые косвенно влияют на город (погода, войны, неурожай и т.д.), совсем другое - спавнить толпу новых ботов, которым ВНЕЗАПНО захотелось переехать в город, в котором орудует серийный убийца. Разве что это будут какие-нибудь безумцы, ищущие себе приключений, либо агенты спецслужб; все остальные постараются убраться из этого проклятого города подальше. Иначе получится эффект бесконечных жителей из ГТА: ты можешь уничтожать жителей в огромных количествах, но меньше их не становится, потому что всякий раз появляются новые, и эти новые совершенно не боятся находиться в одном городе с серийным маньяком, давящим всех подряд машиной.
>Игрок не должен быть непобедимым.
>они могут применять изоляцию района, вплоть до установки непроходимых барьеров и групп зачистки.
Ослабление игрока ниже возможностей ботов или усиление ботов выше возможностей игрока помешает игроку влиять на симуляцию, то есть быть её частью, это ломает погружение и лично мне не нравится в той же степени, что и обратная ситуация с более сильным относительно ботов игроком. В той же ГТА арест/убийство игрока при 1-2 звёздах розыска выглядит достаточно правдоподобно, но тот хаос, что творится на 5-6 звёздах просто бесит своей неадекватностью, граничащей с безумием. На игрока насылают БТР, танки, толпы военных и т.д. На одного человека! Ты когда-нибудь видел, чтобы против одного человека высылали танк, стреляющий из пушки прямо в городе, заодно вынося кучу мирного населения? Было бы намного лучше сделать перманентную смерть и позволить ботам-копам делать хэдшоты игроку, после чего игрок вынужден создавать нового персонажа и развиваться с нуля, не имея доступа ни к чему (на оружие нужна лицензия и деньги, которые нужно заработать, ведь даже на кражу сколь-либо значимой суммы нужны инструменты). Ну и тюрьма, разумеется, игрока не должны отпускать на свободу через 6 часов, поймав за массовое убийство; если игрок будет вынужден просидеть в тюрьме несколько игровых лет/десятков лет, город с его населением успеет восстановиться; алсо никто не запрещает сделать смертную казнь при условии перманентной смерти игрока. Что угодно лучше тупых болванчиков, которые едут на танках по городу и специально промахиваются мимо игрока.
>Я бы начал с чего-то типа минимального общества, из нескольких человек покрывающих нужные профессии. И эти скиллы могут быть у неписей даже в запасе неиспользуемыми. Грубо говоря как васян готовит мясо 1 раз летом на шашлыке, а в случае БП он стал бы штатным поваром. А при благополучной жизни они по пирамиде маслоу будут уже будут пользоваться другими скилами, например работой в офисе и программированием игр.
Хорошая идея, но это всё равно подразумевает только заранее запрограммированный набор скиллов. Если игрок начнёт творить нечто, что боты не ожидают (Васян ожидает стать поваром в случае гибели штатного повара), они не смогут адаптироваться и адекватно на это реагировать. Скажем, игрок может спрятать всех коров в каком-нибудь труднодоступном месте, и Васян, пытаясь приготовить шашлык, будет тщетно пытаться достать хоть одну корову, вертясь вокруг этого места и не находя пути/способа. Окей, мы можем поставить условие "если не удалось достать %предмет% за %N% минут, пойти искать другой источник %ресурс%", но это опять же попытка захардкодить все возможные ситуации, которые мы не можем предусмотреть полностью в достаточно сложной симуляции.
Вообще, обсуждение началось с того, что ты утверждаешь, что у разработчиков нет подходящих условий для создания симуляции. Я же утверждаю, что они не делают симуляцию, потому что она не имеет смысла. Даже если возможно создать сложную симуляцию, которую игрок не может слишком просто сломать (т.е. не может случайно сломать и разозлиться из-за этого), на её создание уйдёт много ресурсов (человеко-часов в первую очередь), а прибыль с неё достаточно сомнительна в большинстве жанров - в той же ГТА от города не требуется симуляция жителей, воевать против копов, спецназа и военных достаточно весело, и на реалистичность всего происходящего целевой аудитории просто насрать, они купили эту игру чтобы устраивать хаос в городе, а не наблюдать за сложной симуляцией жизни. Т.е. многим игровым жанрам симуляция не только не нужна, но и будет мешать - как минимум тем, что игрок может её нечаянно сломать, неосознанно испортив себе игровой процесс, а разработчикам придётся вложить больше ресурсов в разработку игры, отсрачивая её выход на рынок.
> Было бы намного лучше сделать перманентную смерть и позволить ботам-копам делать хэдшоты игроку
Хммм... ГэТэАшные звёзды, являющиеся множителем урона игроку? Наверняка эта идея не нова и уже есть в куче игор. Осталось только найти анонов, которые в такое играли.
Весь город должен быть размечен на зоны интереса - работа, учеба, дом, развлечения
Т.е. имеем жилой блок, вокруг него в ближайшей доступности - магазины, офисы, школ. Причем не во всех зонах все должно быть в шаговой доступности (объясню позже почему)
НПС генерируются с определенным паттерном поведения - если это личинка то в зависимости от времени суток ее можно будет обнаружить рядом со школой, в магазине, в кинотеатре, около дома
Взрослая баба - дом, офис
Работяга - любое место работы, дом
Таким образом конфиг поведения будет состоять из посещения точек интереса, где одна из точек будет удалена дальше остальных, тем самым НПС будут выбираться за пределы своего жилого района и создавать видимость движения.
Подробности расписывать не буду, тут поймет и ребенок. В случайные дни часть точек посещения будет исключена из маршрута, чтобы придать поведению реалистичность.
На месте этих точек нпс будет заниматься одним из нескольких видов активности :
Кинотеатр - симуляция толпы на улице, очередь, вход в зал, просмотр
Магазин - вход в здание, хождение между стеллажей, очередь на кассе
Что еще тут можно добавить? Да много чего на самом деле. Например привязка количества и состава НПС к конкретному дому или квартире - детей всегда меньше чем взрослых/в одной квартире не больше двух взрослых мужчин или женщин и т.п.
___________
Вишенкой на торте могут стать случайные ивенты либо ивенты создаваемые игроком.
ЗАЧЕМ ВСЁ ЭТО? ЗАЧЕЕЕЕМ?
Насколько процентов изменится игровой процесс от этого нововведения? Это точно стоит того? Где гарантия, что всё это будет интересно?
Я думаю, что тут как в историях с чедом, когда он сделал арканоид и получил прибыль, пока сычов ебошит попенворлд, который никому нахер не нужен.
Куда проще все ваши ресурсы направить на создание какой-нибудь мемной стратежки или шутана.
> обещали что в будущем
Это основная проблема любой футурологии.
> все, что содержит в себе больше разнообразных деталей, интересно
Проблема в том, что разнообразие деталей должно быть видно игроку. Всё описываемое ИТТ - игроку не видно. Ему на поверхности геймплея видны скучные, реалистичные обыватели, спешащие по своим делам. То ли дело - залихватский Скайрим Тодда "купи его ещё раз" Говарда! Болванчики разнообразные! Разнообразно мёртвые, механические игрушки! Всем своим видом и словами показывают, что стоят они тут исключительно для увеселения игрока. Двигаются по примитивным маршрутам, на которые всем в общем посрать.
Вот что срубает бабла.
Что "мафия 3", блять? Вынь сажу изо рта и скажи нормально.
Я ему про топовый Скайрим, он мне про провальную мафию.
> он начал сворачивать не туда
Не туда с точки зрения морроутёнка, которому наванговали светлое будущее. А с точки зрения окупаемости и коммерческого успеха - очень даже туда.
Ты вот этого понять никак не можешь.
Есть примеры игор,где такое хоть как-то реализовано? Я навскидку что-то не могу подобрать.
Есть. Ведьмак 1. Так же была игра про какой то замерзший корабль, хорор.
>>сделать перманентную смерть и позволить ботам-копам делать хэдшоты игроку
>Хммм... ГэТэАшные звёзды, являющиеся множителем урона игроку?
Ват? Как это связано? Хэдшот коп может тебе сделать и на первом уровне розыска, если ты будешь размахивать перед ним волыной или стрельнешь в любом направлении. Ботам не нужен никакой "множитель урона", чтобы убить тебя. Криворукие боты в большинстве шутеров криворуки специально, чтобы поддаваться игроку, чтобы любой игрок мог у них выиграть. Но если ты делаешь симуляцию, то не должен делать ботов поддающимися, ты должен делать ботов такими, чтобы они действовали в своих интересах. А в интересах ботов - выжить, и чтобы выжить, им нужно убить или иным способом обезвредить опасный элемент (игрока или агрессивного бота).
>>784199
>если вам нужно прямо симулировать жизнь
>В случайные дни часть точек посещения будет исключена из маршрута, чтобы придать поведению реалистичность.
Ты обосрался. "Придать реалистичность случайными изменениями" не имеет ничего общего с симуляцией жизни. Имитация - да, но не симуляция. Симуляция действует по строгим правилам и не пытается создать иллюзию того, чего нет. Если боту не нужно менять маршрут для того, чтобы выжить (или жить счастливо) - он этого делать не будет.
>Подробности расписывать не буду, тут поймет и ребенок.
Ловко выкрутился. Вейпойнты и точки интереса любой дурак знает и может реализовать. Ты самую интересную часть упустил - собственно симуляцию жизни.
>детей всегда меньше чем взрослых/в одной квартире не больше двух взрослых мужчин или женщин и т.п.
В симуляции такие вещи должны возникать сами по себе, без контроля со стороны разработчика симуляции. Боты сами должны определить, как им выгоднее жить, и группироваться по квартирам в соответствии с этими выводами. Иначе это не симуляция, а всего лишь имитация жизни.
Сравни это с обычными модельками деревьев и фрактальными рисунками деревьев. Обычные модельки делает художник, изображая дерево так, как он хочет. Фрактальный рисунок описывается специальными математическими или логическими выражениями, из которых в процессе симуляции "вырастает" рисунок, похожий на реальное дерево. Реальные деревья в лесу никто не собирает из кусочков, они сами растут, по определённым правилам, имеющимся в их генетическом коде, а также благодаря определённым законам физики, которые в том числе повлияли на генетический код. В этом вся суть симуляции: она создаёт новую (виртуальную) реальность, повторяя базовые принципы (правила, формулы) нашей, а не имитирует нашу реальность копированием внешних проявлений. Имитаций полно в видеоиграх, а вот симуляций очень мало.
>>784206
>ЗАЧЕЕЕЕМ?
Чтоб было. Потому что можем. Потому что хотим.
>>784216
>изменится игровой процесс
Симуляторы - отдельный жанр, никак не связанный с обычными играми. Нет смысла смешивать симулятор с обычной игрой, нет смысла тащить любителя обычных игр в симулятор. У симуляторов своя аудитория, как и у любого жанра.
>сделал арканоид и получил прибыль
Если тебя волнует только прибыль - или делать гиперказуалки на мобилки, тебя никто здесь не заставляет делать симулятор.
>>784223
>игроку не видно
Если делаешь игру для тупых с двухзначным айкью - да, тебе не нужна симуляция жизни или вообще какая-либо симуляция.
>Вот что срубает бабла
Иди руби бабло, что тебя сдерживает?
>>784547
>Игроку должны объясняться последствия каких-то поступков.
Сам пусть догадывается. Достаточно объявить, что последствия есть, а дальше желающие будут искать их, если захотят.
>с позиции режиссера фильма, который рассказывает зрителю историю от лица разных участников.
Думаю, процедурно осуществить это слишком сложно. Намного сложнее, чем просто сделать симуляцию. Да и кинцо-мыльцо всё же отдельный от симуляций жанр, со своей аудиторией, которая симуляции никогда не ждала и не просила.
>>784842
>В игре тебе могут показать детально проценты попадания в любую цель, слоу-мо пробитие танчиков, затопление кораблей по отсекам.
Бессмысленная мишура. Ну, ладно, с танчиками более-менее полезно, т.к. так становится понятнее, куда именно нужно стрелять. Но в остальном бесполезная хрень, которая надоест очень быстро. Вот в Макс Пейн было слоумо, камера следила за пулей, всё такое. Это было в диковинку и походило на кино. Ну и где это всё теперь? В каких-нибудь играх такое есть? Нет нигде. А циферки урона в РПГ вообще доисторический маразм, ненавижу их, бесят, никогда не обращаю на них внимание.
>С точки зрения психулогии симсы в голову приходят, там значками их хотелки показывают.
В Симсах значки нужны, потому что без значков непонятно будет, чего персонаж хочет или собирается сделать. Потому что персонажи не умеют говорить и не имеют мимики или её сложно разглядеть. К тому же Симс - это кукольный домик, симсы не полностью автономны, за ними нужно постоянно следить и ухаживать. Как лолька (ЦА игры) поймёт, что её куколке нужно? По пиктограммам, конечно. А если бы было непонятно, чего хотят симсы, они бы дохли как хомяки - быстро и глупо.
В этом треде мы обсуждаем автономных ботов, которые живут сами по себе, без участия игрока. Игрок может жить среди них от первого лица, даже не зная, чем занимаются боты в его отсутствие. Конечно, можно сделать пиктограммы для обозначения эмоций, но нет смысла демонстрировать все мысли бота игроку - это, как минимум, нарушит погружение. Да и играть в детектива не получится, если тебе не нужно ничего выяснять, не нужно изучать ботов через наблюдение за их действиями и т.д. Намного интереснее проследить за ботом и узнать, что он идёт в магазин, чем увидеть у проходящего мимо бота над головой пиктограмму "хочу есть - иду в магазин".
>Только пока нет поатомной симуляции, это все равно нечестная симуляция
Поатомная существует с прошлого века, абсолютно честная и даже демонстрирующая поведение, свойственное реальным бактериям. А реализация столь проста, что работает даже в браузере на телефоне:
http://www.michurin.net/online-tools/life-game.html
>что плохого в дополнительных условиях
Ты предлагал не "дополнительные условия", а просто игральный кубик кидать - какая цифра выпадет, то бот и будет делать. Это противоречит строгому выполнению правил системы/модели. Представь, что по ссылке выше клетки РАНДОМНО меняют своё состояние - что тогда будет? Белый шум тогда будет, а не симуляция.
>если так получается большая правдоподобность
Правдоподобие - это
>сходство с правдой,
а использование рандома там, где игрок/наблюдатель ожидает некие строгие правила - это однозначная ложь. Конечно, ГПСЧ тоже по правилам работает, но это совсем не те правила, которые ожидает игрок. Использование ГПСЧ оправдано только в тех случаях, когда тебе нужно по-быстрому имитировать сложное поведение. Вот боты в ГТА могут рандомно выбирать, куда им идти, потому что они в любом случае бесцельно блуждают. А боты в симуляции - не могут, потому что от этого их жизнь зависит, а жить им по определению хочется подольше. Если ты делаешь чатбота, который выбирает ответ на вопрос рандомно - ты пытаешься ввести пользователя в заблуждение, создавая ложное впечатление о том, что твой чатбот думает над вопросом. Реальное обдумывание вопроса ботом не может включать в себя случайные числа и его ответ всегда будет следовать из каких-то определённых, неслучайных причин.
>Так симулируется какое-то социальное поведение.
Ну хорошо, нарисуй кружочки на фоне квадратиков: пусть квадратики будут неподвижны, а кружочки будут рандомно выбирать направление каждый тик таймера, смещаясь на одну позицию за раз. Потом опубликуй это с громкими надписями "правдоподобная симуляция какого-то социального поведения" и посмотри, что получится.
Вот, у меня есть webm с похожим поведением. Что ты видишь? Движущиеся кружочки? Движущиеся с разной скоростью? Какие-то шустрые, какие-то ленивые? А зачем и куда они двигаются, можешь предложить? Спойлер: они двигаются совершенно рандомно, выбирая новое направление после каждого шага. Их движение может казаться осмысленным, но на самом деле оно совершенно бессмысленно. Здесь нет никаких скрытых правил, кроме того, что у каждого кружочка своя фиксированная скорость - это единственная "психологическая" разница между кружочками, в остальном их поведение абсолютно одинаковое. Здесь ты был обманут рандомом, но ты не должен быть обманут настоящей симуляцией, в ней всё должно иметь смысл, даже если его сложно обнаружить.
>все равно непонятно что человек хочет или собирается сделать
Так и должно быть. Сегодня боты в играх чрезвычайно предсказуемы без каких-либо специальных индикаторов. Цель любой симуляции - сложное поведение, которое нельзя так просто предсказать, но теоретически возможно (т.е. не рандом!).
>>784842
Что творится, анончики! Обсудили на днях этот вопрос, а на ютубе как раз видосик вышел на похожую тему:
https://www.youtube.com/watch?v=6HZuSzlN2eI
rand = function (numb){ return Math.floor(Math.random()numb); }
kolvo= 0; arr_nanit= [];
initNanit= function(poz){
var mc= cont.attachMovie("nanit", "nanit"+ kolvo, 100+kolvo); mc.count= 0; mc.speed= 8;
arr_nanit[kolvo]= mc; kolvo++;
if(kolvo>100){ kolvo= 0; }
if(poz==1){ mc._x= 50; mc._y= 50; }
if(poz==2){ mc._x= 750; mc._y= 50; }
if(poz==3){ mc._x= 50; mc._y= 550; }
if(poz==4){ mc._x= 750; mc._y= 550; }
mc.onEnterFrame= function(){
this.count--;
if(this.count<1){ this.count= rand(40); this.comand1= rand(20); this.comand2= rand(3); }
if(this.comand1> 0){ moveNanit(this); }
if(this.comand2==1){ rotNanit(this, 1); }
if(this.comand2==2){ rotNanit(this,-1); }
}
}
moveNanit= function(mc){
mc._x+= mc.xmov; mc._y+= mc.ymov;
if(mc._x>805){ mc._x=805; }; if(mc._x< -5){ mc._x=-5; }
if(mc._y<-50){ mc._y=-50; }; if(mc._y>650){ mc._y= 650; }
}
rotNanit= function(mc, abs){
mc.angleOld= mc._rotation; mc.angleOld+= 6abs; mc._rotation= mc.angleOld;
mc.angle = mc.angleOld Math.PI/180;
mc.xmov = mc.speedMath.cos(mc.angle);
mc.ymov = mc.speed*Math.sin(mc.angle);
}
Полезный видос. Однако афтар не догнал самого главного в конце (ну или забайтил на комменты, лол).
>Зачем всё это добавляли?
Для задротов же, очевидно. Нормис пробежится по сюжету, а там и пивас закончится, и нормис заснёт, довольно урча. А задрот соберёт все допки, захватит все вышки. И попросит ещё.