Все статьи Основной проект курса: 2D игра
Цель проекта - самостоятельно написать комплексную программу, клон небольшой игры
Как выбрать жанр и ограничения
Есть три популярных варианта:
- (лёгкий) простые игры со свободным перемещением
- (лёгкий или средний) клеточная аркадная/логическая игра
- (средний или сложный) комплексная игра с игровой картой
Простые игры со свободным перемещением
Сложность разработки такой игры сопоставима с разработкой клеточной: будет меньше особенностей и разнообразия, но больше векторной алгебры и обработки столкновений. Примеры игр такого жанра:
- Flappy Bird
- Asteroids
- Snowballs
- Air Hockey
- Ping Pong
- Осмос (Osmos)
Клеточная (аркадная или логическая) игра
Для реализации такой игры хватит базового курса по SFML и примера, в котором реализован клон PacMan. Потребуется смекалка, чтобы решить небольшие математические проблемы и организовать код.
Примеры игр:
- PacMan
- Sokoban
- Сапёр
- Тетрис (Tetris)
- Battle City
- Chess (Шахматы)
- Checkers (Шашки)
- Go-Moku
- Sea Battle (Морской бой)
- Arkanoid
- Space Invanders
- Lines
Известные аркадные игры зачастую имеют небольшие, но крайне важные для процесса игры детали. Например, в игре “Сапёр” (Miner) мины расставляются после первого хода, поэтому проиграть в неё на первом ходу невозможно. Поведение привидений в классической игре PacMan настолько сложное, что удостоилось целой статьи “Алгоритм поведения привидений в игре Pac-Man”. Реализация таких деталей делает разработку на уровень сложнее.
Комплексная игра с игровой картой
Для игр такого жанра требуется реализовать множество деталей:
- свободное перемещение персонажа
- враги и их интеллект
- бонусы, которые можно собирать
- статичное окружение
Такую игру писать интереснее, но потребуется гораздо больше времени и усилий, в том числе по полировке и подготовке графических ресурсов. Также потребуется прочитать большое количество статей и посмотреть большое число примеров в Интернете.
Скорее всего, будете иметь дело со следующими сложностями:
- генерация случайных чисел и связанных цепочек чисел
- обработка физики в 2D мире
- поиск пути на 2D карте
- программирование анимаций
- подготовка графических ресурсов
- программирование элементов интерфейса (меню, кнопок, индикаторов)
- программирование смены режимов игры (стартовый экран, игра, конец игры)
- программирование движения и атаки вражеских персонажей
- подсчёт урона, очков и других параметров для врагов и персонажа
Примеры игр такого жанра:
- Mario
- Doodle Jump