Как сделать ии на c

Обновлено: 03.07.2024

Как создают искусственный интеллект: от кода до робота

Программирование искусственного интеллекта – мечта многих начинающих программистов. Мы собрали самую важную информацию, чтобы рассказать, как создают искусственный интеллект. Никаких скучных терминов — только факты.


Кратко о программировании AI

Программирование искусственного интеллекта заключается не в обучении компьютера тому, как думать. Скорее, он будет запрограммирован так, чтобы обучаться и самостоятельно решать конкретные проблемы на основе своего опыта. Но и здесь речь идет не о собственном мышлении, а о подражании. Это также относится к решениям, которые принимает AI. Искусственный интеллект может взвешивать варианты, а затем делать выбор. Однако его выбор всегда будет исходить из тех параметров, которые были запрограммированы ранее.

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

Использование искусственного интеллекта

Как создают искусственный интеллект: от кода до робота

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

Искусственный интеллект разделяется на нейронный и символический (сильный и слабый). Первый пытается имитировать структуры и функции человеческого мозга. Последний ориентируется на соответствующую проблему и результат.

В повседневной жизни, например, искусственный интеллект программируется и используется в робототехнике. Он служит для управления производственными процессами или просто выполняет бытовые задачи. Искусственный интеллект также используется для визуализации. Самый популярный пример — распознавание лиц или отпечатков пальцев.


Популярной нейросети GPT-2 нашли новое применение. Ее научили генерировать фрагменты кода на С и С++, и даже опытный разработчик не всегда отличит эти листинги от реальных.

Суть проекта

На этот раз GPT-2 обучили на 774 млн строк кода на C/C++. Исходники взяли из 10 тыс. популярных пакетов Debian – одной из самых известных сборок ядра Linux.

В результате нейросеть научилась строить синтаксически верные строки и оформлять код в логические блоки. Не специалистам крайне сложно отличить сгенерированные фрагменты от настоящих. Но разработчики могут попробовать.

Тест Тьюринга

Для каждого посетителя нейросеть создает новую модель кода. Она генерирует структуру кода, используя принципы, которые она самостоятельно распознала в процессе обучения. Решение не использует готовые строки из проектов, на которых обучалось.

Задача посетителя – угадать, что перед ним: сгенерированный код или оригинальный. Главная подсказка – если это действительно фрагмент исходников из пакетов Debian, он гарантированно будет работать.


This Code Does Not Exist – тест Тьюринга для нейросети. Она пытается выдавать себя за человека, точнее, за группу разработчиков пакетов Debian. Если посетители сайта не смогут распознать сгенерированный код, значит, нейросеть прошла тест.

Однако код, созданный нейросетью, не всегда имеет практическую пользу. Задача улучшения сборки Linux с помощью искусственного интеллекта перед GPT-2 пока не стоит.

Применения GPT-2

GPT-2 – разработка компании OpenAI. В числе ее основателей значится Илон Маск.


Для разработчиков интересен еще один проект – Deep TabNine. Решение задействует искусственный интеллект, чтобы завершать строки кода. По словам автора идеи Джейкоба Джексона, он натренировал нейросеть на 2 млн файлов из открытых репозиториев GitHub. Инструмент поддерживает Python, C++, Java и Haskell и еще 18 языков программирования.

(1)Где Вы тут шаг к независимости ИИ усмотрели.
ИИ на основе созданного ранее человеком кода - пишет аналогичный (не привнося ничего нового) - причём не по поставленным задачам - а просто так - от себя - бессмысленный код - красиво сгенерированную и никому не нужную белиберду! То есть по зависимостям, но независимо генерирует независимый бред!

Прогресс идет семимильными шагами. Такими темпами скоро в 1С jit-компиляция появится, или поддержка insert и update в запросах

(2)Прогресс идёт. но не в программировании на платформе 1С Предприятие 8 (всё что завезли в язык за последние 10 лет - это асинхронные методы, причём без параллельности - просто очередной синтаксический сахар).

Хотя, названные Вами возможности действительно могут со временем дойти и до 1С - в 9-м поколении, лет через 30. Когда в других языках и платформах вовсю будут внедряться ИИ технологии

