Поведение врагов в 2D играх. Конструктор разработчика

Поведение врагов в 2D играх

В этой статье  мы поговорим про дизайн поведения врагов в 2D играх. Ведь разработка уровня включает в себя не только его геометрию. Блоки, бонусы и ловушки проверяют характер игрока, но именно враги оживляют уровень.

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

Помните также, что их размещение и то, как враги влияют на ход и атаку игрока, тоже имеет значение. Поиграйте, например, в Super Mario Bros Crossover, чтобы увидеть, как противник может вести себя иначе, если персонаж игрока перемещается и атакует по-разному.

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

как придумать врага для игры
Отличный дизайн и размещение врага на примере ретро-игры

Поведение врага – Состояния и триггеры

Поведение врага можно охарактеризовать тремя основными пунктами:

  • Движение – как враги двигаются
  • Качества – их сущность
  • Возможности – что они делают

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

Ниже вы найдете списки атрибутов для каждой из категорий. Противник получается интереснее, если смешивать и соединять атрибуты в уникальные состояния, а затем дальше углублять их с помощью ряда триггеров. Самые распространенные враги имеют не более двух состояний с одним триггером, но Боссы отличается тем, что часто имеют четыре и более состояний с множеством триггеров. С такими боссами тяжело бороться (см. например Axiom Verge).

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

Кроме того, рассматривайте снаряды (пули, стрелы, огненные шары и т. п.) как тип врагов. Используя аналогичные правила вы можете создавать некоторые типы снарядов как для врагов, так и для игроков.

Пояснения закончились, переходим прямо к атрибутам.

Движение

Stationary (неподвижный) – враг вообще не двигается.

Walker (пешеход) – враг ходит или бежит по земле. Пример: Гумба в Супер Марио.

Riser (растишка) – враг может увеличиться в высоту (часто, может расти из ниоткуда). Примеры: цветы-пираньи из Super Mario и грязевой человек из Castlevania.

Ducker (ныряльщик) – враг может уменьшиться в высоту (в том числе, уходя в пол). Пример: цветы-пираньи из Super Mario.

Faller (падающий) – враг падает с потолка на землю. Обычно эти враги – капли кислоты или слизи.

Jumper (прыгун) – враг может прыгать или отскакивать от поверхности. Некоторые прыгают вперед, некоторые вверх-вниз. Примеры: пружины в Donkey Kong, Tweeter в Super Mario 2, Ninji в Super Mario 2.

Floater (летун) – враг может плавать, летать или левитировать. Пример: летучие мыши в Castlevania.

Sticky (клейкий) – враг приклеивается к стенам и потолку. Спарк из Super Mario 2.

Waver (волновик) – враг движется по синусоидальной кривой. Пример: голова медузы из Castlevania.

Rotator (вращатель) – враг вращается вокруг неподвижной точки. Иногда фиксированная точка перемещается или может перемещаться в соответствии с любым другим атрибутом движения в этом списке. Кроме того, направление вращения может измениться. Пример: Rotodisc Super Mario 3, реактивные снаряды из Batman от Sunsoft (обратите внимание, что центром их вращения является игрок).

Swinger (раскачивающийся) – враг качается у неподвижной точки. Пример: махающие ножи из Castlevania.

Pacer (шагающий туда-сюда) – враг меняет направление движения в ответ на триггер (например, доходит до края платформы). Пример: Красный Купа в Super Mario.

Follower (преследователь) – враг следует за игроком (часто используется в играх с видом сверху). Пример: жучки из Zelda 3.

Roamer (бродяга) – враг меняет направлении движения на случайной основе. Пример: Октороки из Legend of Zelda.

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

Teleporter (телепортер) – враг может телепортироваться из одного места в другое. Пример: Визробы из Zelda.

Dasher (двигающийся с ускорением) – в определенном направлении враг движется со скоростью больше, чем его нормальная. Пример: змеи-веревки из Zelda.

Ponger (прыгун) – враг отскакивает от стен по прямой линии, вопреки законам физики. Пример: пузыри из Zelda 2.

Geobound (геометрический) – враг физически привязан к геометрии уровня, иногда проявляется как геометрия уровня. Примеры: спайки из Megaman, цветы-пираньи из Super Mario, белый дракон из Castlevania.

Tethered (привязанный) – враг привязан к геометрии уровня цепью или веревкой. Пример: Чейн-чомпы из Super Mario.

Swooper (налетчик) – парящий враг, который налетает, часто (но не всегда) возвращаясь в исходное положение). Пример: Летучие мыши в Castlevania, свуперы в Super Mario, злобное солнце в Super Mario 3.

