Перейти к содержанию

Рекомендуемые сообщения

 

Решил наконец завести отдельную тему по EchoForge Engine — собственному игровому движку и редактору, который я разрабатываю уже довольно продолжительное время.

Проект начинался значительно скромнее, фактически как набор экспериментов с рендерингом и игровым кодом, изначально на нем делалась песочница EchoForge с живым миром в 2D, был простенький прототип, но потом сабж перерос в полноценный движок с редактором сцены, материалами, анимациями, UI, визуальными скриптами, навигацией и собственным пайплайном ассетов.

Сразу уточню: это не законченный коммерческий Unreal-конкурент и не проект, который появился вчера. EchoForge находится в длительной активной разработке уже год, дорабатывается с большими перерывами на другие проекты, когда у меня есть время. Некоторые системы уже достаточно зрелые, другие всё ещё находятся в процессе развития.

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

EchoForge Engine

Технологии

Движок написан преимущественно на C++.

На данный момент используется:

  • DirectX 11
  • развиваемый native DirectX 12 renderer
  • SDL2
  • Dear ImGui
  • FBX SDK
  • NVIDIA PhysX
  • Box2D
  • Windows 10 / 11 x64

Система координат движка:

Y-Up, Left-Handed

Основные приложения проекта:

EchoForge — runtime / game executable (тот самый 2D прототип)
EchoForgeStudio — основной редактор движка
ShooterForge — коммерческий шутер который я хотел бы выпустить рано или поздно, ранние наработки.
StalkerForge — наработки для модмейкеров сталкера, уровень МГ (Мёртвый город), хотелось бы там повторить хотя бы билд 1511 и привлечь заинтересантов из комьюнити с движком поработать.


EchoForge Studio

Большая часть разработки сейчас сосредоточена вокруг Studio.

Редактор постепенно превращается в полноценную среду разработки игры, а не просто окно для расстановки объектов.


Scene Editor

На данный момент редактор позволяет:

  • создавать и редактировать уровни;
  • размещать Actor'ы;
  • редактировать Position / Rotation / Scale;
  • работать с transform gizmo;
  • настраивать камеры;
  • добавлять освещение;
  • редактировать collision;
  • сохранять и загружать сцены;
  • работать с игровыми классами;
  • заменять Actor'ы;
  • работать с компонентами;
  • использовать несколько viewport-режимов.

Помимо основного 3D-вида существуют дополнительные редакторские viewport'ы.


Play In Editor

В EchoForgeStudio есть собственный PIE — Play In Editor.

Текущий уровень можно запустить непосредственно внутри редактора и проверить игровую логику без постоянного ручного запуска отдельного exe.

PIE поддерживает:

  • игровой runtime;
  • ввод;
  • Player / NPC / Actor logic;
  • Blueprint;
  • UI;
  • Pause / ESC menu;
  • возврат обратно в редактор.

Разделение Editor World и Runtime World постепенно развивается по мере усложнения проекта.


Renderer

Основной renderer работает на DirectX.

Уже реализованы:

  • PBR shading;
  • GGX;
  • Albedo;
  • Normal Maps;
  • Metallic;
  • Roughness;
  • Ambient Occlusion;
  • Emissive;
  • ORM textures;
  • two-sided materials;
  • динамическое освещение;
  • shadow mapping;
  • PCF shadows;
  • локальные настройки теней для Actor'ов.

Поддерживаются достаточно большие shadow maps, а Actor может отдельно управлять параметрами casting / receiving shadows.

Отдельно развивается полноценный DirectX 12 backend.


DirectX 12

DX12 в EchoForge — это не wrapper поверх DX11.

В native DX12 backend уже реализованы:

  • per-frame command allocators;
  • fences;
  • frame synchronization;
  • resource upload;
  • root bindings;
  • binding cache;
  • работа с frame resources;
  • часть оптимизаций GPU/CPU synchronization.

DX12 backend постепенно догоняет основной DX11 renderer по функциональности.

Полностью переписать многолетний renderer за один проход даже нейронками невозможно, поэтому переход идёт поэтапно.

Physics

В EchoForge используются две физические системы:

  • NVIDIA PhysX — основная 3D-физика;
  • Box2D — 2D-физика.