В этом то весь и смысл, точнее пока отсутствие этого смысла. Если в продукции ИИ нет пользы - это не ИИ - это балабол! Обезьяна, которая стучит по печатной машинке, просто у неё красивые буковки получаются. Даже слон, рисующий хоботом картины, и то полезнее.

Вот от этого проекта хоть прок есть.

А вообще я уже несколько лет задумываюсь - как ИИ может помогать в программировании! И Это действительно сложный вопрос, если ставить его в рамках текущих возможностей и принципах функционирования информационных систем с ИИ. И даже если их экстраполировать на несколько десятилетий вперёд - особо ничего крутого, что мог бы сделать ИИ в программировании (кроме дописывания уже начатого кода), не приходит. Но, тем не менее с десяток пунктов я набрал, которые считаю вполне реализуемыми к середине XXI века:

1. Уже упомянутая помощь в дописывании кода - в основном циклов, условий ветвления, и иных повторяющихся паттернов - например последовательного (но не обязательно, но уже повторяющегося, хоть в разных местах) свойств объектов, вызов их методов. Когда в проекте над рядом объектов совершаются однотипные действия ИИ мог бы ускорять их ввод. А программисту нужно было бы только вносить небольшие корректировки. Например, если в форме нужно настроить ряд интерфейсных элементов - то код может быть очень монотонным - ИИ мог бы его помогать автоформировать

2. Полиморфная автогенерация кода - когда программист передаёт на вход входные объекты, и назначает применение какого-то паттерна, методики, шаблонного алгоритма (в т.ч. полученного на основе анализа уже написанного ранее кода) - ИИ применяет его к этим объектам и адаптирует. Например, так можно было быстро генерировать базовые алгоритмы, скажем, для печатных форм, для отражения в учёте, для заполнения по структуре данных и т.п. Суть именно в том, что ИИ быстро смог бы осваивать новые паттерны и шаблонные алгоритмы, и адаптивно их применять к новых входным структурам. А программисту в конце останется только внести корректировки по необходимости

4. ИИ может выполнять (да и уже выполняет в продвинутых IDE) анализ уже написанного кода с целью выявления в нём ошибок, неоптимальных последовательностей действий, устаревших паттернов. И предлагать для них автоисправления

7. Автотестирование – так же ИИ может помочь в составлении и проведении автотестов алгоритмов

8. ИИ может активно помогать в наборе кода – давая интеллектуальные подсказки по применению тех или иных паттернов, выводя в ТОП списка Быстрой подсказки (или в иных окнах IDE) подходящие операторы/объекты/шаблоны – наиболее востребованные по текущему контексту) – тем самым сокращая их поиск/набор программистом. В том числе, сюда я отношу и поиск готовых паттернов по текстовым запросам (что-то типа GutHub GIST или FastCode 1C) прямо в IDE. При этом такие шаблоны могут быть параметризированы – а ИИ может интеллектуально находить в контексте подходящие для них переменные и константные значения параметров – для автоподстановки в шаблон паттерна)

Вот как-то так я вижу развитии ИИ в программировании. То есть – это не замена программиста. Это, скорее интеллектуальное ассистирование и анализ, в крайнем случае – кодирование по заданным правилам и прямым формализованным целеуказаниям. Тем самым я пока не верю в то, что ИИ в обозримом будущем сможет писать код по не очень чётко формализованным ТЗ (а чётко формализованные ТЗ можно отнести к пункту 9.). Соответственно, программисты ещё будут очень даже нужны и востребованы. Просто ИИ сможет несколько разгрузить их от рутины, повысив скорость набора кода, его качество и производительность. А сами программисты смогут сосредоточиться на более творческих, прикладных (задач бизнес-логики), или на продумывании более сложных схем обработки данных и интерфейсов взаимодействия.

