Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Список действий ботов для хорошего уровня ИИ (2 стр)

Список действий ботов для хорошего уровня ИИ (2 стр)

Advanced: Тема повышенной сложности или важная.
Страницы: 1 2 3 4 Следующая »
iCpuПостоялецwww2 июня 201614:05#15
Судя по всему не взлетела реализация. Такой агент максимум должен занимать как 2 онлайн игрока. Ну и судя по всему если народ неоценил, значит его ИИ поведение не блестало предсказуемостью и полезностью для игрока. А идея хорошая.
Нифига не хорошая. Пространство возможных действий с приблизительно равными оценками полезности но с диаметрально противоположными итоговыми состояниями слишком велико, чтобы можно было вводить персонажей со сложной тактикой без добавления пары серверов чисто под этих мобов. Это не шахматы, в которых 10-30 возможных действий за ход, 80% из которых сразу отсекается. Это 100+ вариантов действий за ход при глубине 60-200 ходов и дикому влиянию рандома. И полноценный агент в серьёзном бою занимал пиками по 1 Гб памяти под дерево решений и думал на начальных ходах по 5-10 минут на ход. Реализовать что-либо сложнее берсерка или мага-с-самонаводящимися-снарядами-и-блинком требует или ресурсов или очень глубокой функции оценки, которая, кстати, тоже не дешёвая.
А не оценил по сугубо утилитарным причинам, пользы шиш, проблем уйма, так ещё если три таких встретятся на поле брани, вся нода начинала дико лагать. У нас этим до сих пор боссы в данжах грешат, но там их ещё и DDOSить пытаются, что добавляет немного чили в не без того острую клизму реальости, вставленную в ректум наших надежд.
Вы не заметили, что подменили на ходу обсуждение - это все равно, что сказать "я вижу как они обнимаются, поэтому делаю вывод, что они не умеют прятаться". А если бы ваш ИИ умел прятаться, вы бы в перечислении действий это упомянули бы. И тем самым ваш аргумент, что визуализация "не делает игру интеллектуальной" был бы разрушен. Конечно совсем другое дело, как бы эта визуализация адекватно  использовалась бы ИИ, но это совсем другой вопрос. Но когда нет и заявки - т.е. соответствующей визуализации - то и получаем марио - где одна визуализация, и не видно ИИ.
Это называется "занятие наиболее выигрышной позиции по минимаксу". Проблема не в том, что ИИ не видет этого локального минимума, а в том, что не хватает ресурсов для того, чтобы определить, что через х ходов эта позиция до сих пор будет безопасна. Из-за ограничений по ресурсам. И функция оценки, не особо помогает, так как если она начинает учитывать слишком много факторов, блуждая по дереву решений в глубину, то, угадайте, что? Не укладывается по времени. Решения нет.

И именно поэтому, кстати, самые сложные боссы во всех ММО просто имеют самые сложные комбинации игровых па в сумме с толстым пузом и острым мечём, и никакого интеллекта, вроде "сначала запилить хиллера, пустив миньонов на самого хилого ДД, двоих за раз не отхиляют" у них не прослеживается.

iCpuПостоялецwww2 июня 201614:28#16
Это 100+ вариантов действий за ход при глубине 60-200 ходов и дикому влиянию рандома.

Как пример, 6 персонажей на 8 персонажей-мобов. у каждого по питомцу, 1 призывает 1 помощника, ещё один спавнит 3 безконтрольных мобов, 1 из персонажей-мобов спавнит по мобу каждые 2 хода.
Итого 13+3+8=24 хода, на глубину которых нужно опуститься ради плана в 1 шаг для всех мобов. На каждого по 3-6 шагов по полю и 1-4 из 3-15 видов атак в любом порядке. Уже немало, не кажется? Игровое поле 30х40 клеток, на котором есть особые поля с бонусами\пенальти, и которое динамически изменяется добавьте, и рандом составляющий разброс не меньше 30%, а чаще в 200-300% от величины атаки и защиты, и объясните мне, глупому, как это обсчитать за 25 секунд на 10 мегабайтах, чтобы при этом выглядело красиво и у мобов были бы хоть зачатки тактики. А я посмотрю и, может, даже заплачу за удачное решение, и не одну тысячу зелёных.
tacПостоялецwww2 июня 201620:49#17
iCpu
> и предсказания
нет там предсказаний ) (уверен там на 100% MDP)

