Первая игра PacManRun

PacManRun — моя первая мелкая игра на своем движке(для проверки возможностей движка и своих сил).

Описание игры:

Простой раннер. Основная цель при помощи прыжков добраться до конца уровня, избегая препятствия на пути.

Состояние: В разработке

Платформы:

  • Linux — основная платформа разработки;
  • Windows — периодически делаю сборку и тестирую;
  • Android — периодически делаю сборку и тестирую.

Реализовано:

Главное меню. Коллизия с тайловой картой. Движение, прыжок персонажа. Уровней 19 — как бы временные.

Взаимодействие с игровыми объектами:

  • Thorn — смерть;
  • Ice — ускорение персонажа;
  • Gum — замедление персонажа;
  • Spring — пружина;
  • Portal — портал;
  • Score — игровые очки (не полная реализация);
  • Bonus — превращение персонажа в убийцу призраков;
  • Ghost — призрак, при столкновении смерть.

Скриншоты игры:

PacManRun1

PacManRun2

 

PacManRun3

 

PacManRun4

 

PacManRun5

 

Видео:

 Сборка демки, с багами 🙂 , под Windows:

Скачать

Как бы игровой движок

На разработку игрового движка ушло примерно 5 месяца, при учёте, что он писался в свободное время и то не всегда.

В движке реализовано не всё, есть ещё над чем работать.

В данный момент реализованы следующие классы для удобства программирования графики:

  • Mesh — для хранения вершин(по умолчанию создается два треугольника);
  • Shader — для загрузки, компилирования, использования шейдерных программ;
  • Texture — для загрузки и использования картинок;
  • Sprite — спрайт, для вывода картинки, анимации.

Классы для удобства программирования игровой логики:

  • Transformer — для манипуляции игровыми объектами(движение, вращение, масштабирование, задание центральной точки объекта);
  • Camera — игровая камера, 3 видов(свободная, направленная, привязанная за точкой);
  • ManagerKeyboard — для обработки клавиатуры;
  • ManagerMouse — для обработки мышки;
  • Setting — для изменения перспективы и области отображения;
  • ManagerTileMap — для работы с тайловой картой(загрузка, прорисовка, обработка коллизий);
  • GameScene — для загрузки игровой сцены, игровых ресурсов, обновление логики игровых объектов, прорисовка игровых объектов.

Менеджеры для работы со множествами:

  • ManagerMesh — хеш-список вершин(классов Mesh);
  • ManagerShader — хеш-список шейдеров(класcов Shader);
  • ManagerTexture — хеш-список текстур(классов Texture);
  • ManagerSprite — хеш-список спрайтов(классов Sprite);
  • ManagerGameObject — хеш-список игровых объектов(классов GameObject);
  • ManagerCamera — хеш-список камер(классов Camera).

Основной способ использования движка таков:

  • Объявление игровых классов, наследуемых от GameObject;
  • Реализация виртуальных методов для инициализации, обновление логики, прорисовки(Init, Update, Draw);
  • Перед запуском основного игрового цикла, загрузка игровой сцены(GameScene.Load);
  • В основном игровом цикле обновление логики, прорисовка игровой сцены(GameScene.Update, GameScene.Draw).

Скриншоты, тестирование игрового движка:

ScreenEngine1

 

ScreenEngine2

 

ScreenEngine3

 

Пояснение:

  • Скриншот1 — вывод тайловой карты, движение основного 2D персонажа, обработка коллизии с тайлами, движение активной камеры от первого лица;
  • Скриншот2 — вывод тайловой карты, движение основного 2D персонажа, обработка коллизии с тайлами, движение, вращение активной камеры от первого лица;
  • Скриншот3 — вывод тайловой карты, движение основного 2D персонажа, обработка коллизии с тайлами, переключение на камеру от третьего лица, вращение активной камеры.

Используемые клавиши:

1 — переключение на камеру от первого лица;

2 — переключение на камеру от третьего лица;

Влево/Вправо — движение 2D персонажа влево/вправо;

Пробел — прыжок 2D персонажа;

Левый клик мышки — перемещение позиции 2D персонажа;

w/s, a/d, c/v — движение камеры от первого лица вперед/назад, влево/вправо, вверх/вниз;

q/e, z/x, r/t — вращение камеры по Y, X, Z;

Сборка под Windows:

Скачать

Ссылка на github: https://github.com/12sd/QtEngineGL