В конце ещё добавлю. Что для ИИ так же крайне важны будут как процессы обучения – натаскивания на паттернах, базах знаний, программном коде и т.п. То есть - машинное обучение. Так и консолидация информации в базах знаний. Причём, не только локальной, но глобальной – тем самым накопленные знания и статистика будут нарастать как снежный ком, летящий кубарём с горы, только этих комов-знаний будут миллионы и лететь они будут с сотен тысяч гор. А масса знаний будет единой для всех. Но… тут могут встать проблемы правового толка, конфиденциальности и интеллектуальной собственности. Надеюсь, юристам в недалёком будущем это удастся эффективно решить не в ущерб ИИ. Ведь чем он будет умнее – тем выше будет его эффектность – и это даст высокие преимущества всем! Но разрешат ли всем в мире иметь единое преимущество? Но это уже глобальная политика… хотя, так как, программисты тут по-прежнему являются лучевым интеллектуальным звеном – то их индивидуальное участие в каждом конкретном проекте так и останется персональным/локальным преимуществом (или балластом – это уж как повезёт с людьми) конкретного предприятия – его интеллектуальным активом


Хотите знать, как сделать искусственный интеллект искусственным? Прокрутите вниз, чтобы найти лучшие инструменты для создания искусственного интеллекта.

Выбор персонала для создания искусственного интеллекта:

Runway ML – простой инструмент без кода, который упрощает творческие эксперименты с моделями машинного обучения. Наш общий персонал выбирает.

Природа кода – эта интерактивная книга научит вас программировать генеративное искусство. Последняя глава представляет собой исключительное введение в искусство искусственного интеллекта с реальными примерами кода.

GANBreeder – скрестите два изображения, чтобы создать новые, используя GANBreeder. (Обратите внимание, что GANbreeder был переименован в ArtBreeder с несколькими моделями AI для управления фотографиями).

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

Обработка – гибкий программный блокнот и язык для обучения программированию в контексте изобразительного искусства. Включает p5js (обработка для JavaScript) и Processing.py (обработка для Python). [Обработка не использует ИИ, но является отличным инструментом для генеративного визуального искусства].

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

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

Изображения / картинки, созданные AI:

Deep Dream Generator – стилизуйте свои изображения с помощью улучшенных версий Google Deep Dream с Deep Dream Generator.

DeepArt.io – загрузите фотографию и примените различные художественные стили с помощью этого генератора изображений AI или превратите изображение в собственный портрет AI (также посмотрите DreamScope).

Visionist: загружайте и применяйте стили AI Art к своим фотографиям, включая абстрактные фильтры, вырезанные портреты и многое другое (iOS. Сделано в 3DTOPO Inc.).

GoArt – Создавайте фотоэффекты AI, которые делают ваши фотографии похожими на известные портретные картины с помощью этого генератора изображений AI. (Интернет, Android и iOS. Сделано Fotor).

Deep Angel – автоматическое удаление объектов или людей с изображений. (Интернет. Сделано в Массачусетском технологическом институте).

Google Deep Dream – репозиторий GitHub для реализации Google Deep Dream.

GANBreeder – объединяйте изображения вместе для создания новых изображений, создавайте гибридные порталы ИИ и создавайте новые дикие формы, которые раньше никогда не видели. (GANbreeder теперь называется ArtBreeder).

Рисование AI / Рисование AI:

AutoDraw – превратите свой эскиз в картинку с помощью этого компьютерного инструмента рисования AI.

AI Painter – превратите свои фотографии в картины с искусственным интеллектом или создайте абстрактное искусство с помощью этого генератора рисования нейронной сети.

Зарисовка! – Игра, в которой нейронная сеть пытается угадать, что вы рисуете. Рисуйте вместе с искусственным интеллектом и нейронными сетями с этим приложением Google Draw.

Sketch-RNN Demos – Рисуйте вместе с нейронной сетью.

Cartoonify – превратите свой портрет в нарисованный на компьютере мультяшный рисунок.

Наборы данных:

Слова и письмо:

GPT-2 – ведущая компьютерная языковая модель, созданная OpenAI.

Semantris – игры с ассоциациями слов, основанные на семантическом поиске.

Рукописный ввод с помощью нейронной сети – поиграйте с нейронной сетью, которая создает почерк в зависимости от вашего стиля письма.

Музыка / звук, созданный AI:

Magenta Studio – коллекция музыкальных плагинов, созданных на основе инструментов и моделей Magenta с открытым исходным кодом.

AI Duet – играйте на пианино, которое реагирует на вас.

NSynth Sound Maker – создавайте свои собственные гибридные звуки и инструменты.