Mirror (зеркальный) – враг подражает движениям игрока. Иногда враг движется в противоположном по отношению к игроку направлении. Пример: Гории из Zelda 3.

Качества

GeoIgnore (игнорирование) – враг игнорирует особенности геометрии уровня и может проходить сквозь твердые преграды. Примеры: ротодиск из Super Mario 3, различные летающие существа.

GeoDestroyer (разрушение – враг может уничтожить блоки геометрии уровня. Примеры: Боузер в Super Mario 3, Бо-бомб.

Shielder (защита) – атаки игрока не защитываются при ударе с определенного направления или угла, или если они попадают в определенное место на враге. Пример: рыцари из Zelda 2.

Reflector (отражение) – отражает попавшие в него атаки дальнего боя.

Damager (повреждение) – игрок получает повреждения при столкновении с ним. Самое распространенное качество.

Redamager (обратный удар) – игрок сам получает урон при ударе во врага. Пример: электрическая слизь (buzz blob) в Zelda: Link to the Past.

Secret spot (секретная точка) – урон может быть нанесен только при попадании в определенно место на «теле» врага. Противоположность Защищенного. Этим качеством обладают многие боссы.

Invulnerable (неуязвимость) – врага нельзя убить или нанести ему ущерб. Примеры: в основном элементы геометрии уровня (шипы, падающие блоки, огонь), но также и существа наподобие Братьев Бу в Super Mario 3.

Reanimator (реанимация или воскресение) – враг оживает после смерти. Примеры: скелеты в Castlevania и Super Mario.

Regenerator (регенерация) – здоровье врага с течением времени восстанавливается.

Secret Weakness (секретная уязвимость) – враг уязвим по отношению к определенному типу атак (огонь, магия, стрелы и т.д.) Пример: ящер Додонго в Zelda (уязвим для бомб).
Hard to Hit (трудно попасть) – в этих противников очень сложно попасть в обычных диапазонах атаки игрока. Они часто бывают очень быстрыми или очень маленькими. Пример: шипастая слизь Мью в Zelda 2.

Segmented (сегментирование) – эти враги составлены из небольших отдельных предметов или существ. Каждый отдельный сегмент часто может быть уничтожен независимо, враги как правило (но не всегда) напоминают змею. Пример: Манхандла в Zelda, кактус Покей в Super Mario.

Bumper (отталкивание) – эти враги действуют по принципу бамперов в пинболе, быстро отталкивая игрока (или другие объекты). Пример: жучки из Zelda 3.

GeoMimic (подражание) – враги обладают свойствами геометрии уровня. Чаще всего это означает, что игрок может стоять на них. Примеры: большинство врагов в Mario 2, сигма в Megaman X, бык Катоблепас в Castlevania.

Alarm (сигнализация) – враг или объект, который заставляет реагировать другого противника или объект.

Meta-vulnerable (мета-уязвимость) – врага можно победить с помощью действий, выходящих за рамки обычного игрового процесса: поменяв настройки в игре, купив оружие в приложении, рассказав про игру в социальной сети, играя в положении вверх ногами с акселерометром/компасом, играя в хорошо освещенной комнате, создавая шум в микрофон и т.д. Пример: заключенный Вполголос (Pol’s Voice) в японской версии Zelda.

Враги из серии игр Марио
Враги из серии игр Марио

Возможности

Melee Attack (атака ближнего боя) – враг атакует в непосредственной близости от героя.

Emitter (излучение) – враг «испускает» другого врага или снаряд. Этот тип очень похож на Метателя. Основное различие в том, что Метатели бросают объект, который они подобрали или сделали, в то время как у Излучателя бесконечное количество снарядов. Примеры: Билл-пушки из Super Mario 3, Лакиту в Super Mario, многие враги с огнестрельным оружием, спаунеры из Gauntlet.

Thrower (бросок) – враг может бросаться чем-либо (предметами, игроком, другим врагом). Часто, но не обязательно, сочетается с возможностью Носильщика. Примеры: скелеты, которые кидают бочки в Castlevania, Жук Бастера в Super Mario 3.

Grower (увеличение) – враг может расти в размерах.

Shrinker (уменьшение) – враг может уменьшаться в размерах.

Forcer (вынужденное движение) – враг может применить к герою силу, чтобы переместить его. Во многих играх есть скользкие дорожки, а также враги, которые дуют на игрока, заставляя его двигаться назад.

Carrier (перенос предметов) – враг может нести другого врага, предмет или героя. Это достаточно общая классификация, она включает в себя врагов, которые подбирают игрока, «съедают» и снова выплевывает его, или же захватывает и ограничивает движение игрока. Пример: хозяин стен в Zelda.

Splitter (раскалывание на части) – враг может разбиться на несколько других врагов, при этом уничтожив себя. Примеры: слизь в Rogue Legacy, Вире и Бири в Legend of Zelda.

Cloner (клонирование) – враг может создать копию себя. Чаще всего копия является точной, но иногда добавляются небольшие изменения (меньше здоровья, выше скорость и т.д.). Главный враг не разрушается при клонировании. Пример: Гини в Zelda.

Morpher (морфинг) – враг превращается во врага другого типа. Иногда это временно, а иногда он превращается в нескольких врагов другого типа.

Sapper (истощение сил) – враг может привести к изменению статистики игрока (уменьшение скорости, уменьшение высоты или невозможность прыжка, невозможность атаки и т. д.). Эти эффекты могут быть как постоянными, так и временными.

Latcher (запирание способностей) – враг также может изменить статистику игрока и его способности, но делает это только привязавшись к игроку. Пример: мини-гумбы в Mario 3, Лайк Лайки в Zelda.

Hider (прятание) – враг может скрыться от игрока. Как правило, враг скрыт до тех пор, пока игрок не окажется на заданном расстоянии или наоборот, противник скрывается, когда игрок приближается. Пример: цветы-пираньи в Mario.

Exploder (взрыв) – враг может уничтожить себя и нанести повреждения за счет взрыва. Пример: мины во многих играх, Бо-бомбы в Mario.

Interactor (влияние) – враг может взаимодействовать с такими объектами, как рычаги или кнопки.

Charger (задержка атаки) – перед тем, как переключиться на другой вид поведения, враги ненадолго останавливаются. Пример: волки в Castlevania (останавливаются перед тм, как броситься на игрока).

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

Триггеры

Random (случайный) – враг случайным образом переключается в новое состояние.

Timed (время) – враг переключится в новое состояние через определенный промежуток времени.

Time Cycle (суточный ритм) – враг переключает состояния в зависимости от времени суток. Например, спит ночью, активен в течение дня.

Distance Traveled (пройденное расстояние) – враг прошел определенное расстояние.

Proximity (расстояние) – враг находится на определенном расстоянии от другого объекта, обычно игрока, но это может также быть другой враг, объект на уровне или снаряд.

Post-Ability (последующее действие) – враг только что совершил действие, например, враг стреляет в базуку, затем скрывается за элементами геометрии уровня.

Occupies Volume (занимает объем) – враг переместился в определенный объем пространства. Это может быть зона воды или же невидимое глазом пространство, обозначающее границы города.

Stat Value (значение статистики) – враг меняет поведение в зависимости от значений своей статистики или статистики игрока. Пример: здоровье врага падает ниже 10%, и он взрывается; игрок имеет более 500% очков магии, и враг старается высосать их.

Line of Sight (линия зрения) – враг может (или должен) лично «видеть» игрока, другого врага или объект.

Scripted Event (событие в скрипте) – запрограммированное событие заставляет врага изменить поведение.

Someone Else (кто-то еще) – триггер срабатывает из-за действий другого врага. Пример: Здоровье одного из врагов падает ниже 20%, поэтому на персонажа набрасываются другие враги.

Death (смерть) – здоровье врага истощено до 0% или он умирает каким-то еще путем.

Переменные поведения врага

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

  • Скорость движения
  • Высота прыжка
  • Длина и амплитуда у синусоиды прыжка
  • Диапазон атаки
  • Радиус повреждения при взрыве
  • Размер врага
  • Расстояние преследования героя
  • ..и так далее

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

Повеселитесь!

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

Понравилась статья? Поделиться с друзьями:
Комментариев: 31
  1. Vostrugin

    Хорошая статья. Месяц назад читал в оригинале. Помогает, когда идеи вот прям закончились :)

    1. Сергей Кормишин

      Если не секрет, каких интересных врагов удалось получить?)

      1. Vostrugin

        Я использовал статью косвенно, мне нужны были, да и сейчас нужны, идеи ловушек для 2D пространства. Не помню на какие конкретно ловушки натолкнула статья, но с того момента появились: ловушка-пила, которая перемещается по полу от стены к стене; настенный стреломёт, с ограниченным кол-вом стрел; живой кактус, который неподвижен и может стрелять только в спину врага.

        1. Сергей Кормишин

          Стреломет звучит интересно, он становится «ступенькой» на стене после того, как расстреляет все стрелы?

          1. Vostrugin

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

          2. Сергей Кормишин

            Снизу слева есть мааленькая иконочка с картинкой — по идее можно вставить и гифку, не пробовал. А кстати, попробую котика какого загрузить. По идее —
            работает :) https://uploads.disquscdn.com/images/d8ab4f9e5d6c123fec935510011289db0ed6f054cfb078078ed0498d15469305.gif

          3. Vostrugin

            Котик есть. Кнопку видел, засомневался, что сайт гифку съест :)
            На гифке как раз пила и стреломёт.
            https://uploads.disquscdn.com/images/c2a16478b844253387ee412666a3520b3d1f17fd193ac55a9dc6fbc442afba8f.gif

          4. Сергей Кормишин

            Вы вроде где-то писали геймплейно что из себя будет представлять игра, может в комментариях к другой статье? не могу найти. Но если бы был платформер, я бы сделал чуть выпирающие плитки внизу (кнопки), на полу, и когда игрок наступает на них — стреломёт производит выстрел, может с какой-то задержкой.

          5. Vostrugin

            Вроде не писал. В моём случае это смесь tower defence с головоломкой.
            В дом к игроку вламываются «гости», которые тырят всё самое ценное. Цель — расставить правильно ловушки, чтобы максимально быстро и с минимальными материальными потерями выпроводить гостей. Вот старое геймплейное видео, так будет понятнее. https://youtu.be/ufALIBxRxfY?t=8s

          6. Сергей Кормишин

            Арт симпатичный) Сами рисуете? Геймплейно не очень понял зачем мебель расставлять, почему не генерировать комнаты уже с мебелью на уровнях, а расставлять только ловушки..

          7. Vostrugin

            Это в повествование на видео косячок. На обычных уровнях игрок расставляет только ловушки и взаимодействует с предустановленными механизмами.
            Отдельно у игрока есть убежище, где он за золото может обустраивать дом. Декорации для убежища открываются за звёзды (получаемые за уровни). Декорации дают очки роскоши, которые открывают спец уровни.
            За арт спасибо :) Первый этап (5 уровней) жена рисовала. Остальное уже рисовал я, а она была консультантом :)

          8. Сергей Кормишин

            Жена — художница, муж — программист, это же можно студию сделать :) Семья геймз

  2. Ori

    Расстраивает, что в качестве примера автор приводит врагов из одних и тех же игр. А так статья занимательная, как обычно.

    1. Сергей Кормишин

      Можно вместе повспоминать врагов из других игр или попридумывать новых: я на форуме теммку создал http://coremission.net/topic/obsujdenie-dizaina-vragov-v-2d-igrah/

      1. Vostrugin

        Хотел отписаться там, но что-то не приходит письмо с подтверждением :(

        1. Сергей Кормишин

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

          1. Vostrugin

            В спаме нет. Пытался через некоторое время получить пароль через «Забыли пароль», но тоже пусто. Логин Vostrugin, почта max.vostrugin@gmail.com. Спасибо :)

          2. Сергей Кормишин

            Получилось только установить какой-то и я послал его на почту) Надеюсь получиться залогиниться и обсудить врагов! :)

  3. Miheev Michail

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

    1. Сергей Кормишин

      А что за список всевозможных сценариев? Любопытно — расскажите пожалуйста)

        1. Сергей Кормишин

          спасибо, полезная ссылочка)

  4. Rihard

    Доброго времени суток, в наставники возьмете?)

    1. Сергей Кормишин

      Привет, а чему учить будете)?

      1. Rihard

        Ой извините пожалуйста , я выразился противоположно)) правильному.
        Хотел Вам написать в ученики возьмете?)чтобы вы наставником были, буду учить все что вы скажете.
        Изучаю основы JS)) Чайник короче я. Но желания есть.
        https://learn.javascript.ru/js что скажете про этот ресурс , обучаюсь по нему.

        1. Сергей Кормишин

          Привет! Учить не могу, могу подсказать и кое-что посоветовать, если что-то спросите :) Лучше всего на форуме: coremission.net/forums (могут быть проблемы с авторизацией, отправка сообщений барахлит — пишите сюда тогда: https://goo.gl/R7CGvo)

          1. Rihard

            ссылка кидает на вк, но ваша страница не выходит, как Вас в вк найти

          2. Сергей Кормишин

            да, извините, написал тему на форуме: http://coremission.net/topic/problemy-s-registraciei/

  5. VanHunter

    Из современных игр, если не все, то большинство поведений есть в binding of isaac

  6. Zakoldun

    Ссылки на оригинал статьи не приводите?

    1. Сергей Кормишин

      Поправим статью — добавим потерянные ссылки :)

Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: