{}const=>[]async()letfn</>var
ОбзорРазработка

Как сделать искусственный интеллект для врагов (даже новичку)

Простой и понятный гайд по созданию AI для врагов: патрулирование, погоня и атака без сложных алгоритмов.

К

Кодик

Автор

5 мин чтения

Ты сделал игру. Добавил карту, персонажа, врагов… и вроде всё на месте. Но есть одна проблема: враги стоят как будто им просто сказали “ну вы тут постойте для атмосферы” 😅

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

И вот тут приходит он — простейший игровой AI. Не страшный, не сложный, не “только для сеньоров из AAA-студий”, а нормальный, понятный и доступный даже новичку.

🧠 Хорошая новость: тебе не нужна магия

Когда новички слышат “искусственный интеллект”, многие сразу представляют что-то вроде нейросетей, обучения моделей, сложных графов поведения и вообще диплом по Computer Science.

Но в реальности для первых игр всё намного проще.

Чаще всего базовый AI врага строится на машине состоянийFinite State Machine (FSM). Звучит серьёзно, но суть очень простая:

  • враг находится в одном состоянии;

  • в этом состоянии он выполняет определённое поведение;

  • если условие меняется — враг переключается в другое состояние.

То есть буквально:

  • не видит игрока → патрулирует;

  • увидел игрока → бежит за ним;

  • подошёл близко → атакует.

Всё. Уже звучит как настоящий AI, а не как мебель на карте 😄

🔥 100 000+ учеников уже с нами

Устал читать теорию?
Пора кодить!

Кодик — приложение, где ты учишься программировать через практику. AI-наставник, интерактивные уроки, реальные проекты.

🤖 AI 24/7
🎓 Сертификаты
💰 Бесплатно
🚀 Начать учиться
Присоединились сегодня

👣 Состояние №1: патрулирование

Это самый простой и самый важный этап. Даже если враг просто ходит между двумя точками, он уже воспринимается как “живой”.

Обычно патрулирование делается так:

  • на уровне ставятся несколько точек;

  • враг идёт к текущей точке;

  • когда доходит — выбирает следующую.

Примерно такая логика:

if (state == "patrol") {
    moveTo(nextPoint);

    if (reachedPoint) {
        switchToNextPoint();
    }
}

И вот здесь уже случается маленькая магия геймдева: игрок видит, что враг не просто стоит, а что-то делает. Атмосфера сразу становится лучше. Даже если по факту это просто “ходить туда-сюда”.


👀 Состояние №2: враг замечает игрока

Вот тут начинается момент “о, игра ожила”.

Самая простая проверка — расстояние до игрока. Если игрок подошёл слишком близко, враг переключается из патрулирования в погоню.

if (distanceToPlayer < visionRange) {
    state = "chase";
}

Это уже работает. Да, пока без суперреализма, зато быстро и понятно.

Потом можно улучшать:

  • добавить угол обзора;

  • проверять, нет ли стены между врагом и игроком;

  • учитывать шум или свет.

Но на старте хватит даже обычной дистанции. Главное — не зарываться в сложность раньше времени.

🏃 Состояние №3: погоня

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

В режиме погони враг просто двигается к позиции игрока:

if (state == "chase") {
    moveTo(player.position);

    if (distanceToPlayer < attackRange) {
        state = "attack";
    }

    if (distanceToPlayer > loseRange) {
        state = "patrol";
    }
}

Смотри, что здесь происходит:

  • если игрок рядом — начинаем атаковать;

  • если игрок убежал слишком далеко — прекращаем погоню и возвращаемся к патрулю.

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

Именно такие штуки очень сильно повышают “вау-эффект” первой игры.

⚔️ Состояние №4: атака

Самая приятная часть — враг наконец-то делает то, ради чего его вообще добавили в игру 😈

На базовом уровне атака может быть вообще очень простой:

if (state == "attack") {
    attackPlayer();

    if (distanceToPlayer > attackRange) {
        state = "chase";
    }
}

То есть пока игрок в радиусе — враг атакует. Как только игрок выходит за пределы — враг снова начинает погоню.

Позже можно добавить:

  • задержку между атаками;

  • анимацию удара;

  • разный урон;

  • разные типы атак.

Но даже такой простой вариант уже даёт ощущение, что перед тобой не манекен, а противник.

🔁 Как всё это выглядит вместе

Вся логика врага сводится к очень понятной схеме:

  • PATROL → увидел игрока → CHASE

  • CHASE → подошёл близко → ATTACK

  • ATTACK → игрок отошёл → CHASE

  • CHASE → потерял игрока → PATROL

Это и есть та самая база, на которой строится огромное количество простых игровых AI.

И самое приятное — здесь нет ничего космического. Только состояния, условия и переходы.

💥 Почему даже такой AI уже делает игру лучше?

Потому что игра перестаёт быть статичной.

С простым AI у тебя появляется:

  • ощущение опасности;

  • живое поведение врагов;

  • небольшое напряжение для игрока;

  • больше интереса к игровому процессу.

Именно поэтому даже очень простой враг с патрулированием, погоней и атакой часто впечатляет сильнее, чем красивая, но “мёртвая” сцена.

Игрок может не знать, как это устроено под капотом, но он точно чувствует разницу между:

“враг просто стоит”
и
“враг меня заметил, побежал за мной и начал атаковать”

Во втором случае мозг игрока сразу говорит: “О, вот это уже игра”.

🛠️ Что можно улучшить дальше?

Когда освоишь базу, можно двигаться дальше:

  • сделать врага, который слышит звуки;

  • добавить разные типы врагов с разным поведением;

  • сделать врагов дальнего боя;

  • добавить состояние “поиск игрока” после потери цели;

  • научить врага обходить препятствия умнее.

Но главный совет здесь один: не пытайся сразу сделать ультра-умного босса из Dark Souls.

Сначала сделай простой, понятный и рабочий AI. Он даст тебе намного больше пользы, чем недоделанная суперсистема на 200 состояний.

📱 Кстати, где всё это удобно прокачивать

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

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

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

🏁 Итог

Чтобы сделать искусственный интеллект для врагов, не нужно сразу лезть в дебри сложных алгоритмов.

Для первой игры тебе более чем хватит трёх состояний:

  • патрулирование;

  • погоня;

  • атака.

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

А дальше всё как в разработке обычно и бывает: сначала делаешь базу, потом полируешь, улучшаешь и постепенно превращаешь “простую механику” в реально классную систему.

Так что да — даже если ты новичок, AI для врагов тебе вполне по силам. И это одна из тех фишек, которая очень быстро превращает “просто прототип” в игру, которую уже хочется запускать ещё раз 🎮

А у тебя враги в первой игре уже умные, или пока работают по тактике “стоять и надеяться на лучшее”? 😄

🎯Хватит откладывать

Понравилась статья?
Пора применять на практике!

В Кодик ты не просто читаешь — ты сразу пишешь код. Теория + практика = реальный скилл.

Мгновенная практика
🧠AI объяснит код
🏆Сертификат

Без регистрации • Без карты