Реализация простого sidescroller-a, с графикой на SDL2.
Цель понять, как работать с графическими библиотеками, в частности с SDL2, строить игровую логику и физику, а также создавать интерфейс и обрабатывать пользовательский ввод.
Поставлена цель реализовать:
- простую игровую логику (перемещение камеры, пользовательский интерфейс, изменение состояния игрового мира)
- игровую физику (гравитацию, коллизии, взаимодействия с объектами и противниками, и т.д.)
- обработку пользовательского ввода и передачу его в игру
- искуственный интеллект противника
- Скачать репозиторий
- Установить vcpkg. Для этого перейти в директорию vcpkg_install и запустить скрипт:
- для windows install.cmd
- для unix install.sh
- Установить необходимые библиотеки. Для этого:
- Либо из директории vcpkg_install запустить скрипт:
- для windows pkg_install.cmd
- для unix pkg_install.sh
- (Предпочтительный вариант) Либо открыть соответствующий файл в текстовом редакторе и установить библиотеки вручную, с учетом используемой операционной системы
- как пример:
./vcpkg/vcpkg.exe install sdl2:x64-linux
- Либо из директории vcpkg_install запустить скрипт:
- Запустить сборку через cmake в корневой директории проекта:
cmake -B build cmake --build build
- Файл main.cpp, где создаются все необходимые объекты и запускается бесконечный игровой цикл
- Класс самой игры
- Класс управляемого игроком персонажа
- Класс для работы с текстурами
- Класс для работы с окружением (миром)
- Классы для работы с противниками
- Класс для работы с камерой
- Класс для работы с пользовательским вводом
- Класс для работы с пользовательским интерфейсом
- Класс для работы с меню
- Класс для работы с аудио (второстепенная задача)
- Директория assets: содержит спрайты для отображения игровых объектов.
- Директория headers: содержит header-файлы.
- Директория src: содержит исходный код проекта.
- Директория vcpkg_install: содержит скрипты для установки vcpkg, а также необходимых библиотек для windows и unix-подобрыйх систем
- Файл CMakeLists.txt для установки программы.
- Сборка самого проекта, подключение необходимых библиотек
- README. Описание проекта, список поставленных и реализованных целей
- Основной игровой цикл
- Обработка пользовательского ввода, передача его в игровой цикл
- Класс персонажа. Изменение состояния персонажа в соответствии с вводом (перемещение в пространстве, прыжки, стрельба)
- Менеджер текстур, "натягивание" спрайтов на персонажа, противников, тайлы окружения
- Коллизии (игрока с окружением, с противниками, противников с окружением и игроком, и т.д.)
- Гравитация (Воздействует на игрока)
- Анимация спрайтов
- Менеджер для работы с камерой
- Бесконечный повторяющийся бэкграунд с эффектом параллакса
- Выстрелы прожектайлами (без анимации взрыва)
- Пользовательский интерфейс (частично)
- Противники, которые наносят урон, получают урон и погибают (без анимации и эффектов)
- Главное меню (Без сохранения и старта новой игры)
- Искуственный интеллект противников
- Менеджер для работы с окружением (контроль состояния, сохранение состояния)
- Сохранение и загрузка с помощью файлов
- Аудио (Второстепенная задача)
- Сделать тайлы более простым классом (Второстепенная задача)
- Рефакторинг кода
P.S. Все ассеты для тестирования проекта взяты из выдачи гугла.