Все статьи / Основной проект курса: 2D игра

Цель проекта - самостоятельно написать комплексную программу, клон небольшой игры


Как выбрать жанр и ограничения

Есть три популярных варианта:

  1. (лёгкий) простые игры со свободным перемещением
  2. (лёгкий или средний) клеточная аркадная/логическая игра
  3. (средний или сложный) комплексная игра с игровой картой

Простые игры со свободным перемещением

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

Клеточная (аркадная или логическая) игра

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

Скриншот

Примеры игр:

Известные аркадные игры зачастую имеют небольшие, но крайне важные для процесса игры детали. Например, в игре “Сапёр” (Miner) мины расставляются после первого хода, поэтому проиграть в неё на первом ходу невозможно. Поведение привидений в классической игре PacMan настолько сложное, что удостоилось целой статьи “Алгоритм поведения привидений в игре Pac-Man”. Реализация таких деталей делает разработку на уровень сложнее.

Комплексная игра с игровой картой

Для игр такого жанра требуется реализовать множество деталей:

  • свободное перемещение персонажа
  • враги и их интеллект
  • бонусы, которые можно собирать
  • статичное окружение

Такую игру писать интереснее, но потребуется гораздо больше времени и усилий, в том числе по полировке и подготовке графических ресурсов. Также потребуется прочитать большое количество статей и посмотреть большое число примеров в Интернете.

Скорее всего, будете иметь дело со следующими сложностями:

  • генерация случайных чисел и связанных цепочек чисел
  • обработка физики в 2D мире
  • поиск пути на 2D карте
  • программирование анимаций
  • подготовка графических ресурсов
  • программирование элементов интерфейса (меню, кнопок, индикаторов)
  • программирование смены режимов игры (стартовый экран, игра, конец игры)
  • программирование движения и атаки вражеских персонажей
  • подсчёт урона, очков и других параметров для врагов и персонажа

Примеры игр такого жанра:

  • Mario
  • Doodle Jump