Данная статья посвящена разработке точной копии игры Super Mario Bros с использование языка Python и модуля Pygame.
Изучать программирование гораздо приятней, если есть интересные задачи. Прежде чем придумать и написать свою игру, необходимо потренироваться. Для этих целей идеально подойдёт проект, который хорошо известен и для которого можно собрать достаточно материала, что бы основной задачей было именно написание кода.
Super Mario Bros - видеоигра жанра платформер, разработанная и выпущенная компанией Nintendo для приставки Famicom (на территории стран СНГ была более известа приставка клон Dendy по сути являющаяся неофициальным клоном). Можно сказать, что на момент выхода, в 1985 году, игра Супер Марио Брос была самой удачной в этом жанре.
Для разработки данной игры будут использованы изображения и звуки, которые удалось найти на просторах интернета. Так же, всегда есть возможность поиграть на эмуляторе NES в оригинальную игру, что бы лучше разобраться со всеми игровыми механиками. Так же, особенностью разработки будет являться процедурный стиль программирования, без использования объектов и чего-либо подобного.
Начнём!
Сразу стоить отметить что весь код игры будет написан в процедурном стиле, без использования классов и объектов. Во-первых потому что оригинальная игра была сделана таким же образом, а во-вторых, потому что без знания объектно-ориентированного программирования разобраться в коде будет сложнее.
Прежде чем приступить к написанию кода, нужно разобраться, что собственно предстоит сделать. Весь процесс разработки будет разбит на части.
Каждая задача в отдельности довольно проста, самое сложное - это объединить все части в единое целое.
Собственно, что нужно сделать:
- Разработать физический движок для организации перемещения объектов игры;
- Добавить карту уровня и механизмы взаимодействия объектов с ней;
- Добавить отрисовку уровня тайлами (изображения блоков и элементов декораций);
- Добавить спрайтовую анимацию персонажа;
- Добавить пользовательский интерфейс с окнами заставки, загрузки уровня и самим уровнем;
- Добавить переходы между уровнями;
- Добавить бонусные блоки и организовать взаимодействие с персонажем;
- Добавить врагов и организовать взаимодействие с персонажем;
- Добавить активные элементы уровня (подвижные платформы, трамплины и т.д.);
- Оцифровать все уровни в соответствии с оригинальной игрой.
Что бы лучше понимать объём работ нужно учесть:
1. В игре 8 уровней с 4 подуровнями в каждом. Так же большинство подуровней имеют дополнительные локации. В среднем предстоит оцифровать 32 локации;
2. Необходимо реализовать все анимации главного героя: стоит, бежит, прыгает, приседает, стреляет, плавает, взбирается, умирает;
3. В игре 5 бонусов, каждый из которых имеет уникальную механику;
4. В игре 14 видов врагов. Каждый со своей механикой, хотя большинство из них повторяются;
5. В игре около 6 активных элементов карты, таких как передвижные платформы, платформы весы, трамплины и так далее.
Для того, что бы всё вышеперечисленное объединить в единое целое, требуется выделить общие механики. Например, не смотря на то, что в игре 14 видов врагов, все они построены с использованием вариаций из 5-7 механик.
Для того, что бы выявить все закономерности, была сделана пробная версия, разработка которой заняла в целом около 3 дней разработки.
Можно посмотреть её обзор:
Инструкция по установке Pygame:
На этом данная часть будет закончена. В следующей части разберёмся с физикой игры.