Skip to content

SpaRcle Engine v0.0.7

Pre-release
Pre-release
Compare
Choose a tag to compare
@Monika0000 Monika0000 released this 22 Apr 22:20
f992d3f

image

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

Full Changelog: release/0.0.6...release/0.0.7