Mighty Final Fight. Vol.0

kopiya_mighty_final_fight_j0001.png

volume 0

-3 :: -2 :: -1 :: 0 :: 1 :: 2 :: 3 

Предупреждение!

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

Цель данного цикла: поделиться опытом создания битэмапов на гейм мейкере (8.0 Pro).
Плюсы: в итоге мы получим работающий битэмап.
Минусы: не все будет сделано оптимально, наверняка какие-то вещи будут решаться через одно место и так далее. То есть воспринимать эти статьи как туториалы по изучению гейм мейкера (ГМ) не стоит. В то же время, я прошу старших товарищей поправлять меня, указывать на ошибки, подсказывать оптимальные решения. Таким образом новички не будут учиться неправильным приемам, и все мы наберемся опыта.

Общие моменты

Подразумевается, что вы минимально знакомы с инструментом. Я не буду начинать с основ и рассказывать вам, что такое комната, как создать объект и прочие базовые вещи. Однако стоит остановиться на некоторых вещах, чтобы прояснить мое понимание и подход к созданию игр на ГМ.

1. Комнаты

Я воспринимаю комнату, как часть игры, принципиально отличающуюся по функциональному назначению.

Например:

1) Титульный экран
2) Заставка перед и после уровня
3) Непосредственно игровой уровень
4) и так далее...

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

Соответственно, любой игровой уровень происходит всегда в одной и той же комнате.

2. Объекты

Методологически, я разбиваю все, что будет в игре на отдельные сущности и для каждой создаю object.

Например:

1) Главный герой (ГГ)

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

2) Враг

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

3) Интерфейс

Это тоже отдельный объект, посредством которого мы будем выводить на экран энергии ГГ и врагов, количество набранного опыта и так далее.

4) Бэкграунд

Хотя в гейм мейкере существует отдельный вид объекта background, я рекомендую использовать обычный игровой объект и привязывать к нему спрайты с задниками.

5) и так далее...

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

3. Спрайты

Я экспериментировал с разными подходами к анимации персонажей и пришел к собственному способу вывода картинок на экран. В свое время я расскажу вам о необходимости "хитрого пути" в данном случае. Пока лишь скажу, что анимации персонажей вне игры лучше хранить в виде стрипов, а добавлять в игру в один спрайт. То есть абсолютно все кадры для одного персонажа будут лежать в одном спрайте ГМ.

4. GML

Мы будем использовать только встроенный язык ГМ -- GML, поэтому из всех действий (actions) объекта нам понадобится только Execute a piece of code (вкладка control > code).

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

Из общих моментов это, наверное, все.

Ресурсы

В первом приближении мы попытаемся реализовать боевую систему Mighty Final Fight (MFF), для чего, по минимуму, нам понадобятся следующие спрайты:

Анимации ГГ

cody_0.png

Анимации врага

bret_0.png

Бэкграунд первого подэтапа

stage1_0.png

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

  • yeo
  • 06 февраля 2012, 16:01