Поведение врагов в 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 для монстров!Не стесняйтесь экспериментировать с ним и получайте удовольствие! Ведь это и есть самое главное при разработке игр.
Хорошая статья. Месяц назад читал в оригинале. Помогает, когда идеи вот прям закончились :)
Если не секрет, каких интересных врагов удалось получить?)
Я использовал статью косвенно, мне нужны были, да и сейчас нужны, идеи ловушек для 2D пространства. Не помню на какие конкретно ловушки натолкнула статья, но с того момента появились: ловушка-пила, которая перемещается по полу от стены к стене; настенный стреломёт, с ограниченным кол-вом стрел; живой кактус, который неподвижен и может стрелять только в спину врага.
Стреломет звучит интересно, он становится “ступенькой” на стене после того, как расстреляет все стрелы?
Не совсем, проще, он крепится на стену. Ваша идея крутая, нужно записать :)
В игре есть гости, которых нужно прогонять ловушками, ходят они примитивно по полу из комнаты в комнату.
Я бы показал гифкой, но не в курсе можно ли тут вставлять ссылки )
Снизу слева есть мааленькая иконочка с картинкой – по идее можно вставить и гифку, не пробовал. А кстати, попробую котика какого загрузить. По идее –
работает :) https://uploads.disquscdn.com/images/d8ab4f9e5d6c123fec935510011289db0ed6f054cfb078078ed0498d15469305.gif
Котик есть. Кнопку видел, засомневался, что сайт гифку съест :)
На гифке как раз пила и стреломёт.
https://uploads.disquscdn.com/images/c2a16478b844253387ee412666a3520b3d1f17fd193ac55a9dc6fbc442afba8f.gif
Вы вроде где-то писали геймплейно что из себя будет представлять игра, может в комментариях к другой статье? не могу найти. Но если бы был платформер, я бы сделал чуть выпирающие плитки внизу (кнопки), на полу, и когда игрок наступает на них – стреломёт производит выстрел, может с какой-то задержкой.
Вроде не писал. В моём случае это смесь tower defence с головоломкой.
В дом к игроку вламываются “гости”, которые тырят всё самое ценное. Цель – расставить правильно ловушки, чтобы максимально быстро и с минимальными материальными потерями выпроводить гостей. Вот старое геймплейное видео, так будет понятнее. https://youtu.be/ufALIBxRxfY?t=8s
Арт симпатичный) Сами рисуете? Геймплейно не очень понял зачем мебель расставлять, почему не генерировать комнаты уже с мебелью на уровнях, а расставлять только ловушки..
Это в повествование на видео косячок. На обычных уровнях игрок расставляет только ловушки и взаимодействует с предустановленными механизмами.
Отдельно у игрока есть убежище, где он за золото может обустраивать дом. Декорации для убежища открываются за звёзды (получаемые за уровни). Декорации дают очки роскоши, которые открывают спец уровни.
За арт спасибо :) Первый этап (5 уровней) жена рисовала. Остальное уже рисовал я, а она была консультантом :)
Жена – художница, муж – программист, это же можно студию сделать :) Семья геймз
Расстраивает, что в качестве примера автор приводит врагов из одних и тех же игр. А так статья занимательная, как обычно.
Можно вместе повспоминать врагов из других игр или попридумывать новых: я на форуме теммку создал http://coremission.net/topic/obsujdenie-dizaina-vragov-v-2d-igrah/
Хотел отписаться там, но что-то не приходит письмо с подтверждением :(
Грустно, в спаме точно нет? Бесплатный почтовый сервер с движком сайта видимо не всегда хорошо работает. А какой логин или почту искать, может я руками активирую?
В спаме нет. Пытался через некоторое время получить пароль через “Забыли пароль”, но тоже пусто. Логин Vostrugin, почта max.vostrugin@gmail.com. Спасибо :)
Получилось только установить какой-то и я послал его на почту) Надеюсь получиться залогиниться и обсудить врагов! :)
Суховато же, годится далеко не всюду. Если сильно доработать, то можно получить что-то вроде “списка всех возможных сценариев”, сценаристы поймут. Но сервис интересный)
А что за список всевозможных сценариев? Любопытно – расскажите пожалуйста)
Возможно, он имел ввиду этот
https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D0%B4%D1%86%D0%B0%D1%82%D1%8C_%D1%88%D0%B5%D1%81%D1%82%D1%8C_%D0%B4%D1%80%D0%B0%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D1%81%D0%B8%D1%82%D1%83%D0%B0%D1%86%D0%B8%D0%B9
спасибо, полезная ссылочка)
Доброго времени суток, в наставники возьмете?)
Привет, а чему учить будете)?
Ой извините пожалуйста , я выразился противоположно)) правильному.
Хотел Вам написать в ученики возьмете?)чтобы вы наставником были, буду учить все что вы скажете.
Изучаю основы JS)) Чайник короче я. Но желания есть.
https://learn.javascript.ru/js что скажете про этот ресурс , обучаюсь по нему.
Привет! Учить не могу, могу подсказать и кое-что посоветовать, если что-то спросите :) Лучше всего на форуме: coremission.net/forums (могут быть проблемы с авторизацией, отправка сообщений барахлит – пишите сюда тогда: https://goo.gl/R7CGvo)
ссылка кидает на вк, но ваша страница не выходит, как Вас в вк найти
да, извините, написал тему на форуме: http://coremission.net/topic/problemy-s-registraciei/
Из современных игр, если не все, то большинство поведений есть в binding of isaac
Ссылки на оригинал статьи не приводите?
Поправим статью – добавим потерянные ссылки :)