Mighty Final Fight. Vol.1

mff_logo.png

volume 1

ВНИМАНИЕ!!! ДАННАЯ СТАТЬЯ СОДЕРЖИТ спорные РЕКОМЕНДАЦИИ по реализации тех или иных моментов!!! будьте внимательны!!!

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

Предисловие

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

Графика

1. Заставка

mff_1.png

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

2. Предыстория (и концовка)

mff_2.png

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

3. Титульный экран

mff_3.pngmff_4.png

Логотип игры состоит из двух кадров, значит будем использовать объект. В MFF не предусмотрена смена управления, но нам придется это сделать. Поэтому вместо надписи "press start" мы сделаем меню из двух пунктов (start, controls). Как мы будем это делать -- разговор отдельный.

4. Выбор персонажа

mff_5.png

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

5. Заставка перед уровнем

mff_6.png

Анимированный персонаж и статичная картинка. На карте мигающим кружком отображается территория, на которой будет происходить этап. Чтобы сэкономить на графике, мы можем сделать одну картинку с картой и надписью "round", и добавлять на нее кружок и номер уровня. Так как кружок мигающий (то есть два кадра как минимум), будем делать это через объект. Номер уровня можем просто нарисовать (draw).

6. Игровой уровень

mff_8.pngmff_21.png

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

mff_9.pngmff_10.png

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

mff_17.pngmff_18.png

Во время бонусных участков уровня на Коди катятся бочки. Разрушенные бочки оставляют power_up. С обоими придется проверять столкновение, и хоть power_up не анимирован, придется использовать объекты.

mff_19.pngmff_20.png

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

mff_11.pngmff_12.png

Пол под Коди провалился и он упал в дыру. Значит помимо дальнего бэкграунда придется использовать и передний.

mff_13.pngmff_14.png

Перед схваткой с боссом происходит диалог с выбором ответа. Будем рисовать с помощью draw_text

7. Конец игры

mff_15.pngmff_16.png

Две картинки с геймовером и continue. На обеих по анимированному персонажу, большие синии надписи и выбор "yes|no". Соответственно, два объекта и draw_text.

Объекты

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

Из очевидных по скриншотам:

  1. Коди (персонаж, управляемый игроком)
  2. Штаны Коди
  3. Враг
  4. Штаны врага
  5. Спецэффект при ударе
  6. Бочка
  7. Power_up
  8. Рука-Go
  9. Отрисовка интерфейса
  10. Задний бэкграунд
  11. Передний бэкграунд
  12. Анимированные части бэкграунда
  13. Отрисовка текста в диалогах и предыстории
  14. Выбор в диалогах и на экране continue
  15. Квадрат на экране выбора персонажа
  16. Вывод карты перед уровнем
  17. Вывод номера этапа на экране карты
  18. Мигающий кружок на карте уровня
  19. Логотип MFF
  20. Меню на титульном экране
  21. Вывод картинок в предыстории
  22. Анимированные персонажи перед уровнем и на экранах continue и геймовер

Из менее очевидных, но обязательных:

  1. Масштабирование
  2. Сохранение настроенных кнопок управления
  3. Статистика (выбранный персонаж, текущий этап, уровень Коди, количество экспы, энергия и так далее)

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

Комнаты

Подход будет тот же, что и при составлении перечня объектов. Какие-то комнаты можно будет объединить, а пока просто приведем полный список:

  1. Заставка
  2. Предыстория
  3. Титульный экран
  4. Экран смены управления
  5. Экран выбора персонажа
  6. Экран перед уровнем
  7. Игровой уровень
  8. Экран с геймовером и continue

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

Итого

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

Не сомневаюсь, что все мои размышления и деления на объекты и комнаты -- спорны. Как обычно приглашаю всех желающих в комментарии.

  • yeo
  • 08 февраля 2012, 17:22