SpaRcle Engine v0.0.7
Pre-release
Pre-release
RU Список изменений
Нововведения:
- Реализованы компоненты AudioListener и AudioSource для работы с аудио.
- Добавлена кросс-платформенная библиотека fmtlib для красивого и удобного вывода логов.
- Реализована отрисовка отладочных мешей.
- Реализован Transform2D, реализованы Anchor и PositionMode для настройки UI.
- Добавлена кнопка над сценой для подключение к PhysX Visual Debugger. Теперь движок никогда не пытается к нему подключиться во время инициализации физики.
- Добавлена статистика сборки CI.
- Добавлены бейджи активности коммитов и discord.
- Реализована удобная система свойств компонентов.
- Реализован StringAtom. Шейдеры и материалы теперь используют его вместо std::string.
- Добавлен framebuffer viewer в редактор.
- Добавлена кроссплатформенная хеш-функция, так как оказывается стандартный std::hash выдает разный хеш на разных компиляторах и платформах.
- В окне иерархии теперь есть возможность горизонтального скролла.
- Добавлена возможность не сохранять сущности, такие как компоненты и игровые объекты. Полезно для редактора.
- Реализован собственный Gizmo средствами движка, отказ от ImGuizmo. Теперь Gizmo работает для UI. Его так же можно использовать для игр, так как является игровым компонентом.
- Добавлен EntityRefProperty для компонентов. Компоненты теперь используют систему свойств и не требуют force-миграции.
- Реализована система слоев для игровых объектов, переписана отрисовка с MeshCluster на RenderStrategy + MeshDrawerPass.
- Реализованы новые и исправлены некоторые из существующих фичей: ClearDepthPass, CascadedShadowMapPass и т. д.
- Добавлена система для работы с сетями, реализован TCP протокол, частично сделан P2P.
- Добавлена реализация широких целых чисел (uint256_t и т.д.).
- Добавлено окно для удобной отладки ошибок рендера на сцене, а так же просмотра статистики рендера.
- Добавлена система оверлеев, теперь ImGui это оверлей.
- Добавлены Sliced-Image для UI.
- Добавлен конфигурационный файл с подсветкой синтаксиса для SRSL в CLion.
- Добавлена возможность отмены и возврата действий в Transform инспектора.
- Добавлены FileWatchers для отслеживания изменений файлов.
- Добавлено автоматическое закрытие Issue с падением сборки, после успешного билда.
- Добавлена упаковка критически важных для работы двикжка файлов в исполняемый файл.
- Теперь движок ялвяется полностью portable и не имеет динамических библиотек.
Исправления:
- Исправлены многочисленные падения при работе в редакторе.
- Исправлена чистка буфера Stacktrace, ранее она не производилась и текст наслаивался друг на друга.
- Исправлена проверка изменений файлов, теперь сперва проверяются мета-данные, и только потом вычисляется хеш.
- Исправлена загрузка тегов игровых объектов.
- Исправлено сохранение EntityRef.
- Исправлена вставка не текстового содержимого в редакторе.
- Исправлено открытие файлов в приложениях по умолчанию.
- Исправлена неправильная обработка пути в PhysicsMaterialEditor.
- Исправлена миграция, ломающая сцены.
- Исправлено несколько проблем с многопоточностью -> исправлена многоэкземплярность синглтонов под компилятором GCC.
- Исправлена возможность инъекции команд.
- Улучшен алгоритм выбора графического девайса GPU.
- Исправлена утечка памяти SharedPtr. Теперь при обнаружении утечек памяти будут выводиться логи.
Рефакторинг:
- Полный переход с легаси графического конвейера Environment на нововведенный Pipeline.
- Директория Utils стала сабмодулем. Создан репозиторий SRCommon. Это очень полезный репозиторий для любого проекта, так как он содержит математику, хеширование, сериализацию, реализацию синглтонов и т.д.
- Директория Graphics стала сабмодулем. Создан репозиторий SRRenderer.
- Переименованы старые header include guards.
- Оптимизировано обновление сцены.
- Проведен рефакторинг внутренней имплементации Behaviour.
- Проведен рефакторинг и фикс кнопки Exit в EditorGUI.cpp
- Проведен рефакторинг инспектора и добавлена дополнительная информация.
- Убраны лишние virtual в местах, где методы уже помечены override.
- Полностью убраны старые неймспейсы Framework и Helper. Теперь они везде называются SpaRcle и Utils.
- Улучшена внутрення реализация Rigidbody.
- Произведен полный рефакторинг CI.
В разработке:
- Начата реализация поддержки Linux. В данный момент мы занимаемся имплементацией поддержки окон X11.
- Была попытка реализовать свою систему Blueprint'ов, но она провалилась из-за отсутствия нормального редактора.
- Ведутся активные работы по переходу с ImGui на нашу собственную систему UI, постепенно добавляются фичи для 2D графики.
Main changes:
- Implemented AudioListener and AudioSource components for working with audio.
- Added cross-platform library fmtlib for nice and convenient output of logs.
- Implemented rendering of debug meshes.
- Implemented Transform2D, implemented Anchor and PositionMode for UI customization.
- Added button above the scene to connect to PhysX Visual Debugger. Now the engine never tries to connect to it during initialization of physics.
- Added CI build statistics.
- Added commit and discord activity badges.
- Implemented a convenient system of component properties.
- Implemented StringAtom. Shaders and materials now use it instead of std::string.
- Added framebuffer viewer to editor.
- Added cross-platform hash function, since std::hash produces different hashes on different compilers and platforms.
- Hierarchy widget now supports horizontal scrolling.
- Added option to not save entities such as components and game objects. Useful for the editor.
- Implemented engine's own Gizmo which is now used instead of ImGuizmo. Now Gizmo works for UI. It can also be used for games, as it is a game component.
- Added EntityRefProperty for components. Components now use property system and do not require force-migration.
- Implemented layer system for game objects, refactored rendering from MeshCluster to RenderStrategy + MeshDrawerPass.
- Implemented new and fixed some of the existing features: ClearDepthPass, CascadedShadowMapPass, etc.
- Added asio library and some of the network logics, implemented TCP protocol, partially implemented P2P.
- Added implementation of wide integers (uint256_t, etc.).
- Added a window for convenient debugging of render errors on the scene, as well as viewing render statistics.
- Added overlay system, now ImGui is an overlay.
- Implemented SlicedImage UI component.
- Added syntax highlighting configuration file for SRSL in CLion.
- Added ability to undo and revert actions in Transform inspector.
- Added FileWatchers to track file changes.
- Added automatic closing of GitHub Issues caused by an unsuccessful build, after a successful build.
- Added embedding of critical files for the engine's runtime into the executable file.
- The engine's executable is now fully portable and has no dynamic libraries.
Fixes:
- Fixed numerous crashes when working in the editor.
- Fixed Stacktrace buffer cleaning, previously it was not performed and text was layered on top of each other.
- Fixed checking if a file was changed. Now metadata is checked first, and only then hash is calculated.
- Fixed loading of game object tags.
- Fixed EntityRef saving.
- Fixed inserting of non-text content in the editor.
- Fixed opening files in default applications.
- Fixed incorrect path handling in PhysicsMaterialEditor.
- Fixed scene breaking on migration.
- Fixed several multi-threading issues -> fixed multi-existence of singletons under the GCC compiler.
- Fixed the ability to inject commands.
- Improved GPU graphics device selection algorithm.
- SharedPtr memory leak fixed. Now logs will be displayed when memory leaks are detected.
Refactoring:
- Complete transition from the legacy Environment graphics pipeline to the new Pipeline.
- Utils directory became a sub-module. SRCommon repository was created. This is a very useful repository for any project as it contains math, hashing, serialization, singleton implementation, etc.
- Graphics directory became a sub-module. SRRenderer repository created.
- Renamed old header include guards.
- Optimized scene update.
- Behaviour internal implementation was refactored.
- Refactoring and fixing of the Exit button in EditorGUI.cpp.
- Refactoring of the inspector and adding additional information.
- Removed unnecessary virtual in places where methods are already marked override.
- Completely removed old Framework and Helper namespaces. Now they are called SpaRcle and Utils everywhere.
- Improved internal implementation of Rigidbody.
- Complete refactoring of CI.
In development:
- Linux support has been started. We are currently working on implementation of X11 windows support.
- There was an attempt to implement our own Blueprints system, but it failed due to the lack of a normal editor.
- We are actively working on transition from ImGui to our own UI system, implementing features for 2D graphics.
What's Changed
- SpaRcle Engine v0.0.7 by @Monika0000, @innerviewer in #193
Full Changelog: release/0.0.6...release/0.0.7