Skip to content

Repository files navigation

cjoka Engine — Modular C++20 / OpenGL 4.6 / PhysX 5.5 Game Engine & Editor

cjoka — высокопроизводительный, модульный 3D-игровой движок и редактор уровней на C++20. Создан с упором на Data-Oriented Architecture (EnTT ECS), графику OpenGL 4.6 (Forward+ Light Culling, 3-Split CSM, TAA, SSR, VXGI, Nanite-Grade ClusterLOD), физическую симуляцию NVIDIA PhysX 5.5, нативный C++ геймплейный скриптинг и полноценный редактор сцен в стиле современных движков (Unity / Unreal Engine).


Возможности и Архитектура

1. Интерактивный Редактор Сцен (Scene Editor)

  • Свободная камера навигации (Flycam): Плавное перемещение на WASD / стрелочках, свободный обзор головы при зажатой ПКМ, панорамирование (СКМ), зум колёсиком мыши и ускорение на Shift.
  • Billboard-иконки и 3D-пирамиды видимости (Frustum): Камеры и источники света в сцене отображаются векторными Billboard-иконками, всегда ориентированными на наблюдателя. При выборе камеры проецируется точный 3D Wireframe Frustum с учетом угла обзора (FOV), соотношения сторон и направления взгляда.
  • Модульная система окон (Window menu): Все рабочие панели (Hierarchy, Inspector, Asset Browser, Atmosphere & Sky, Graphics / RTX, Nanite Metrics, Performance Stats) легко открываются и закрываются через меню Window или хоткеями Alt+1 .. Alt+8.
  • Режим предпросмотра игры (Play Game): Мгновенное переключение на игровую камеру (MainCamera), запуск PhysX симуляции персонажей и логики C++ скриптов. Скрытие панелей редактора и служебных гизмо для получения чистого экрана игры (Game View). Быстрый возврат в редактор по клавише ESC с полным восстановлением состояния сцены.
  • 3D Gizmo манипуляторы: Перемещение (1), вращение (2) и масштабирование (3) объектов сцены с поддержкой локального / глобального пространства и шаговой привязки (Snapping).
  • Сборка автономных игр (Standalone Builder): Встроенный генератор автономного исполняемого файла игры (F7 или меню Build) без редакторских зависимостей.

2. Графический конвейер (High-End OpenGL 4.6)

  • Nanite-Grade ClusterLOD (Virtual Geometry):
    • Автоматическая топологическая склейка вершин (Vertex Welding) при загрузке мешей с построением связной 2-manifold геометрии без швов и разрывов.
    • Высокоскоростной алгоритм Quadric Error Metrics (QEM Garland & Heckbert) с локальным графом смежности (vertTris) для мгновенной генерации LOD-уровней.
    • Защита границ (Boundary Quadrics) и контроль инверсии полигонов (Normal Flipping Guard) для безупречного сохранения силуэта тонких поверхностей, растительности и листьев.
    • Непрерывный расчет экранной погрешности в пикселях (errorThresholdPx) и бесшовный инстансинг на GPU (glDrawElementsInstanced).
  • Материалы PBR и растительность (Two-Sided Foliage):
    • Поддержка двусторонних материалов (twoSided) с аппаратным отключением Backface Culling и инверсией нормалей для обратных граней (if (!gl_FrontFacing) N = -N;).
    • Альфа-отсечение (Alpha Mask Cutout) для текстур листвы и прозрачных сеток.
    • Полный стек PBR Cook-Torrance (Albedo, Normal, Roughness, Metallic, AO, Emissive).
  • Forward+ Кластеризация источников света: Compute-шейдерный куллинг до 1024 точечных и прожекторных источников света по 3D-воксельной сетке фрустума (SSBO).
  • Cascaded Shadow Maps (CSM): 3-каскадные карты теней с расчетом границ по глубине вида, сглаживанием артефактов движения и 16-точечной Poisson Disk PCF фильтрацией.
  • Voxel Global Illumination (VXGI) & Light Probes: 3D-воксельная волюметрическая сетка освещения с конусным трейсингом (Cone Tracing) и сетка запекаемых световых зондов (Light Probe Grid).
  • Hi-Z Screen-Space Reflections (SSR): Трассировка лучей в экранном пространстве с адаптацией под шероховатость (Roughness) PBR-материалов.
  • Temporal Anti-Aliasing (TAA): Субпиксельное субсемплирование по последовательности Хэлтона (Halton 2,3), репроекция буфера скоростей (Motion Vectors / Velocity Buffer) и стабильный блендинг без мерцания при движении.
  • Атмосфера и пост-процессинг: Процедурный градиент неба с динамическим солнцем, экспоненциальный дистанционный туман, полноэкранный HDR-пайплайн с ACES Tonemapping, виньетированием и Bloom.

3. Физика NVIDIA PhysX 5.5

  • Character Controller (CCT): Кинематический контроллер персонажей для стабильного преодоления ступеней, склонов, гравитации и прыжков.
  • Rigid Bodies & Коллизии: Динамические и статические твердые тела, непрерывное определение столкновений (CCD) и триггеры.
  • Транспорт (Vehicle Physics): Модель автомобиля со сцеплением шин, заносом, ручным тормозом и подвеской.
  • PBD Cloth Simulation: Моделирование ткани (плащи, флаги) методом Position-Based Dynamics с реакцией на скорость ветра и движения.

4. C++ Геймплейный Скриптинг (GameScripts.h)

Движок предоставляет систему нативных C++ компонентов логики с полным доступом к ECS:

class PlayerMovement : public ScriptableEntity {
public:
    void onCreate() override { ... }
    void onUpdate(float dt) override {
        // Управление вводом, физикой, звуком и трансформами
    }
};
REGISTER_SCRIPT(PlayerMovement, "Player Movement")

5. Анимация и Катсценовый Секвенсер (Unity-Style Dopesheet & Timeline)

  • Файловый формат .anim:
    • Сохранение и загрузка клипов анимаций (.anim) в человекочитаемом JSON-формате.
    • Поддержка многоканальных треков: Position, Rotation (Euler/Degree), Scale, а также произвольных Float-параметров (Camera.FOV, интенсивность света и др.).
    • Плавная кубическая Hermite (Smoothstep) и линейная интерполяция между ключевыми кадрами.
  • Катсценовый Секвенсер без лимитов времени:
    • Полное снятие 10-секундного ограничения: длительность настраивается от 1 секунды до сотен секунд с масштабируемым таймлайном.
  • Кат-трек камер (Camera Cuts & Shots):
    • Добавление смены камер (Camera Cuts) по таймлайну с автоматическим переключением активной камеры во вьюпорте в реальном времени.
    • Кейфрейминг плавного движения камеры (Camera Motion Path) с интерполяцией позиции, вращения и угла обзора (FOV).
  • Профессиональный интерфейс в стиле Unity Animation Window:
    • Кнопка Preview [ON/OFF] для живого предпросмотра катсцены во вьюпорте прямо в редакторе без входа в Play Mode.
    • Режим авто-кейфрейминга ● REC: автоматическая запись ключей при перемещении объектов во вьюпорте.
    • Транспортные контролы: переход на старт (|<<), шаг к предыдущему ключу (<), Play ▶ / Pause ❚❚, шаг к следующему ключу (>), переход в конец (>>|), поле номера текущего кадра (Frame Box) и таймер.
    • Интерактивный таймлайн-холст (Dopesheet Canvas): временная линейка с разметкой секунд/кадров, алмазные маркеры кейфреймов (), цветовые плашки камерных планов и клипов анимаций, скраббер текущего времени и ползунок масштаба (Zoom).

Горячие клавиши редактора

Клавиша Функция
ПКМ + мышь Свободный обзор камеры редактора (Flycam Look)
WASD / Стрелочки Полёт камеры вперёд, назад, влево, вправо
Q / E Спуск и подъём камеры по вертикали
Shift Ускорение движения камеры (x2.5)
СКМ (Колёсико) Панорамирование сцены (Pan)
Прокрутка мыши Зум к точке курсора
F Фокус камеры на выделенном объекте
1 / 2 / 3 Переключение Gizmo: Перемещение / Вращение / Масштабирование
Alt+1 .. Alt+8 Быстрое открытие/закрытие панелей (Hierarchy, Inspector, Sky, etc.)
Alt+K Открытие/закрытие окна катсценового секвенсера (Sequencer)
Ctrl+D Дублирование выбранного объекта
Delete Удаление выбранного объекта
Tab Полное скрытие / показ UI редактора
ESC Остановка режима Play Game и возврат в редактор

Сборка и запуск

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

  • Linux (x86_64)
  • Компилятор Clang с поддержкой C++20
  • CMake 3.20+ и Ninja
  • Драйвер с поддержкой OpenGL 4.6

Команды сборки:

# Конфигурация и сборка проекта
cmake -B build -G Ninja
ninja -C build cjoka

# Запуск редактора сцен
./build/cjoka

# Сборка и запуск автономного игрового билда
ninja -C build cjoka_standalone
./build/cjoka_standalone

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages