Skip to content

Atlas3777/tryengine

Repository files navigation

tryengine

tryengine — небольшой 3D ECS-движок на C++20.

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

  • Core: EnTT (ECS).
  • Graphics: SDL GPU (низкоуровневая абстракция над Vulkan/D3D12/Metal).
  • UI: ImGUI (Docking branch).
  • Format Loading: tinygltf (GLB/GLTF) и stb (Image loading/writing).

Детали реализации

  • Decoupled Logic: Архитектура разделена на game_client и game_server. Ядро движка не имеет жесткой привязки к графическому контексту, что позволяет билдить headless-сервер.
  • Artifact-based Asset Pipeline: Ресурсы не грузятся «как есть». Вместо этого реализован пре-процессинг: из GLB вытягиваются меши и текстуры, которые конвертируются в кастомные бинарные форматы (артефакты). Это минимизирует время загрузки в рантайме.
  • Tooling: Редактор интегрирован в общую систему через ImGui Dockspaces, включая Inspector, Hierarchy и Viewports.

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

├── editor/         # Редактор и инструменты импорта (tinygltf, stb)
├── engine_source/  # Ядро (Core, Graphics, Resources)
├── engine_content/  # Базовые ресурсы движка
├── game/           # Ресурсы и игровая логика
├── game_client/    # Клиентская часть
└── game_server/    # Серверная часть (headless)

Build & Run

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

Important

Убедитесь, что в системе установлен glslangValidator (входит в Vulkan SDK). Без него компиляция шейдеров невозможна.

Сборка

# Сборка и запуск из корня проетка (рекомендуется Ninja)
cmake -B build -G Ninja
cmake --build build

# Запуск редактора
./build/editor/editor

Разработка ведется на Fedora Linux. Кроссплатформенность: заложена через SDL3, требует тестов на других OS.

Roadmap

  • Расширение пайплайна SDL GPU (PBR, тени).
  • Многопоточность
  • Физическая система на XPBD(Extended Position Based Dynamics)
  • Сетевой код (Client-side prediction).
Image

About

3D ECS-based game engine written in C++ using SDL3

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors