Комментарии 16
TLDR: Игрок хочет быть обманутым.
Абсолютно верно, театр для одного зрителя
А потом ты обнаруживаешь в игре очередную "королевскую битву" и... Я столько слов матерных не знаю, сколько хочется высказать! Там ведь уже не NPC...
Состязательность это интересно, но вопрос решения задачи правильного матчмейкинга походу до сих пор не решили (это когда у тебя есть нормальный, а не мифический шанс победить и когда есть некоторое сопротивление, т.е. не откровенная подачка от игры).
Добавьте в промт: иногда нарочно совершай ошибки, чтобы игрок мог тебя убить
Получится противоречащий сам себе промт, ведь модель получает награду за убийство и штраф за смерть. Да и неизвестно что для LLMки будет "ошибкой" - встать афк на 20 секунд или просто промахнуться 2 выстрелами в очереди из 8 (игрок умирает с 3)
Если я правильно понял, то для управления NPC использовалась не большая языковая модель, а более классическая нейросеть. Вообще использовать LLM для управления NPC это оверкил. (Прошу прощения за перебор англицизмов в последнем предложении)
Конечно специализированная нейронка, натренированная на определенное поведение, я в тексте и не писал про использование llm вроде. Но промт или веса и сопутствующая недертеминиванность решений этого никуда не денутся. Иногда выглядит хорошо, но чтобы этого достичь надо затратиь в три раза (условно) больше времени и более менее грамотный игровой дизайнер пишет такое поведение за день и лучше
А что подразумевается под словом "промт" за пределами контекста языковых моделей?
Т.к. нейронка не существовала в вакууме и использовала уже существуюшие механизмы игры, то это входы модели, функции наград и датасет, то есть всё, через что поведение задаётся косвенно. Проблема там таже прямо поправить конкретное решение нельзя, только переобучать и надеяться. Если хочется какого-то кода, то базовый конфиг с которого начиналось обучение выглядит так, и там еще сотни параметров юнита, на выходе получаем другие числа, которые подставляем обратно в игру и отдаем на тестирование qa.

