The chapter
В этом репозитории располагается мой самый большой game-dev проект.
The chapter - пошаговая стратегия по своим механикам похожая на серию игр Civilization и Humankind.
Код разделен на 3 части:
- движок (оболочка над LWJGL с удобной системой создания объектов, прорисовкой, управления системными объектами и т.д.)
- The chapter (собственно сама игра, для работы необходимо подключить движок)
- Тестовый сценарий (код для отдельного jar файла со всеми ресурсами и настройками для игры)
Необходимые библиотеки
- joml (версия ниже 1.10)
- lwjgl
- assimp
- glfw
- nanovg
- openal
- opengl
- stb
Все вышеперечисленное можно скачать тут.
Сборка
- Клонируем репозиторий
- Устанавливаем Ant и JDK
- Устанавливаем переменную среды JAVA_HOME в путь, где ледит jdk
- Переходим в папку TheChapter репозитория
- Запускаем там консоль
- Используем команды:
ant
ant Starter
- Все работает
The chapter
Теперь подробнее о самой игре.
Итак, у нас есть карта - разделенные на клетки, на каждой клетке может что-нибудь находится: город, отряд солдат, элемент ландшафта.
Игроки делают свой ход по очереди. Во время своего хода можно двигать свои армии на фиксированное колличество клеток, устраивать сражения с соперником и т.д.
Главное мысль, которой я придерживался при разработке - универсальность кода, т.е. возможность быстро и эффективно добавлять любые нововведения в игру. Для этого разработана система
сценариев, о ней далее.
Основные игровые механики
Юниты
Юнит - это группа "людей", которых игрок может двигать по карте и выполнять с их помощью различные действия. Например, отряд стрелков считается одним юнитом.
Вот юнит игрока выделен, красным отмечен радиус стрельбы
Теперь посмотрим, что могут делать юниты.
Тут юнит двигается
А тут два юнита перестреливаются
Здесь видна анимация у юнита сразу после сражения
До этого мы видели юнит линейной пехоты, он пренадлежит к классу стрелков, но есть еще и юниты ближнего боя, посмотрим их.
А вот юнит ближнего боя - мечник
Кстати, можно легко менять колличество человечков, которые отображаются
А вот большая баталия
Ландшафт
Помимо ровной карты можно сделать холмистую, гористую и вообще какую мы захотим, ибо есть встроенная система height-map. И колличество полигонов в одной клетке регулируется. А также можно установить цвет или комбинацию цветов для карты.
Пейзаж 1
Теперь больше будет полигонов.
Пейзаж 2
Включим цветовую интерполяцию.
Пейзаж 3
Сценарии
Сценарий состоит из генератора карты, объектов на карте, набора игровых правил. Т.е. сама игра по умолчанию никакого игрового контента не имеет (кроме нескольких основных механик), все лежит в сценарии. При запуске игры вам предлагается выбрать сценарий, который лежит упакованный в jar-файл, таким образом игрок может по своему желанию подгрузить то, что захочет. Но главное система сценариев дает неограниченные возможности игровому сообществу для моддинга, любой человек сможет добавить в игру все, что захочет. Это прямо как моды для minecraft, только не нужно устанавливать никакого стороннего ПО (вроде forge), все легко, доступно и удобно.
WIP
Тут можно посмотреть игровые механики, которые сейчас находятся на ранней стадии разработки.
Иерархии сущностей
Далее представленны несколько диаграмм, на которых показаны связи различных внутриигровых объектов. Для какждого элемента диаграммы в коде есть соответствующие инструменты для обработки и добавления. Так что для создания нового контента вам достаточно унаследовать свой класс от нужного.