Занимаюсь разработкой игры под Андроид-платформу. Что-то вроде стратегии в реальном времени, где управление юнитами осуществляется путем изменения их поведения (агрессивное - защитное, ближний бой - дальний). Так вот, логика юнитов построена на нейросетях, настраиваемых в реальном времени обучением с подкреплением (reinforcement learning). Хотел посмотреть как далеко зашла игроиндустрия в этом направлении ИИ и так и не нашел до сих пор ни одного подобного проекта. Либо хорошо прячут, либо находят это направление бесперспективным...
Об использовании нейросетей в логике персонажей упоминали создатели Black&White, Supreme Commander 2, Planetary Annihilation. В Black&White простая нейросеть была малой частью сложного многокомпонентного алгоритма и определяющей роли не играла. ИИ двух последних разрабатывался одним и тем же человеком и основан на нейросетях, обучаемых обратным распространением ошибки в офф-лайне (ибо на обучение уходит слишком много времени). Еще видел намеки на использование нейросетей в играх Democracy и Creatures, но так и не нашел свидетельств, что они там самобучаются в процессе игры.
Может, у кого-нибудь есть на примете игра, где в логике принятия решений используются самообучающиеся или самоорганизующиеся в процессе игры нейросети?
BalticBear
> Так вот, логика юнитов построена на нейросетях, настраиваемых в реальном времени обучением с подкреплением (reinforcement learning). Хотел посмотреть как далеко зашла игроиндустрия в этом направлении ИИ и так и не нашел до сих пор ни одного подобного проекта.
Никак, этим вообще никто не занимается, тем более в русскоязычном пространстве.
> либо находят это направление бесперспективным...
Просто в развлекательных играх это никому не нужно.
Дебильноватые дети, которые играют в компьютерные игры, всё равно никогда не разберутся какой там интеллект против них играет.
BalticBear
> обучаемых обратным распространением ошибки в офф-лайне (ибо на обучение уходит
> слишком много времени)
Но зачем, зачем обучаться в процессе игры если можно обучить ИИ заранее (и протестировать на глюки, и проверить его силу). Чтобы он подстраивался под конкретного игрока и проще было выиграть на чужом компе чем на своем?
Dmitry10
> Никак, этим вообще никто не занимается, тем более в русскоязычном пространстве.
Жаль...
Dmitry10
> Просто в развлекательных играх это никому не нужно.
> Дебильноватые дети, которые играют в компьютерные игры, всё равно никогда не
> разберутся какой там интеллект против них играет.
А пользователю и не обязательно знать, что там внутри. Бонус применения самообучающихся нейросетей в том, что поведение NPC не остается постоянным, а меняется в ходе игры под воздействием обстоятельств.
kipar
> Но зачем, зачем обучаться в процессе игры если можно обучить ИИ заранее (и
> протестировать на глюки, и проверить его силу). Чтобы он подстраивался под
> конкретного игрока и проще было выиграть на чужом компе чем на своем?
Самообучающиеся нейросети не делают персонажа умнее, они делают его "живее". Его поведение больше похоже на поведение живых существ, становится рефлексивным. Это вносит свою изюминку в игровой процесс, мне так кажется.
BalticBear
> Бонус применения самообучающихся нейросетей в том, что поведение NPC не остается постоянным, а меняется в ходе игры под воздействием обстоятельств.
Это без проблем реализуется более простым способом: добавлением в алгоритм условий if-then и switch-case.
> Его поведение больше похоже на поведение живых существ, становится рефлексивным. Это вносит свою изюминку в игровой процесс, мне так кажется.
Единственное что это вносит - это резкое увеличение себестоимости проекта.
Если обычно спеца по игровой механике ты без проблем найдешь за $2k в месяц, то спеца по нейронным сетям и за $20k в месяц будет проблемно найти, да и работы для него будет на порядок больше.
Dmitry10
> Это без проблем реализуется более простым способом: добавлением в алгоритм
> условий if-then и switch-case.
Во-первых, на данном этапе у меня на вход ИИ подается 65 бинарных сигнала. Анализ всех возможных комбинаций и написание для них цепочек if-then займет немало времени.
Во-вторых, алгоритм из условий if-then и switch-case делает поведение агента предсказуемым. Это значит, в определенной ситуации он будет поступать всегда одним и тем же способом, независимо от последствий. Мне же нужно, чтобы агент оценивал последствия своего поступка и корректировал свое поведение. То есть, в следующий раз в той же ситуации он может поступить иначе.
Dmitry10
> Единственное что это вносит - это резкое увеличение себестоимости проекта.
> Если обычно спеца по игровой механике ты без проблем найдешь за $2k в месяц, то
> спеца по нейронным сетям и за $20k в месяц будет проблемно найти, да и работы
> для него будет на порядок больше.
Это не проблема. Нейросети у меня уже есть. Я над ними работаю с 2010 года. Сначала тестил в Excel. Потом написал небольшой курсовой проект на C#. А в прошлом году сделал небольшую игру в XNA и защитил по ней диплом в колледже. Сейчас, как раз, использую ее как прототип для текущего проекта под андроид. Делаю все сам, только звуки и музыку собираюсь покупать.
Меня настораживает отсутствие подобных проектов в игровом мире. Чувствуется какой-то подвох...
BalticBear
> Чувствуется какой-то подвох...
Когда запаришься реализовывать задуманное, поймёшь его суть.
Dmitry10
> Когда запаришься реализовывать задуманное, поймёшь его суть.
Что ж, постараюсь все-таки довести дело до конца ))
Разработчику в игре не нужен ИИ, поведение которого он не сможет предсказать. Все равно что поставить на улице камеру и продавать снятое как фильм - вдруг там что-то интересное будет? Ну ок, это, конечно, не то же самое, но смысл аналогии, думаю, понятен.
Потом, нейронная сеть учится долго. Игроку, возможно, быстрее надоест смотреть на ее тупизну, чем сеть начнет адекватно себя вести.
Я как-то писал для многопользовательской игры бота (там пвп бои типа как пошаговый режим в фаллауте1/2) на нейросети, но в итоге лучшим решением оказался все-таки разветвленный набор условий.
Dmitry10
> спеца по игровой механике ты без проблем найдешь за $2k в месяц, то спеца по
> нейронным сетям и за $20k в месяц будет проблемно найти
Ну это перебор, нейронные сети это не такой уж и сложный аппарат, любой программист при желании сможет вникнуть в суть дела, к тому же есть много доступных материалов - знания не магические и не секретные, чтобы повышать зарплатные ожидания в 10 раз :)
BalticBear
> Во-вторых, алгоритм из условий if-then и switch-case делает поведение агента
> предсказуемым
Это огромное достоинство, которое позволяет облегчить отладку, поиск багов и тупизны.
НеСети и прочая муть идут лесом.
Вроде бы в hitman absolution reinforcement learning использовали для анимаций, еще в каком-то рэйсинге, по-моему в forza motosport использовали нейросети для обучения аи. По обоим АИ решениям в этих играх были лекции на gdc. Может их можно найти.
BalticBear
>Хотел посмотреть как далеко зашла игроиндустрия в этом направлении ИИ и так и не нашел до сих пор ни одного подобного проекта.
По-моему, таких ИИ не было. Единственное, что я где-то видел - это тупое запоминание действий игрока и их механическое повторение. Т.е. если компьютер проиграл, то он просто начинает смотреть "историю" и начинает копировать действия человека, что выражается в том, что в тот же самый момент строятся те же здания и делаются те же юниты. На мой взгляд, это, во-первых, портит игру, а, во-вторых, говорит о том, что автор ИИ поленился сделать умный ИИ самостоятельно, короче, профилонил. Играть в такое чудо, на мой взгляд, неинтересно.
А вообще, написать ИИ в RTS куда проще, чем всё остальное (при условии, что ты это всё делал ручками, а не взял чужую заготовку и в ней картинки поменял). Т.е. если уж ты дошагал до момента, когда осталось всего лишь ИИ добавить, то, считай, что дело сделано. Я бы в этом случае поднапрягся и сделал бы нормальный ИИ самостоятельно, без всяких там нейро-сетей, от которых, в данном случае, навряд ли будет большая польза.
BalticBear
> Еще видел намеки на использование нейросетей в играх Democracy и Creatures, но так и не нашел свидетельств, что они там самобучаются в процессе игры.
Гугли Creatures — это самая масштабная и самая известная реализации ИИ в играх. Там как раз нейронные сети сильно задействованы и даже естественный отбор реализован.
> Бонус применения самообучающихся нейросетей в том, что поведение NPC не остается постоянным, а меняется в ходе игры под воздействием обстоятельств.
Неверно.
Для обучения в процессе игры НС скорее всего не хватит данных. Современные «классические» подходы к ИИ играх вполне позволяют добиться того же эффекта детерминированными способами.
> Самообучающиеся нейросети не делают персонажа умнее, они делают его "живее"
Живее игру и персонажа делает не алгоритм поведения, а антураж и то как это поведение демонстрируется игроку. Игрок не может видеть как персонаж принимает решения, поэтому для игрока (внешнего наблюдателя) оно часто эквивалентно случайному. Для раскрытия этого момента именно на уровне алгоритмов иногда используют разные пояснения (вроде отображения целей и желаний юнита), но НС не даёт возможности такой интроспекции.
Dmitry10
> Когда запаришься реализовывать задуманное, поймёшь его суть.
+100 Все через это проходили
> Во-вторых, алгоритм из условий if-then и switch-case делает поведение агента предсказуемым. Это значит, в определенной ситуации он будет поступать всегда одним и тем же способом, независимо от последствий. Мне же нужно, чтобы агент оценивал последствия своего поступка и корректировал свое поведение. То есть, в следующий раз в той же ситуации он может поступить иначе.
Всё это относительно легко достигается и без НС.
Вообще, сейчас есть много хороших, проверенных временем, способов реализации игрового интеллекта на любой случай. НС, к сожалению, в них так и не вписались.
Anton Riot
> Разработчику в игре не нужен ИИ, поведение которого он не сможет предсказать.
> Все равно что поставить на улице камеру и продавать снятое как фильм - вдруг
> там что-то интересное будет? Ну ок, это, конечно, не то же самое, но смысл
> аналогии, думаю, понятен.
Использование в нейросети обучения с поддержкой как раз и делает поведение агента адекватным. Оно задается функцией, которая оценивает ситуацию по окончании выполнения действия. Значение функции далее используется для настройки весов. С помощью этой функции как раз и можно определить рамки для принятия каждого решения. Ну и еще путем подбора сигналов, подаваемых на вход нейрона. Это - не сложная задача, а скорее творческая и довольно интересная ))
Anton Riot
> Потом, нейронная сеть учится долго. Игроку, возможно, быстрее надоест смотреть
> на ее тупизну, чем сеть начнет адекватно себя вести.
Это смотря какая сеть и какой используется алгоритм обучения. В моей игре влияние ИИ на производительность не существенно. Там все очень просто, на самом деле.
Тема в архиве.