tacПостоялецwww2 июня 201620:55#18
iCpu
> 2) В первом посте вы привели в пример (сюрприз-сюрприз) действий. Там нет
> состояний в списке. Так что либо вы смутно представляете, чего вы хотите, либо
> одно из двух.

Вообще не понятно, что-то сами придумали, а потом я смутно представляю ) я где -то разве говорил про состояния? (только там, где вы этот термин используете не по делу)

tacПостоялецwww2 июня 201621:02#19
iCpu
> Любой ИИ - это оценка, предсказание и нахождение оптимального пути.

Опять не ясно кому возражаете :)

> совсем другое дело, как эта визуализация адекватно  используется в ИИ методах, но
> это совсем другой вопрос. Но когда нет и заявки - т.е. соответствующей
> визуализации - то и получаем марио - где одна визуализация, и не видно ИИ.

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

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

tacПостоялецwww2 июня 201621:19#20
iCpu
> Это называется "занятие наиболее выигрышной позиции по минимаксу". Проблема не
> в том, что ИИ не видет этого локального минимума

Я не понял к чему это. Эти ваши рассуждения стоят под моим комментарием, где казалось бы нет причины об этом говорить. Если это реакция на слова "если бы ваш ИИ умел прятаться", и ваши пояснения что этого нет мол из за времени, которое на это требуется - ок. Но я же не задаю в своем вопросе ограничения на время. Да и не вижу зачем там искать минимум по минимаксу ... просто взял и попытался уйти за стену - вот вам и визуализация одного действия (а у вас наверняка, 2D на клетках, да еще пошаговое, вот и мышление другое) ... не требующая никаких ИИ методов, но по сути реализующая игровое ИИ. Мне кажется вы путаете/смешиваете применение ИИ методов и игровое ИИ. Действительно, честное использование ИИ методов всегда дорого, но этого и не требуется в игровом ИИ - достаточно создать иллюзию для игрока, что против него играют, и не важно что не оптимально ... причем можно даже жульничить и стрелять не по одинаковым правилам что для игрока ... например, у программиста есть все возможности, чтобы ИИ прицелился бы идеально, а не так как это сделает игрок пытаясь попасть мышкой в цель .. тут встает даже другая проблема, как бы не сделать уж очень сложного противника.

tacПостоялецwww2 июня 201621:32#21
iCpu
> объясните мне, глупому, как это обсчитать за 25 секунд на 10 мегабайтах, чтобы
> при этом выглядело красиво и у мобов были бы хоть зачатки тактики.

это я поначалу назвал оффтопом ... стер .. и решил ответить ) Я просто не знаю о какой игре вы ведете речь, я даже не представляю о чем она )

iCpu
> 24 хода, на глубину которых нужно опуститься ради плана

минимакс? а зачем он там вообще .. делайте ход, только исходя из текущей ситуации, без анализа истории (но это общий совет, не понимая о чем вообще игра)


Я думаю (и все последующие основано на этом) вы честно пробуя использовать ИИ методы, наконец столкнулись с одной проблемой ... правда в вашем случае это уперлось якобы в 25 сек.. т.е. в ограничения по времени ... в моем же случае, это время было принципиальным, т.к. не 25 сек. , а время большие времени жизни Вселенной ... о проблеме почитайте тут https://habrahabr.ru/post/140470/

готовьте зеленые, не скажу, что выход идеален, но явно требует меньше времени - суть в отказе от ИИ методов в части "анализа истории", но для пошаговых игр уровня крестиков-ноликов (как видимо у вас, не волнуйтесь шахматы я причисляю туда же :) ) вполне годится

