Найти тему
Студия CIDPRIM

Полная инструкция разработки игры Super Mario Bros. Введение - Разбор задачи.

Данная статья посвящена разработке точной копии игры Super Mario Bros с использование языка Python и модуля Pygame.

Изображение 1. Заставка
Изображение 1. Заставка

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

Super Mario Bros - видеоигра жанра платформер, разработанная и выпущенная компанией Nintendo для приставки Famicom (на территории стран СНГ была более известа приставка клон Dendy по сути являющаяся неофициальным клоном). Можно сказать, что на момент выхода, в 1985 году, игра Супер Марио Брос была самой удачной в этом жанре.

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

Начнём!

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

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

Каждая задача в отдельности довольно проста, самое сложное - это объединить все части в единое целое.

Собственно, что нужно сделать:

  1. Разработать физический движок для организации перемещения объектов игры;
  2. Добавить карту уровня и механизмы взаимодействия объектов с ней;
  3. Добавить отрисовку уровня тайлами (изображения блоков и элементов декораций);
  4. Добавить спрайтовую анимацию персонажа;
  5. Добавить пользовательский интерфейс с окнами заставки, загрузки уровня и самим уровнем;
  6. Добавить переходы между уровнями;
  7. Добавить бонусные блоки и организовать взаимодействие с персонажем;
  8. Добавить врагов и организовать взаимодействие с персонажем;
  9. Добавить активные элементы уровня (подвижные платформы, трамплины и т.д.);
  10. Оцифровать все уровни в соответствии с оригинальной игрой.

Что бы лучше понимать объём работ нужно учесть:

1. В игре 8 уровней с 4 подуровнями в каждом. Так же большинство подуровней имеют дополнительные локации. В среднем предстоит оцифровать 32 локации;

2. Необходимо реализовать все анимации главного героя: стоит, бежит, прыгает, приседает, стреляет, плавает, взбирается, умирает;

3. В игре 5 бонусов, каждый из которых имеет уникальную механику;

4. В игре 14 видов врагов. Каждый со своей механикой, хотя большинство из них повторяются;

5. В игре около 6 активных элементов карты, таких как передвижные платформы, платформы весы, трамплины и так далее.

Для того, что бы всё вышеперечисленное объединить в единое целое, требуется выделить общие механики. Например, не смотря на то, что в игре 14 видов врагов, все они построены с использованием вариаций из 5-7 механик.

Для того, что бы выявить все закономерности, была сделана пробная версия, разработка которой заняла в целом около 3 дней разработки.

Можно посмотреть её обзор:

Инструкция по установке Pygame:

На этом данная часть будет закончена. В следующей части разберёмся с физикой игры.

mario
938 интересуются