MuseNet – создавайте 4-минутные музыкальные композиции с 10 инструментами и комбинируйте стили от кантри до Моцарта с помощью MuseNet (также доступно на GitHub).

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

Движение / танец, генерируемые ИИ:

    – эксперименты PoseNet, проведенные с одним из самых знаменитых художников Америки.

Голос, генерируемый AI:

Набросок речи – Превратите реальное время = речь в анимированные рисунки.

Переводчик вещей – сфотографируйте что-нибудь, чтобы услышать, как это сказать на другом языке.

Визуализация данных, созданных AI:

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

Что видят нейронные сети – визуализация слоев в нейронной сети Джина Когана. Также см. Визуализация функций с помощью Distill.

Визуализация многомерного пространства – визуализируйте, как работает машинное обучение.

Учусь:

    – Обучайте машину с помощью камеры, живите в браузере без кода.

Типография:

FontJoy – создавайте комбинации шрифтов с помощью глубокого обучения.

Карта шрифтов – выявляйте новые отношения между шрифтами с помощью машинного обучения.

GANs:

Зоопарк GAN – список названных GAN, обновляемый нерегулярно.

GANS Awesome Applications – Кураторский список GAN и демонстраций.

Библиотеки машинного обучения:

TensorFlow.js – библиотека для разработки и обучения моделей машинного обучения на JavaScript.

scikit-learn – один из самых популярных инструментов для интеллектуального анализа и анализа данных. Построен на NumPy, SciPy и matplotlib. Открытый исходный код, коммерческое использование (лицензия BSD).

Наш друг Артур Миллер считается авторитетом на стыке технологий и искусства. Недавно он опубликовал фантастическую книгу, в которой рассказывается, как художники используют ИИ. Чтобы углубиться и узнать больше, вы можете приобрести его на Amazon здесь:

Заключительные мысли:

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

ИИ нужен для имитации разумности NPC, при этом его задача не в том, чтобы обыграть пользователя, а в том, чтобы развлечь его. В современных играх используются разные подходы для создания ИИ. В основе лежит общий принцип: получение информации → анализ → действие. В статье — самые популярные методы и примеры использования ИИ в играх.

Зачем NPC разум: искусственный интеллект в играх

Владимир Семыкин

Энтузиаст геймдизайна, автор Нетологии

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

Зачем NPC разум: искусственный интеллект в играх

В Tom Clancy’s Splinter Cell: Blacklist вражеские собаки умеют выслеживать героя по запаху. Это вынуждает игрока постоянно менять укрытие и не засиживаться на одном месте

Наличие и реализация сенсоров зависит от геймплея. Во многих активных шутерах не нужны комплексные рецепторы — достаточно конуса зрения, чтобы реагировать на появление игрока. А в стелс-экшенах весь геймплей основан на том, чтобы прятаться от противников, поэтому виртуальные органы чувств устроены сложнее.

Зачем NPC разум: искусственный интеллект в играх

Виртуальные рецепторы устроены по-разному. В Metal Gear Solid у противников совсем простой конус зрения, отсутствует периферийное зрение, поэтому они видят только то, что происходит прямо перед ними.

Зачем NPC разум: искусственный интеллект в играх

В Shadow Tactics: Blades of the Shogun тоже используется конус, но он сложнее. Конус поделён на зоны видимости, которые зависят от особенностей ландшафта. Если игрок попадёт в однородную зелёную зону, то его почти сразу увидят. В полосатой зоне видимость затруднена, поэтому игрок будет незаметен, если будет двигаться пригнувшись. А в зоне, покрытой точками, герой полностью скрыт.

Зачем NPC разум: искусственный интеллект в играх

Когда противник замечает игрока, конус зрения постепенно меняет цвет на жёлтый. Когда он заполнится, враг поднимет тревогу

В Tom Clancy’s Splinter Cell: Blacklist визуальный сенсор противников комплексный. У врагов есть основная зона видимости в форме вытянутого шестиугольника. Здесь персонаж видит лучше всего, поэтому в это пространство вообще лучше не заходить. Есть и более крупный шестиугольник, который имитирует периферийное зрение — там противник видит хуже. В такую же зону входят удалённые участки, которые недостаточно хорошо просматриваются.

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

