Skip to content

Fleack/Minecraft_cpp

Repository files navigation

🎮 MinecraftCpp

C++ CMake Platform Status

Воксельная игра на C++23, вдохновлённая Minecraft, с собственными наработками и современным подходом

О проектеАрхитектураСборкаДорожная карта


📋 О проекте

MinecraftCpp — это воксельная игра в духе Minecraft, разрабатываемая на современном C++23. Проект объединяет классические идеи Minecraft с собственными механиками и технологиями, демонстрируя чистую архитектуру, использование Entity Component System (ECS), продвинутый рендеринг через Magnum Engine и асинхронную обработку.

Проект находится в активной разработке и постоянно эволюционирует, добавляя новые возможности и улучшая существующие системы.

✨ Возможности

🎨 Графика и рендеринг

  • Высокопроизводительный воксельный рендеринг
  • Система текстурирования блоков
  • Оптимизация видимых граней
  • Шейдерная система на GLSL
  • Камера от первого лица

🌍 Игровой мир

  • Процедурная генерация ландшафта
  • Чанковая архитектура мира
  • Асинхронная загрузка и генерация контента
  • Гибкая система типов блоков
  • Динамическое управление видимостью

🏗️ Техническая база

  • Архитектура Entity Component System
  • Client-Server разделение
  • Модульная кодовая база
  • Система событий
  • Расширяемая система компонентов

🔧 Инструменты разработки

  • Продвинутое логирование
  • Автоматический crash reporting
  • Мониторинг производительности
  • Встроенная UI система

🏛️ Архитектура

┌─────────────────────────────────────────────────────────┐
│                    MinecraftCpp                          │
├──────────────────┬──────────────────┬───────────────────┤
│     Client       │      Server      │      Shared       │
│   (Rendering)    │   (Game Logic)   │   (Core/ECS)      │
├──────────────────┼──────────────────┼───────────────────┤
│ • RenderSystem   │ • WorldGen       │ • EntityManager   │
│ • CameraSystem   │ • NetworkServer  │ • EventBus        │
│ • UISystem       │ • ChunkManager   │ • Components      │
│ • InputSystem    │ • Physics        │ • Logger          │
│ • MeshBuilder    │ • NetworkSystem  │ • Chunk/Block     │
└──────────────────┴──────────────────┴───────────────────┘
          │                 │                    │
          └─────────────────┴────────────────────┘
                            │
                    ┌───────┴────────┐
                    │  Dependencies  │
                    ├────────────────┤
                    │ • Magnum       │
                    │ • FastNoise2   │
                    │ • concurrencpp │
                    │ • spdlog       │
                    │ • ENet         │
                    └────────────────┘

📦 Модульная структура

Client — Клиентская часть

Отвечает за рендеринг, визуализацию и взаимодействие с пользователем:

  • Системы рендеринга и камеры
  • Управление шейдерами и текстурами
  • Построение мешей для чанков
  • UI и пользовательский ввод
  • Клиентское представление игрового мира

Server — Серверная часть

Управляет игровой логикой и серверными процессами:

  • Генерация и управление миром
  • Сетевое взаимодействие
  • Физика и коллизии
  • Авторитетная игровая логика

Shared — Общая библиотека

Содержит код, используемый и клиентом, и сервером:

  • Entity Component System
  • Базовые компоненты (трансформация, физика, игрок)
  • Система событий
  • Определения блоков и чанков
  • Утилиты (логирование, хеширование, структуры данных)

🛠️ Технологический стек

Языки и стандарты

  • C++23 — современный стандарт языка
  • GLSL — шейдерный язык для графики

Основные библиотеки

Библиотека Назначение
Magnum Мощный 3D графический движок
Corrade Фундаментальные утилиты
FastNoise2 Процедурная генерация шума
concurrencpp Асинхронность и корутины
spdlog Высокопроизводительное логирование
cpptrace Трассировка стека вызовов
GLM Математические операции
GLFW Управление окнами и контекстом
ENet Сетевое взаимодействие (UDP)
Hopscotch Map Оптимизированная хеш-таблица

Инструменты сборки

  • CMake — система конфигурации проекта
  • Conan — менеджер зависимостей
  • Ninja/Make — системы сборки

📥 Требования