Поддерживаются:

  • rigid bodies;
  • collision shapes;
  • static / dynamic objects;
  • capsule / box / mesh collision;
  • physics-driven interaction;
  • 2D collision and simulation.


Material Editor

В Studio есть отдельный редактор материалов.

Он позволяет работать с:

  • Base Color;
  • Normal;
  • Metallic;
  • Roughness;
  • AO;
  • Emissive;
  • ORM;
  • параметрами PBR shading.

Поддерживается работа с несколькими открытыми материалами одновременно.

Поиск материалов работает по проекту, а не только в одном жёстко заданном каталоге.


Model Editor

Для моделей существует отдельный Model Editor.

Он позволяет:

  • просматривать static mesh;
  • просматривать skeletal mesh;
  • работать с материалами;
  • просматривать skeleton;
  • проверять collision;
  • работать с sockets;
  • назначать preview meshes;
  • настраивать параметры импорта;
  • просматривать bind pose.

FBX importer за время разработки пережил очень большое количество исправлений.

Особенно много работы было связано с:

  • coordinate systems;
  • bind pose;
  • skin clusters;
  • normals;
  • hard edges;
  • smoothing;
  • skeleton hierarchy;
  • helper objects;
  • sockets;
  • старыми и новыми вариантами FBX.

Цель — чтобы импортированная модель максимально соответствовала исходнику в 3ds Max / Blender / Maya, а не просто "примерно выглядела нормально".


Animation Editor

Также имеется отдельный Animation Editor.

Поддерживается:

  • проигрывание skeletal animation;
  • animation clips;
  • просмотр skeleton;
  • работа с sockets;
  • preview meshes;
  • редактирование части параметров непосредственно в редакторе.

Постепенно развивается система animation retargeting.


Skeleton / Skinning

Движок поддерживает полноценные skeletal meshes.

Реализованы:

  • bone hierarchy;
  • skin weights;
  • bind pose;
  • animation tracks;
  • sockets;
  • skeletal attachments;
  • импорт FBX-анимаций.

При разработке большое внимание уделяется корректности transform spaces и соответствию результата исходной модели.

Particle System

В EchoForge есть собственная система частиц для игровых и визуальных эффектов.

На текущем этапе поддерживаются:

  • particle emitters;
  • настройка количества и lifetime частиц;
  • позиция / скорость / направление;
  • размер и изменение размера со временем;
  • цвет и прозрачность;
  • текстуры частиц;
  • looping и one-shot эффекты;
  • использование particle systems внутри игровых сцен и Actor'ов.

Система используется для различных VFX: дыма, искр, огня, пыли, вспышек и других эффектов.

Particle System продолжает развиваться вместе с renderer'ом и редакторскими инструментами.


Actor Blueprint System

В EchoForge существует собственная система visual scripting, по концепции похожая на Blueprint.

Actor Blueprint позволяет собирать игровую логику из node graph.

Уже имеются:

  • Event Nodes;
  • Branch;
  • Variables;
  • Functions;
  • Spawn Actor;
  • Print String;
  • execution wires;
  • reroute nodes;
  • runtime execution;
  • debug output.

Система пока развивается и по количеству нод, разумеется, не пытается соревноваться с Unreal Engine.

Но базовая архитектура уже работает непосредственно в игровом runtime.


UI Editor

В Studio есть отдельный визуальный редактор интерфейсов.

Поддерживаются:

  • Canvas;
  • Widgets;
  • Anchors;
  • Layout;
  • UI Graph;
  • Reroute Nodes;
  • runtime UI.

Цель — дать возможность собирать игровой интерфейс непосредственно внутри Studio без постоянного ручного написания разметки в коде.


Navigation

В движке развивается собственная NavMesh-система.

На данный момент существуют режимы:

  • Disabled;
  • Baked;
  • Build On Load.

Навигация используется NPC и другими игровыми Actor'ами.


Collision

В EchoForge есть собственная collision-система и редакторские средства её настройки.

Поддерживаются:

  • Actor collision;
  • capsule collision;
  • model collision;
  • визуализация collision geometry;
  • редактирование collision через Inspector.

Старые разрозненные решения постепенно переводятся к более единому компонентному подходу.


Asset Browser

EchoForgeStudio имеет собственный Asset Browser.

Через него можно работать с:

  • моделями;
  • материалами;
  • текстурами;
  • Blueprint;
  • UI;
  • прочими ресурсами проекта.

Поиск постепенно переводится на весь проект, чтобы не приходилось вручную лазить по отдельным каталогам.


Игровой runtime

EchoForge — это не только редактор.

В runtime уже используются:

  • Actor system;
  • Player;
  • NPC;
  • Weapons;
  • Animation;
  • AI Navigation;
  • Doors;
  • Interactive Objects;
  • UI;
  • Pause Menu;
  • Level Loading;
  • Blueprint Runtime;
  • Components.

Для постоянной проверки используются отдельные тестовые уровни и небольшие игровые сцены.


Почему проект разрабатывается так долго

EchoForge — большой долгосрочный проект, который развивается постепенно и без огромной команды разработчиков.

Поэтому процесс зачастую выглядит примерно так:

новая система -> использование в реальной сцене -> обнаружение архитектурных проблем -> переработка нейронкой -> обнаружение связанного старого кода -> исправление старого кода -> новые инструменты редактора -> новые тесты.

Иногда seemingly небольшая задача вроде "нормально импортировать FBX skeleton" превращается в длительное изучение:

  • bind poses;
  • skin matrices;
  • local/global transforms;
  • coordinate spaces;
  • особенностей Max;
  • особенностей Blender;
  • особенностей Maya.

То же самое происходит практически с любой большой системой движка.


Текущее состояние

На данный момент EchoForge уже давно вышел за рамки простого renderer demo.

Сейчас можно:

  • создать уровень;
  • импортировать модели;
  • настроить материалы;
  • добавить skeletal animation;
  • создать Actor;
  • собрать игровую логику через Blueprint;
  • создать UI;
  • настроить collision;
  • добавить NPC;
  • запустить сцену через PIE;
  • запустить standalone game executable.

При этом состояние проекта я пока всё равно считаю active development.

Редактор, внутренние API и отдельные подсистемы продолжают достаточно активно меняться.

Обратная совместимость со всеми старыми версиями проекта не является абсолютной целью: иногда ради нормальной архитектуры приходится ломать старое поведение.

Что планируется дальше

Основные направления дальнейшей разработки:

  • material instances
  • физические материалы
  • свой формат для моделек, а не через нативный FBX
  • bake lighting / lightmaps;
  • дальнейшее развитие DX12 renderer;
  • расширение Blueprint System;
  • animation retargeting;
  • улучшение asset pipeline;
  • развитие component system;
  • profiling / debugging tools;
  • улучшение Actor / prefab workflow;
  • дальнейшая унификация Editor и Runtime систем.


О проекте

EchoForge не позиционируется как "убийца Unreal Engine" или попытка заменить Unity для всех.

Это собственный движок, который я разрабатываю в первую очередь потому, что мне интересна возможность контролировать весь pipeline самостоятельно:

импорт ассетов -> renderer -> animation -> editor -> scripting -> UI -> runtime.

Когда используешь готовый движок, огромное количество вещей воспринимается как данность.

При разработке собственного быстро выясняется, сколько на самом деле скрыто за простой кнопкой "Import FBX", обычным transform gizmo, playback анимации или одним Blueprint node.


Тема как Devlog

Эту тему планирую использовать в качестве своеобразного devlog EchoForge.

Проект находится в длительной активной разработке и развивается дальше.

Если кому-то интересна разработка собственного игрового движка, renderer'а, редактора, asset pipeline или отдельных его подсистем — буду рад обсуждению.


Скриншоты и видео
 

 

 

 


EchoForgeStudio1.thumb.jpg.5857669102d9118c231cef5d2cea8578.jpg

EchoForgeStudio2.thumb.jpg.6c3132596a99dd3c8b2207c527b5b4e1.jpg

EchoForgeStudio3.thumb.jpg.89d5a875d2db28bc87beaa3a1fea88cc.jpg


Дополнено 18 минуты спустя

Еще немного скриншотов.

engine133.jpg

EchoForgeStudio_YrSD8udlbv.jpg

ui1.jpg

EchoForgeStudio_D1RNy9DOx4.jpg

Изменено пользователем loxotron13

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   2 пользователя онлайн

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. Оставаясь на сайте, вы подтверждаете свое согласие на их использование. Политика конфиденциальности | Условия использования