Mighty Final Fight. Vol.1
volume 1
ВНИМАНИЕ!!! ДАННАЯ СТАТЬЯ СОДЕРЖИТ спорные РЕКОМЕНДАЦИИ по реализации тех или иных моментов!!! будьте внимательны!!!
-3 :: -2 :: -1 :: 0 :: 1 :: 2 :: 3
Предисловие
Наконец-то мы добрались до самой игры. В первую очередь я предлагаю пройтись по скриншотам игры и крупно прикинуть, что нам придется реализовывать.
Графика
1. Заставка
Здесь все просто, картинка не анимированная, создавать отдельные шрифты для написания этой надписи смысла нет, значит просто вставим картинку по центру. Это может быть как бэкграунд, так и отдельный объект с однокадровым спрайтом.
2. Предыстория (и концовка)
Картинка по центру и текст под ней. Этим же шрифтом будут выводиться диалоги с боссами, так что воспользуемся функцией draw_text() и внедрим нужный шрифт в игру (как это сделать, я расскажу позже). Картинку будем выводить в объекте (с помощью sprite_index), чтобы не создавать кучу бэкграундов.
3. Титульный экран
Логотип игры состоит из двух кадров, значит будем использовать объект. В MFF не предусмотрена смена управления, но нам придется это сделать. Поэтому вместо надписи "press start" мы сделаем меню из двух пунктов (start, controls). Как мы будем это делать -- разговор отдельный.
4. Выбор персонажа
Статичная картинка плюс анимированный квадрат, с помощью которого мы выбираем персонажа. Соответственно, картинка это либо бэкграунд, либо объект, плюс объект с квадратом.
5. Заставка перед уровнем
Анимированный персонаж и статичная картинка. На карте мигающим кружком отображается территория, на которой будет происходить этап. Чтобы сэкономить на графике, мы можем сделать одну картинку с картой и надписью "round", и добавлять на нее кружок и номер уровня. Так как кружок мигающий (то есть два кадра как минимум), будем делать это через объект. Номер уровня можем просто нарисовать (draw).
6. Игровой уровень
Так. Прежде всего мы видим персонажа игрока и врагов. Понятно, что они анимированы, поэтому для них будем использовать объекты. Интерфейс же можно просто нарисовать (draw), тем более что он использует тот же шрифт, что и в предистории. В случае попадания по врагу поверх последнего отображается спецэффект, который мы также будет реализовывать через объект.
Обращаю внимание, что некоторые части бэкграунда анимированы. Значит придется использовать объекты и sprite_index (кстати, может быть есть какое-то другое решение в данном случае?).
Во время бонусных участков уровня на Коди катятся бочки. Разрушенные бочки оставляют power_up. С обоими придется проверять столкновение, и хоть power_up не анимирован, придется использовать объекты.
Почти во всех битэмапах сражения происходят на статичном экране, камера же движется в основном во время передвижения между подобными участками. Рука-Go подсказывает игроку, что надо двигаться вперед, а наличие двух кадров подсказывает разработчику, что придется использовать отдельный объект.
Пол под Коди провалился и он упал в дыру. Значит помимо дальнего бэкграунда придется использовать и передний.
Перед схваткой с боссом происходит диалог с выбором ответа. Будем рисовать с помощью draw_text
7. Конец игры
Две картинки с геймовером и continue. На обеих по анимированному персонажу, большие синии надписи и выбор "yes|no". Соответственно, два объекта и draw_text.
Объекты
Итак. Мы более-менее осознали, с помощью чего придется реализовывать графику. Теперь пройдемся по объектам.
Из очевидных по скриншотам:
- Коди (персонаж, управляемый игроком)
- Штаны Коди
- Враг
- Штаны врага
- Спецэффект при ударе
- Бочка
- Power_up
- Рука-Go
- Отрисовка интерфейса
- Задний бэкграунд
- Передний бэкграунд
- Анимированные части бэкграунда
- Отрисовка текста в диалогах и предыстории
- Выбор в диалогах и на экране continue
- Квадрат на экране выбора персонажа
- Вывод карты перед уровнем
- Вывод номера этапа на экране карты
- Мигающий кружок на карте уровня
- Логотип MFF
- Меню на титульном экране
- Вывод картинок в предыстории
- Анимированные персонажи перед уровнем и на экранах continue и геймовер
Из менее очевидных, но обязательных:
- Масштабирование
- Сохранение настроенных кнопок управления
- Статистика (выбранный персонаж, текущий этап, уровень Коди, количество экспы, энергия и так далее)
Я специально не объединял пока схожие по назначению объекты, потому что логика при объединении может быть разной, в зависимости от выбранного решения по выводу картинки, например. Пока оставим их скопом в одном списке.
Комнаты
Подход будет тот же, что и при составлении перечня объектов. Какие-то комнаты можно будет объединить, а пока просто приведем полный список:
- Заставка
- Предыстория
- Титульный экран
- Экран смены управления
- Экран выбора персонажа
- Экран перед уровнем
- Игровой уровень
- Экран с геймовером и continue
В заставке у нас выводится только название компании-разработчика и его можно было бы объединить с комнатой, где будет показываться предыстория. Однако, часто в играх предыстория идет после длительного бездействия игрока на титульном экране, и ее в отличие от заставки можно пропустить. Именно по этой причине я выделил заставку в отдельную комнату.
Итого
Мы прикинули почти полный состав объектов и комнат, а также обозначили решения по выводу разных графических элементов.
Не сомневаюсь, что все мои размышления и деления на объекты и комнаты -- спорны. Как обычно приглашаю всех желающих в комментарии.
- 08 февраля 2012, 17:22
Назревает очень много упражнений, вырабатывающие определенные навыки. Котирую. Интересно, как много времени займет разработка проекта у неопытных пользователей вроде меня. Даже с условием, что читателя будут водить за ручку.
Если мы пойдем обычным путем в плане анимаций, то не очень долго. А вот если все-таки будет применять мои скрипты для боевых анимаций, то боюсь затянется. Из-за сложности восприятия и критики.
Хотя пока все увлечены предстоящим гаминатором критики будет не много )) А когда мы доделаем все до конца, то будет уже поздно ))
Дело в том, что в моей игре абсолютно все персонажи (что враги, что хорошие) использовали один набор тел и, соответственно, анимаций. Отличилась они только головой. При этом количество отдельных кадров в одну сторону (персонаж смотрит направо) было около 200. И создание своих собственных методов для хранения и прокручивания анимации было для меня критично.
MFF, в принципе, не требует таких нагромождений. У врагов всего по одному удару, да и у главных героев анимаций не так много.
Поэтому я думаю еще. Может быть будем тупо пихать отдельные анимации в спрайты и все.
Ну, до Гаминатора ещё полторы недели, так что пока не очень все и увлечены :-)
Пост понравился, вроде всё неплохо расписано, поскольку я не играл в оригинал, то сложно сказать, насколько правильно расписаны сцены/комнаты, но с точки зрения опыта вроде всё ок.
И я бы ещё сделал Kozinaka style ссылки на разные части цикла статей.
Ссылки сделаю попозже.
Добавил содержание. Может не такое симпатичное как у Козинаки, но функциональное ))
Эхх, а я вот уже бросаю потихоньку GM, на гаминаторе только воспользуюсь последний раз, так как очень быстро и удобно, ну и знаю давно, а потом на флеш а там и на более серьезные двиглы перехожу. Уроки полезные, хоть и считаю себя ветераном ГМ но читать все равно интересно) Кстати считаю ГМовский графический редактор самым лучшим, особенно удобно делать анимацию)
Кстати делал уже чтото наподобие битемапа в ГМ
А я на love ухожу потихоньку. :)
ты писал про анимированный фон, я подумал, что не обязательно анимировать его весь целиком, а достаточно посадить анимированные объекты (вывески да надписи с прозрачным фоном) в нужных местах.
возможно ты так и думаешь, потому что из
непонятно хочешь ли ты каждый раз перерисовывать весь фон или конкретные объекты)
Да, я так и предлагаю, сажать анимированные объекты.
Надо будет уточнить в тексте, а то действительно непонятно.
вообще молодец, информативно и подробно, лови плюсы во все части)
З.Ы. у тебя уже аж пять штук, а у меня только две (!!!) срочно догоняю =_____=
Спасибо!
Описывать уж больно муторно все это. Вчера вот сделал за час примерчик, сегодня с утра описываю, все никак не допишу.
П.С.
У тебя две, что у меня десять )) Так что не переживай ))
да, сам с этим сталкиваюсь, каждую часть пишу по 4-5 часов...
ну как сказать, твои в сумме все равно больше моих :D
тебе еще много осталось? а то я стараюсь работать по максимуму и умещать как можно больше, мне еще 2-3 части осталось
Ох... У меня конца не видно ))) Видимо я собираюсь через чур разжевывать.
Сегодня постараюсь выложить первую статью с кодом и посмотреть на отзывы. Было бы здорово, если можно писать более крупно.
Ваш Граммар-наци.
И в комментах не исправишь все равно ))
Эх, а почему комментарии отсюда не отображаются на глагне?
Не знаю ((
Я и смотрю чего это никто не комментирует, думал Вердана забрал всю аудиторию )))
апдейт
Вроде отображаются.
Уже появились.
Что-то расколбас на сайте творится недетский :(
Gyt оптимизирует работу сайта, видимо теперь "последние комменты" обновляются не сразу, а с некоторой периодичностью.
да кого я забрал, я сам там пишу больше чем остальные :D