Системные требования

  • ОС: Windows 10/11
  • Компилятор: Поддержка C++23 (GCC, Clang, MSVC или MinGW-w64)
  • GPU: Поддержка OpenGL 4.5 или выше

Инструменты разработки

  • CMake (3.16+)
  • Conan (менеджер пакетов)
  • Git (для работы с репозиторием и submodules)
  • Python (для работы Conan)

🔨 Сборка проекта (TODO: Update)

1. Клонирование репозитория

git clone <repository-url>
cd Minecraft_cpp
git submodule update --init --recursive

2. Установка зависимостей

# Установка Conan (если не установлен)
pip install conan

# Настройка профиля
conan profile detect --force

# Установка зависимостей
conan install . --build=missing -s build_type=Debug

3. Конфигурация CMake

# Windows
cmake --preset=default -DCMAKE_BUILD_TYPE=Debug

# Linux
cmake -B build -DCMAKE_BUILD_TYPE=Debug

4. Сборка

# Запустите сборку в вашей директории build
cmake --build <build-directory>

5. Запуск

После успешной сборки исполняемые файлы будут находиться в директории bin:

# Клиент
./bin/Client

# Сервер
./bin/Server

🎮 Использование

Управление

Игра использует стандартные элементы управления для игр от первого лица:

  • Движение: WASD
  • Взгляд: Мышь
  • Прыжок: Пробел
  • Взаимодействие: Левая/Правая кнопка мыши
  • Выход: ESC

Логи и отладка

Система логирования автоматически сохраняет информацию о работе приложения в директории logs/. Логи помогают отслеживать производительность и выявлять проблемы.


📁 Структура проекта

Minecraft_cpp/
├── client/              # Клиентская часть
│   ├── assets/          # Игровые ресурсы
│   │   ├── textures/    # Текстуры блоков и объектов
│   │   └── ...          # Другие ресурсы
│   ├── include/         # Заголовочные файлы
│   │   ├── core/        # Ядро клиентского приложения
│   │   ├── render/      # Системы рендеринга
│   │   ├── systems/     # Клиентские игровые системы
│   │   └── world/       # Работа с миром
│   ├── shaders/         # GLSL шейдеры
│   └── src/             # Реализация
│
├── server/              # Серверная часть
│   ├── include/
│   │   ├── systems/     # Серверные системы
│   │   └── world/       # Генерация и управление миром
│   └── src/             # Реализация
│
├── shared/              # Общая библиотека
│   ├── include/
│   │   ├── core/        # Базовые системы (логирование, отладка)
│   │   ├── ecs/         # Entity Component System
│   │   │   ├── component/    # Компоненты
│   │   │   ├── events/       # Система событий
│   │   │   └── system/       # Базовые интерфейсы
│   │   ├── utils/       # Вспомогательные утилиты
│   │   └── world/       # Определения мира и блоков
│   └── src/             # Реализация
│
├── extern/              # Внешние зависимости (git submodules)
│   ├── magnum/          # Графический движок
│   ├── magnum-extras/   # Расширения (UI и т.д.)
│   ├── magnum-plugins/  # Плагины для загрузки ресурсов
│   ├── corrade/         # Базовые утилиты
│   ├── enet/            # Сетевая библиотека
│   └── ...              # Другие зависимости
│
└── cmake/               # Модули сборки
    └── ...              # Конфигурационные файлы

🚀 Дорожная карта

Проект продолжает развиваться. Ниже представлены основные направления работы:

✅ Базовый функционал

  • Архитектура Entity Component System
  • Рендеринг воксельного мира
  • Процедурная генерация ландшафта
  • Чанковая система
  • Камера и базовое управление
  • Текстурирование блоков
  • Системы логирования и отладки

🚧 В активной разработке

  • Серверная архитектура
  • Сетевое взаимодействие
  • Физика и система коллизий
  • Освещение мира
  • Визуальные улучшения

📋 Планируется

  • Геймплей: Система инвентаря, крафтинг, взаимодействие с блоками
  • Мир: Биомы, структуры, разнообразие ландшафта
  • Сущности: Мобы, NPC, искусственный интеллект
  • Звук: Звуковая система и окружение
  • Производительность: Оптимизация рендеринга, системы LOD
  • Сохранения: Система сохранения и загрузки мира
  • Расширяемость: API для модификаций

Список постоянно дополняется по мере развития проекта


Сделано с ❤️ на C++23

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published