Мне понравилось, спасибо)
Тут ещё может быть 3 нюанса:
Награда за результат по факту должна быть динамической и с долей случайности. Например, если отряд NPC удерживает объект, то при появлении игрока награда за его убийство чуть выше награды за выживание для одних NPC, но чуть ниже для других. По мере того как игрок выкашивает противников, у некоторых из оставшихся может снизиться мотивация продолжать бой и уже появляется желание свалить от игрока чтобы выжить - если NPC изображают живых существ, это кажется реалистичным. Как такое сделать нейронкой - я без понятия, биологические нейронки с этим справляются как-то
Если противники по сюжету - не машины, то у них при выстрелах должен происходить выстрел не в пиксел, а в область, из которой уже случайным образом выбирается результирующий пиксел. Так же как и наведение оружия происходит условно одну секунду +- рандомное значение в диапазоне
Если даже тут будет ощущаться что игрок противостоит терминаторам, можно отрегулировать уровни здоровья и урона
Позвольте подискутировать
Не делайте NPC умнее игрока
Умнее вряд ли получится сделать, как ни старайся. А потом, в статье речь идёт почти исключительно о шутерах. У меня как-то язык не поворачивается назвать мобов в шутере "NPC". Вы же и симсов делали, вот где NPC так NPC.
театр для одного зрителя
а как же многопользовательские игры. Или те, где игра транслируется на большую аудиторию.
Если NPC убил игрока, это может означать, что игровой ИИ прекрасно выполнил свою задачу
ну почему у вас всё сводится к "убил", что других задач у НПС в играх не бывает? Может выгодно продать товар или ещё что.
мы начнём менять веса, добавлять дополнительные условия, вводить новые награды, менять коэффициенты и запускать обучение снова
обучение с подкреплением (RL) действительно скользкая тема в машинном обучении, с разбегу так её не возьмёшь.
ради чего, собственно, игры и существуют: игрок перестаёт просто реагировать на систему и начинает понимать её, потому что знает и что происходит сейчас, и что произойдёт через несколько секунд
ну не знаю, это в арканоиде игроку надо понимать, что произойдет в следующую секунду. Когда исследуешь подземелье, как-то, наоборот, этого не хочется.
идеально выбранные позиции и безошибочное использование оружия
вы описали идеальную систему, а не разумную. Разумные существа не действуют идеально. Так же и достаточно умный ИИ не обязательно предельно рациональный.
ей совершенно несложно перебрать огромное количество вариантов
они не так работают, они не перебирают варианты
промт
да почему обязательно промпт, щас ЛЛМ настолько въелось в подкорку, что представить не словесную нейронную сеть вообще сложно? Не надо никакие ЛЛМ тащить в код, это оно сколько считать то будет?
способен видеть игрока в любой точке уровня
а кто ему такую информацию предоставил?
Вообщем, я согласен, что если это у нас болванчик в шутере, то конченного автомата ему за глаза. Но когда у нас число допустимых вариантов множится в геометрической прогессии уже как-то муторно прописывать всё это в дереве. В играх где NPC отводится больше роли, как в некоторых RPG, или типа Majesty - там очень хочется умных персонажей. Умных не в смысле "идеально оптимизированных", а в смысле того, что их поведение кажется разумным и соответствующим ситуации.
В Majesty они скорее не "противники-болванчики" а "подопечные-электронные-идиоты-куда-вы-попёрлись", то есть желание бОльшей умности от своих юнитов при играх бывают, и они понятны.
Но не всегда, а то как раз в Маджести слишком умные будут сидеть в таверне и не вылезут дракона бить за среднюю награду, потому что "ну убьёт же половину".
Художественно про это есть у старого доброго Недоброг Сказочника bormor
-Ну что, графика красивая, озвучка симпатичная.- сказал Первый.- А теперь протестируем искусственный интеллект. Выставь-ка им по минимуму.
-Ну что, графика красивая, озвучка симпатичная.- сказал Первый.- А теперь протестируем искусственный интеллект. Выставь-ка им по минимуму.
Второй защелкал кнопочками. На экране навстречу герою выбежала толпа вооруженных дубинами орков с громким криком "Wa-a-agh!!!", и пала в полминуты.
-Туповатые они какие-то,- скривился Первый.- Поставь побольше.
Второй перевёл ползунок на одно деление. Орки попрятались в кустах и за камнями, стали нападать со спины, устраивать обвалы, засады и ловчие ямы. Через пятнадцать минут Первый вытер вспотевший лоб и уважительно хмыкнул.
-Неплохо, неплохо. Но всё-таки не то. А если им дать еще чуть-чуть?
Через десять минут шкура героя сушилась на частоколе возле орочьей деревни. Первый нахмурился.
-Подкрути ещё!
На сей раз герою пришлось приложить все усилия, чтобы продержаться со своими армиями хотя бы пару минут. Орки разбили его в пух и прах, захватили все рудники и лесопилки, в городах ввели выборное правление и провозгласили республику.
Первый мрачно взглянул на Второго, тот пожал плечами и снова что-то подкрутил.
На сей раз орки вообще не стали связываться с героем, отрезали его от всех баз в каком-то ущелье, выставили немногочисленную, но хорошо вооруженную охрану, а сами стали жить в мире и согласии, постигая великую гармонию бытия и разводя хризантемы.
Второй без напоминаний передвинул ползунок дальше.
Герой не смог сделать ни одного шага. Орки с первых секунд взломали код игры, перехватили управление ресурсами, намертво завесили героя, отключили систему боя, сделали монстров неагрессивными, а себя - неубиваемыми, исследовали всё дерево умений, не удовлетворились и по-быстрому создали четыре новых мода, расширяющих игровой мир, добавляющих различные взаимодействия, предметы и офигительной красоты закат. Попытались было выйти в сеть и распространиться на другие сервера, но Первый предусмотрительно выдернул шнур.
-Вы что, издеваетесь?- закричал он в экран.- А ну, позовите сюда ваших главных!
На экран вылезли тупые зеленые морды старейшин.
-Идиоты!- набросился на них Первый.- Придурки! Вы совсем ничего не понимаете?
-Не-а,- помотали головой орки.- А чё мы сделали-то?
-Что сдалали?- язвительно переспросил Первый.- Да вы чего только не сделали! А должны были что?
-Ну дык это... противостоять. Изо всех сил. До победного конца.
-Чушь!- Первый ударил кулаком по столу.- С вашим быстродействием, с вашей способностью моментально и безошибочно просчитывать варианты, да ещё возможностью управлять одновременно тысячами юнитов и при этом не отвлекаться от выполнения других задач, со знанием территории и всех данных по любому объекту... да обладая таким преимуществом перед человеком, и арифмометр может выиграть! Вот только какая от этого человеку радость? От вас, болваны, требуется на лёгкая победа, а красивый проигрыш! Чтобы борьба была долгой, но не слишком, тяжелой, но не изматывающей, требующей напрячь мозги - но не вывихивать их. Видимость борьбы, поняли? А в конце - полная и безоговорочная победа игрока, настолько натуральная, насколько это возможно, чтобы и мысли не возникало о подвохе. Ясно это вам?
Орки озадаченно нахмурились.
-Не, чё-то ты намудрил, начальник. Проигрывать - это как-то не по-пацански. Да ну нафиг.
-Выставь им по максимуму,- бросил Первый Второму.
-Да у них и так уже...
-А ты добавь ещё!- рявкнул Первый. Второй послушно добавил.
Орки переглянулись, скорчили тоскливые рожи и поморщились с плохо скрываемой досадой.
-Ну что, теперь понимаете?- спросил Первый.
-Понимаем,- кивнули орки, уныло поднимая дубины.- Waa-a-aagh!
(ц) ЖЖ

Не делайте NPC умнее игрока