iCpuПостоялецwww2 июня 201623:09#22
tac
> Вообще не понятно, что-то сами придумали, а потом я смутно представляю ) я где
> -то разве говорил про состояния? (только там, где вы этот термин используете не
> по делу)
Пардон, заработался.
> А если бы ваш ИИ умел прятаться, вы бы в перечислении действий это упомянули
> бы. И тем самым ваш аргумент, что визуализация "не делает игру
> интеллектуальной" был бы разрушен.
Нет. Ни то, ни другое. Не перечислил бы до тех пор, пока это не стало бы ключевой особенностью, влияющей на геймплей в целом и требующей внедрения дополнительного кода. А сейчас он на скриптах работает - устанавливает нулевой приоритет цели носителя и меняет прозрачность. И нет, не разрушил бы, если бы мы чётко определились с "визуализацией" и "интеллектуальной". Вы до сих пор не смогли объяснить, что вы вкладываете в эти термины. Чисто интуитивно первое означает "число анимаций", а второе "ощущение реального продуманного реагирующего на игрока мира". Пардонте, если это так, то самым интеллектуальным миром станет тот, который будет давать максимум осмысленных сцен. И пределом станет кино. Ну а что, всё продумано, всё взаимосвязано, всё притёрто, и только киноляпы могут омрачить мир. Единственный минус - влиять нельзя, но тут появляется интерактивное кино - и всё становится идеально.
Если же у вас другие смыслы, поделитесь, только постарайтесь. Ваши смыслы ускользают, "как самогон в руках жены"©
> просто взял и попытался уйти за стену
За какую из? Вы когда даёте простые умные советы, вы получаете потрясающе глупые уточняющие вопросы.
> Мне кажется вы путаете применение ИИ методов и игровое ИИ.
Перекреститесь.
> минимакс? а зачем он там вообще .. делайте ход, только исходя из текущей
> ситуации, без анализа истории (но это общий совет, не понимая о чем вообще игра)
Я уже обмолвился про ММОРПГ и про тактические бои? Отлично. Предложенный вами вариант требует либо раздуть оценочную функцию, либо делать по одной на моба, а это очень много, учитывая, что на 1 проггера у нас по 4 художника, либо делать ИИ инвалидом по уму, либо докупать оборудования. Короче, ваш вариант нас не устроил.
tacПостоялецwww2 июня 201623:57#23
iCpu
> чётко определились с "визуализацией" и "интеллектуальной". Вы до сих пор не
> смогли объяснить, что вы вкладываете в эти термины. Чисто интуитивно первое
> означает "число анимаций", а второе "ощущение реального продуманного
> реагирующего на игрока мира". Пардонте, если это так, то самым интеллектуальным
> миром станет тот, который будет давать максимум осмысленных сцен. И пределом
> станет кино. Ну а что, всё продумано, всё взаимосвязано, всё притёрто, и только
> киноляпы могут омрачить мир. Единственный минус - влиять нельзя, но тут
> появляется интерактивное кино - и всё становится идеально.

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

> Чисто интуитивно первое означает "число анимаций"

Я лишь несогласен с таким узким пониманием визуализации. И примеры выше я уже давал - "уход от угрозы". Это некое поведение (единичное и типовое, его разделеть на части нельзя, хотя можно обложить условиями внутри) бота, которое обеспечит ему уход от угрозы, оно может состоять из набора анимаций: бег назад, разворот, бег по извилистой линии, завернуть за первый же попавшийся угол, если не было в руках оружия, взять его, и приготовиться к стрельбе из за угла. И все это жестким алгоритмом без никаких ИИ методов - базовое поведение на уровне рефлекса. И вот когда ему такое делать уже могут решать ИИ методы или же и без них, а лишь на основании состояния агента и наличия угрозы. И да вот это и будет одно действие вот с такой описанной визуализацией. И неужели в вашей игре такое понятие не используется для ботов?

