Хитрости и трюки создания скролл-шутера

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

Базовые настройки игрового уровня

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

Если вы создаете игру с разрешением 1024х768, то размер уровня должен составлять примерно 1400х1400. Нужно это для того, чтобы был возможен эффект Shake, если же размер уровня будет соответствовать размеру окна приложения, то тряски экрана не добиться.


Для создания эффекта тряски экрана вам нужно создать простенький объект (Sprite) и разместить его по центру игрового окна, поставить галочку в его аттрибутах в параметре Center to View и применить к нему поведение Shake. Затем создать глобальную переменную, которую назовите Shake, и создать событие, при котором "если переменная равна или меньше значения 0, то шейкинг у объекта деактивирован, а сам объект находится в центре". И создать событие "если переменная Shake равна или больше значения 1, то поведение Shake у объекта активировано и происходит шейкинг объекта. Также не забудьте создать постоянное условие, при котором у глобальной переменной Shake отнимается 1 значение. И создайте событие "если глобальная переменная Shake равна или меньше 0, то значение переменной Shake равно 0.

Локации

Создание хорошей и интересной локации для уровня — это одна из самых трудных задач для игродела. Поэтому мы будем использовать порядка 5-10 объектов, из которых и будет выстраиваться локация уровня. Вот желательный набор объектов, который придаст насыщенность локации:

1. Тайловая текстура космоса.
2. Тайловая текстура облаков.
3. Объект Particles (частицы) для создания эффекта быстро пролетающих звезд.
4. Объект Sprite в виде большого космического тела (большой астероид, либо гиганский космический корабль).
5. Объект Sprite в виде металлоконструкции (различные трубы, фермы, установки).

Объектов можно добавить гораздо больше, но это уже на ваше усмотрение.

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

Для объектов (Sprite) необходимо создать события, при которых эти объекты должны будут появляться с верхней части экрана (не забудьте применить к объектам поведение Grid Movement, и в событии, отвечающем за появление объекта, указать вертикальное движение равному 1, также в Grid Movement установите параметр Height равным 2000, и скорость перемещения по своему усмотрению). Объекты Вы можете создавать рандомно (по оси Х, а по оси Y желательно всегда указывать 0, либо еще меньше, например -100), либо в определенных координатах, указав при этом координаты появления. Не забывайте создать события, отвечающие за уничтожение объектов, в случае, если они слишком низко (ушли за пределы экрана). Это нужно для оптимизации, дабы не нагружать приложение лишними объектами.

Вражеские юниты

Вам придется создавать глобальную переменную для спавна (создания) каждого типа вражеского юнита. На переменную Вам необходимо подвязать создание юнита (с верхней части экрана), а на значение этой переменной — скорость спавна юнита. Допустим, если у нас переменная "астероид" равна 0, то ничего не создается, если 1, то астероиды создаются каждые 2 секунды, если 2 — то каждую секунду и так по возрастанию. Подберите для врагов нужные поведения (RTS, Grid Movement, Bullet, Custom movement) и создайте постоянное условие, при котором враг должен лететь сверху вниз (в некоторых случаях можно использовать поведение преследования врагом вашего корабля).

Не забудьте создать условие, при котором вражеский юнит уничтожается, если он улетает далеко вниз за пределы видимости экрана.

Ваш звездолет

Если Вы хотите использовать анимацию наклона корабля при его движении, то самый проверенный способ — использовать для корабля поведение RTS, затем создать кораблю приватную переменную (допустим "Speed", которая будет зависеть от скорости разгона корабля по X оси (Get X component of motion) и уже раскадровку поворота корабля подвязать на переменную "Speed". Только не забудьте у анимации корабля убрать галочку с зацикливания и поставить скорость проигрывания анимации на 0. Если же анимация наклона Вам не важна, то можете просто применить к своему кораблю поведение Mouse.

Система выпадения бонусов из вражеских юнитов

Способов реализовать данную систему множество! Но я выбрал следущий:

1. Создаем глобальную переменную "bonus", по умолчанию равную 0.
2. Создаем событие Always, в котором добавляем переменной bonus 1 единицу значения за секунду времени (впишите "1*timedelta" без кавычек).
3. Создайте событие, при котором "если переменная bonus равна или больше 10, то переменная bonus будет равна 10".
4. Создайте событие "Если переменная bonus равна 10 и если у врага астероид переменная life равна 0, то из врага астероид выпадает бонус, а переменная bonus обнуляется".

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

Успехов Вам в игрострое дорогие друзья! Если будут какие-либо предложения по дополнению статьи, то напишите в эту тему, я постараюсь её дополнить!



Автор статьи: Yani-X

Опубликовано: 18 октября, 2010

Категория: Другие уроки

Комментарии:

  1. BOY:

    Спасибо!
    Я сам правда пару дней назад забросил создание скролл-шутера 😀