Зачем NPC разум: искусственный интеллект в играх

Особенность противников в Splinter Cell: Blacklist в том, что они могут видеть игрока в частичном укрытии. Если несколько частей тела героя выглядывают из-за препятствия, то враг замечает его. Чтобы реализовать эту механику, разработчики использовали технологию рейкастинга — из глаз врага кастуются лучи, и если они пересекают несколько частей тела героя, то противник поднимает тревогу.

Зачем NPC разум: искусственный интеллект в играх

Зачем NPC разум: искусственный интеллект в играх

Профессия

Геймдизайнер

Узнать больше

  • Освоите профессию геймдизайнера с нуля: от идеи до балансировки и маркетинга
  • Разработаете прототип собственной игры на движке Unreal Engine
  • Составите полный комплект проектной документации для запуска игры

Анализ, коллективный интеллект и навыки режиссёра — что помогает ИИ принимать решения

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

Зачем NPC разум: искусственный интеллект в играх

В Gears Tactics у ИИ противников всегда есть глобальная цель. Групповой ИИ раздаёт каждому задание, которое помогает достигать общей цели. А NPC сами решают, каким образом выполнить задачу

Часто разработчики добавляют подобие коллективного интеллекта, который следит за тем, чтобы действия отдельных агентов не противоречили и не мешали друг другу. При этом сами персонажи зачастую даже не знают о существовании своих союзников — эта информация им не нужна, потому что за координирование действий отвечает ИИ более высокого уровня.

Зачем NPC разум: искусственный интеллект в играх

В Horizon Zero Dawn робозвери умеют объединяться в стада, а их поведением управляет групповой агент. У каждой машины есть своя роль: патрулирование, атака, поиск ресурсов

Существуют системы искусственного интеллекта, которые выполняют роль режиссёра. Они следят за тем, чтобы в игре соблюдался баланс сложности, а также отвечают за появление интересных и запоминающихся ситуаций.

Зачем NPC разум: искусственный интеллект в играх

Например, в Final Fantasy XV есть мета ИИ, который постоянно анализирует ситуацию и управляет NPC. Если игрок попал в передрягу, то именно мета ИИ вызовет ему на помощь союзника

Следующий распространённый способ принятия решений — конечные автоматы. Этот подход позволяет NPC беспроблемно переходить между разными состояниями. Например, есть персонаж, базовое состояние которого — патрулирование по определённой траектории. Если внезапно появится игрок, NPC перейдёт в новое состояние — начнёт стрелять. Конечные автоматы как раз обеспечивают эти переходы: они принимают информацию из предыдущего состояния и передают в новое.

Зачем NPC разум: искусственный интеллект в играх

Преимущество этого подхода в том, что персонаж всегда будет находиться в каком-то состоянии и не зависнет где-то между ними. Так как разработчик должен прописать все переходы, он точно знает, в каких состояниях может находиться игровой объект. Недостаток метода в том, что с увеличением количества механик значительно разрастается и система конечных автоматов. Это увеличивает риск появления багов, а также может снизить скорость операций.

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

Зачем NPC разум: искусственный интеллект в играх

Дерево поведения отлично подходит для того, чтобы систематизировать состояния NPC в играх, в которых есть множество механик и геймплейных элементов. В ситуации, когда персонаж участвует в перестрелке, ему не нужно будет искать подходящее действие в ветке патрулирования. Такой подход помогает сделать поведение NPC отзывчивым и обеспечивает плавный переход между разными состояниями.

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

Зачем NPC разум: искусственный интеллект в играх

В Gears Tactics у каждого типа юнитов есть собственное дерево поведения, в котором учтены все индивидуальные особенности и способности NPC

Иерархические конечные автоматы объединяют особенности конечных автоматов и дерева поведения. Особенность такого подхода в том, что разные графы внутри логики могут отсылаться друг к другу. Например, нам надо прописать поведение для нескольких персонажей. Необязательно делать для каждого отдельную логику — можно создать общее базовое поведение и просто отсылаться к нему при необходимости.

Зачем NPC разум: искусственный интеллект в играх

Есть и менее популярные решения, которые не смогли полноценно закрепиться в индустрии. В F.E.A.R. использовалась система целеориентированного планирования действий (Goal-Oriented Action Planning, GOAP) — для всех NPC она создаёт план действий, основываясь на информации об игровом мире. Если персонажу нужно перейти в другую комнату, то система сперва проверяет, какое расстояние нужно пройти до двери, есть ли на пути препятствия, открыта ли дверь и так далее. Когда у системы есть вся информация об окружении, она составляет план, а NPC просто проигрывает последовательность анимаций.

Этот подход работает на основе конечных автоматов, но они отвечают только за воспроизведение анимаций. У автоматов есть всего три состояния, каждое из которых отвечает за свой набор анимаций: движение (бег, ходьба), действия (стрельба, реакции), взаимодействие с объектами (открыть дверь, включить свет).

Зачем NPC разум: искусственный интеллект в играх

F.E.A.R. запоминается достаточно умными противниками, которые умеют работать сообща. На самом деле они даже не знают о существовании друг друга — просто ИИ грамотно координирует их действия

На смену GOAP постепенно пришла система ИИ под названием иерархический планировщик сети задач (HTN). Эта сеть создаёт планы, которые состоят из макросов действий, в которых уже заложена определённая последовательность.

Такая система применяется в Horizon Zero Dawn. С помощью неё робоживотные могут обмениваться информацией и запрашивать у группового ИИ план действий для решения задачи.

Зачем NPC разум: искусственный интеллект в играх

У каждого противника в Horizon Zero Dawn есть свой паспорт, который используется при идентификации и добавлении в новую стаю. Когда персонаж попадает в неё, ему присваивается роль внутри группового агента

На земле, в воде и по воздуху — как ИИ передвигается в пространстве

Действия ИИ напрямую связаны с его задачей: это может быть удар в ближнем бою, занятие более выгодной позиции для стрельбы, помощь союзнику. Независимо от задачи агент должен добраться до места выполнения действия — для этого ему нужна информация об окружающей среде.

Обычно такие данные содержатся в навигационной сетке (NavMesh) — это особая карта, на которой обозначено, где NPC могут передвигаться.

Зачем NPC разум: искусственный интеллект в играх

В Horizon Zero Dawn есть сразу шесть навигационных сеток: четыре для существ разного размера, одна для тех, кто плавает, одна, чтобы игрок мог корректно оседлать существо

Поверх навигационной сетки может располагаться система узлов, которая применяется для того, чтобы NPC корректно выполняли сценарии поведения. К примеру, в Assassin’s Creed Origins у всех NPC есть свой распорядок дня, который они соблюдают даже без участия игрока. Чтобы персонажи следовали сценарию и не застревали в окружении, разработчики сделали специальную сеть узлов — точки на плоскости, где NPC выполняют свою персональную задачу. Описанный метод подходит для заранее предопределённых сценариев. NPC словно перемещаются по рельсам от одной точки к другой.

Зачем NPC разум: искусственный интеллект в играх

Зелёным обозначена навигационная сетка, а поверх неё находится система узлов. Жёлтая стрелка указывает на ошибку — кто-то поставил на узел игровой объект, чем перекрыл NavMesh

В ситуациях, в которых нужно реагировать на действия игрока, используется другой подход. В Just Cause 3 существует система, выбирающая приоритетные позиции, на которых NPC сможет эффективнее всего выполнить свою задачу. Выбор той или иной позиции зависит от конкретных критериев: дальности от цели, наличия препятствий между персонажем и его целью, удалённостью от союзников и так далее.

Зачем NPC разум: искусственный интеллект в играх

Похожая система есть и в Final Fantasy XV: когда NPC хочет применить способность, он оценивает окружение вокруг своей цели, чтобы найти наиболее выгодную позицию. Сначала ИИ ищет цель, потом выстраивает сетку из точек вокруг цели, отсеивает позиции, которые не подходят из-за особенностей ландшафта или удалённости от цели, а из оставшихся выбирает самую высокую точку.

Зачем NPC разум: искусственный интеллект в играх

Зачем NPC разум: искусственный интеллект в играх

A* высчитывает траекторию, основываясь на самой высокой точке локальной местности. Именно из-за этого воздушные противники в Horizon Zero Dawn не могут залетать под мосты или скалы

Читайте также: