Об этом проекте

Prowl — это игровой движок с открытым исходным кодом, написанный на чистом C# на последней версии .NET и выпущенный под лицензией MIT. Он явно вдохновлён Unity: сохраняет похожий редактор и API для скриптов, использует компонентную архитектуру GameObject и MonoBehaviour и стремится сделать перенос проектов Unity максимально простым, оставаясь при этом небольшим и настраиваемым (KISS). Проект в настоящее время находится на стадии 1.0-preview после полной переработки редактора, рендерера, физики, аудио и UI; проекты из более старых версий несовместимы, и пути миграции нет, а дальнейшие критические изменения возможны до версии 1.0. Редактор и рабочий процесс: полноценный редактор предоставляет Scene View, Hierarchy, Inspector, Project Browser, Console и Game View, с пользовательскими редакторами компонентов/свойств/сцен, трансформационными гизмо (перемещение, вращение, масштабирование), отменой/повтором, закрепляемыми и изменяемыми панелями с сохранением макета, перетаскиванием, мультивыбором, поиском/фильтрацией, миниатюрами ассетов и 3D-превью, редакторами анимационных кривых и градиентов, переназначаемыми горячими клавишами, темами, тестированием в редакторе и горячей перезагрузкой скриптов. Редактор локализован на английский, немецкий, испанский, французский, итальянский, японский, корейский, польский, португальский, русский, турецкий и китайский языки. Поддерживаются управляемые и нативные плагины с определениями сборок. Среда выполнения полностью независима от редактора, поэтому игра может напрямую ссылаться на неё и поставляться без зависимости от редактора. Рендеринг: бэкенд OpenGL через Silk.NET с выделенным потоком рендеринга и расширяемым конвейером (поддерживаются пользовательские конвейеры). Конвейер по умолчанию с прямым освещением использует тонкий G-буфер предварительного прохода (глубина, нормали, движение, шероховатость, металличность). Он предлагает HDR и PBR металлический рабочий процесс с картами альбедо, нормалей, поверхности и эмиссии; рендереры мешей и скелетных мешей с анимацией костей и блендшейпами; рендерер линий; спрайты с сеткой, изометрической и автоматической нарезкой листов на основе альфа-канала, а также редактор спрайтов; рендер-текстуры и Texture3D; инстансинг GPU и отсечение по фрустуму. Освещение охватывает точечные, прожекторные и направленные источники света с отображением теней, каскадные карты теней для направленных источников (до четырёх каскадов), кубические карты теней для точечных источников и атлас теней с динамической упаковкой. Постобработка включает HDR-тонмаппинг (ACES, Reinhard, Uncharted, Filmic, Melon, AgX), bloom, FXAA, TAA, SMAA, GTAO, стохастический SSR, боке-глубину резкости, объёмный туман и кинематографические эффекты. Также присутствуют: прозрачность, проход захвата с учётом глубины для рефракции/теплового марева/матового стекла, процедурные/кубические/градиентные скайбоксы, система ландшафта с квадродеревом LOD, картой высот и раскраской сплатмапами, трава с GPU-инстансингом, рендеринг деревьев с LOD-дистанцией, отверстиями и выделенным редактором ландшафта, а также система частиц с GPU-инстансингом, эмиссией, модулями на протяжении жизни, коллизиями и UV-анимацией в локальном или мировом пространстве. Пользовательский язык шейдеров поддерживает #include, многопроходность и ключевые слова/варианты шейдеров; включены UV-развёртка и прогрессивный лайтмаппер с запечёнными световыми зондами. Физика использует Jitter Physics 2: коллайдеры коробки, сферы, капсулы, цилиндра, конуса, выпуклой оболочки, меша, модели и ландшафта; коллайдер колеса на основе лучей с подвеской и сцеплением на основе проскальзывания; множество соединений и ограничений (шаровое гнездо, шарнир, угол шарнира, фиксированный угол, ограничение конуса, ограничение расстояния, угол скручивания, призматическое, универсальное, точка на линии, точка на плоскости, угловые и линейные двигатели); контроллер персонажа; триггерные объёмы; слои коллизий и фильтрация LayerMask; а также API лучевых запросов и запросов форм. Аудио использует MiniAudio с пространственным 3D-звуком, включая затухание и эффект Доплера, поддержку WAV/MP3/OGG/FLAC, цепочку эффектов (задержка, искажение, биквадратный фильтр, реверберация, фазер) и пользовательские реализации IAudioEffect. Другие системы: сериализация через Prowl.Echo; теги и слои; сцены с туманом и окружающим освещением; префабы с вложенностью, применением/отменой/разрывом экземпляра и отслеживанием переопределений; настройки проекта; компиляция скриптов через dotnet build; система действий ввода с композитами и процессорами, ассетами .inputactions и выделенным редактором, фазами действий и привязками клавиатуры/мыши/геймпада; UI на основе GameObject, включая мировое пространство UI с компоновкой на основе RectTransform, кнопки, слайдеры, группы компоновки и обработчики перетаскивания; Prowl Actions для настраиваемых в инспекторе постоянных обратных вызовов; и библиотека математики с матрицами (Float4x4), кватернионами, Transform2D и фигурами, такими как AABB, границы, фрустум, конус, луч, плоскость, отрезок и прямоугольник. Конвейер ассетов использует ссылки на основе GUID с файлами метаданных, кэширование импорта и отслеживание файлов для автоматического повторного импорта, пользовательские импортёры через атрибуты, субассеты с детерминированными GUID, отслеживание прямых и обратных зависимостей и многопоточную загрузку. Поддерживаемые форматы включают модели GLTF, GLB, OBJ и FBX; текстуры PNG, JPG, BMP, TGA, PSD, HDR, DDS и EXR; аудио WAV, MP3, OGG и FLAC. Система сборки экспортирует автономные приложения с упакованными файлами ассетов .prowlpak, экспортируя только используемые ассеты, профили сборки для каждой платформы и поддержку Windows, Mac и Linux. Кодовая база покрыта модульными тестами — более 450 тестов в среде выполнения и редакторе. Для начала работы требуется .NET 10. Доступны готовые сборки 1.0-preview, или можно клонировать репозиторий и открыть решение в Visual Studio 17.8+, VS Code или Rider. Проект кроссплатформенный как для редактора, так и для экспортированных сборок, а поддержка сообщества доступна через Discord-сервер.