iCpu
> За какую из? Вы когда даёте простые умные советы, вы получаете потрясающе
> глупые уточняющие вопросы.

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

iCpu
> либо делать ИИ инвалидом по уму

упс, так у вас ИИ вообще отсутствует в ряде мест, вы его выжгли, исходя из ваших слов, из за затрат времени

iCpu
> и у мобов были бы хоть зачатки тактики

вам не кажется, что тут вы ставили ТЗ по другому, а потом захотели только шибко умных ботов ... как по мне "зачатки тактики" = "ИИ инвалидом по уму" в вашей риторике, и у вас противоречие, ну или же очень плавная граница

iCpu
> либо раздуть оценочную функцию

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

iCpu
> Я уже обмолвился про ММОРПГ и про тактические бои?

да нет ) первый раз слышу .. наверно очень секретный проект, раз выдаете информацию так невзначай и минимальными порциями )

MiraПостоялецwww3 июня 20160:46#24
tac
а че у меня, у меня не нейросети а параллельные сценарии. все просто шлепается в диаграммах. соблюдение набора условий -> переход в состояния.
само исполнение действия , если соблюдены скриптовые условия контролируется ядром на валидность запроса. в задумке должен проверять еще псевдо-ии, но я до него пока не дошел.
+ Показать

на днях добавил новый модуль "AISQL" позволяющий гибко выбирать "цель" задачи. пока не протестил на большом количестве ботов, на одном норм)
iCpuПостоялецwww3 июня 20167:41#25
tac
> Ну как бы логично, я против такого смысла не возражаю как о идеале.
А как это к ИИ относится? Это не ИИ, а куча скриптовых сценариев, навешанных на условия. Нет, конечно, это можно назвать "интеллектуальным агентом" или даже "экспертом" и приписать его к ИИ, но это не ИИ. Это не интеллект, а набор знаний. Вы же не называете интеллектуальным разговор с NPC из какого-нибудь Neverwinter Nights. Можете попытаться, конечно, но быстро надоест.
> его разделеть на части нельзя
Можно. Оценка опасности текущего положения - поиск более безопасного положения - переход в новое положение, если есть. 1,2 делается оценочной функцией, 2 ищется минимаксом или его альфабетта потомками, если поле дискретное, или более матанными Ньютонами, если неприрывно. Если можно покинуть бой, убежав, делаем эту клетку с нулевой опасностью и максимальной вредностью. Визуализировать можно как всё сразу, так и только последнюю фазу. "Уход от угрозы" может иметь отдельный смысл только в случае, если это спасбросок из D'n'D.
> И все это жестким алгоритмом без никаких ИИ методов - базовое поведение на уровне рефлекса.
Работает, если всё твёрдо привязано к одной карте и одному набору противников. То, что я назвал "по функции на моба". Как только у вас появляются комбинации игровых полей, наборов игроков и монстров, тушите свет. По этой причине это не ИИ: он не способен выйти за рамки начальных условий.
> за первый же попавшийся, который защищает от линии огня ...
То есть брать каждую доступную клетку и проверять, будет ли перекрытие с областью атаки. И успокоиться. И будет тупая ситуация, большой жирный моб прячется за узкой колонной вместо вероломной атаки. Ага, а, может, дойти до хода лучника и построить все маски поля атаки, которые он может сделать на следующем своём ходу, затем сложить все угрозы и все плюсы каждой из клеток... Да это же минимакс получается!.. Зачем это он нам?
> Так вот я как раз и спрашивал, на какие маневры имеет смысл разбивать поведение бота
...
У мобов нет целей, кроме атаки персонажей. Потому у них нет интеллектуальности и все ваши "манёвры" для них не имеют смысла.
У ботов... сколько позволяет ваш ЛОР. И сколько необходимо для выполнения всех задач. Будет ли у вас вылечиться отдельным пунктом или одним из возможных вариантов "активировать способность" - вопрос чисто построения гибкого движка. Я уже писал, что у нас нет никаких захардкоженных поведений бота, его способностей или чего-бы то ни было ещё, всё подключается снаружи в виде скриптов. В них лежит просто функция от поля боя, которая возвращает список изменений после активации - и всё. Потому все ваши "действия" и "состояния", да даже "цели" для меня звучат притянуто за уши.
> да, оценочная функция будет сложнее - вы её скажем так предрасчитаете более подробно
Я уже писал, что чем умнее ваши советы, тем тупее будут мои вопросы? Ну, вот... Как вы себе это представляете? Что, по вашему, должна выдавать оценочная функция? Оценку хода? Или прогноз погоды?
> да нет ) первый раз слышу .. наверно очень секретный проект, раз выдаете
> информацию так невзначай и минимальными порциями )
Ну вот и хватит. Не хочу больше иметь с ними дел и даже упоминать в суе.

Mira
Меня терзают смутные сомнения... Когда ваш релиз на порнолабе?

tacПостоялецwww3 июня 201611:20#26
Оценочная функция как правило показывает степень достижения цели, т.е. если цель убить персонажа, то как это лучше сделать. Причем тут погода.

А по поводу лучника, ходы которого просчитывают наперед, во первых вопрос, видимо все таки не все клетки, а клетки от него в определенном радиусе ?

и вам не кажется что конечно это можно сделать проще, сделать рейкасты от каждого противника, построив линию огня из опорных точек и просто сделать оценочную функцию как удаление от этой сети опорных точек?

Позжеотвечу на остальное, с планшета не удобно.

iCpuПостоялецwww3 июня 201613:10#27
tac
> Оценочная функция как правило показывает степень достижения цели, т.е. если
> цель убить персонажа, то как это лучше сделать.
А теперь укажите мне точку, в которой оценочная функция из вашего определения предсказывает поведение лучника противника. Ответ: в том месте, в котором этот лучник - её входной параметр. Когда она оценивает лучшие шаги лучника. Вы можете сказать, что это можно делать в одной функции. Можно. Можно писать программы только в машинных кодах. Но если разнесение функционала не добавляет значимых накладных расходов, но упрощает логику - смысл выпендриваться?
> А по поводу лучника, ходы которого просчитывают наперед, во первых вопрос, видимо все таки не все клетки, а клетки от него в определенном радиусе ?
> и вам не кажется что конечно это можно сделать проще, сделать рейкасты от каждого противника, построив линию огня из опорных точек и просто сделать оценочную функцию как удаление от этой сети опорных точек?
Вы сама проницательность, правда, в моём случае, это наложение масок полей атаки. Но свести всё до статических проверок нельзя. Всё куда сложнее. Например, лучники могут использовать рикошеты и телепортироваться.
К тому же, вы делаете жёсткую систему. Я вам писал и неоднократно, она хороша до тех пор, пока у вас 10 разных объектов и 10 разных типов поведения. Как только число объектов с разной тактикой переваливает за сотню, вы начинаете проклянать тот день, когда вы сели за баранку этого драндулета. А если их поведение меняется по 3 раза в неделю, вы начинаете появляться в кошмарах мыслей о суициде. Как самая мучительная жизнь из всех возможных.
tacПостоялецwww3 июня 201613:32#28
В том то и дело разную тактику вам просчитывать не надо, с точки зрения бота он просто подвергся атаки, а когда он убигает , он убегает от опасности , от атакующих и он совсем не знает и не должен знать какую они могут применить тактику. Причем убегает локально просчитывая лишь ближайшее окружение подробно, а дальнее приближенно , и делает расчет на один ход. Вот вам и разница наших подходов.
9К720Участникwww3 июня 201613:36#29
Какая то идиотская тема со словесным поносом на тему якобы ии. Кроме поноса и глубоких мыслей автора что-нибудь еще есть? Давайте эту тему во флейм, к морфиям.
Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Игровая логика и ИИ

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр