Here we go!

It’s time to present you with a new Flax 1.5! This update contains many cool features like multiplayer support, gameplay framework, ImGui/DLSS plugins, Hierarchical Tags, and lots of other good stuff.

For this update together with our contributors, we’ve made over 934 commits and merged 111 Pull Requests into Flax repositories. Thanks for your support!

DOWNLOAD

As always, we will do a short check around new features and highlights. To see detailed information visit the official release notes.


Highlights

High-Level Networking

Complete multiplayer support comes to Flax! This was one of the most awaited features and now it’s ready to be used in games. In this update we’ve implemented High-Level Networking layer which includes objects replication over the network, Remote Procedure Calls (RPC), concepts of object ownership, and server authority model.

New networking components allow to quickly create multiplayer games in server-client architecture (including self-hosted games). Flax networking layer will automatically handle connections setup, data replication, and objects spawning over the network (eg. spawn player prefab to all clients). Both C++ and C# scripting support new NetworkReplicated attribute (marks field/properties for automatic replication), NetworkRpc attribute (marks function as RPC), and INetworkObject interface (for customizations to networked object lifetime).

To learn more about High-Level Networking see new documentation here.

Arizona Framework

Arizona Framework is ready to use, open-source framework for creating games in Flax available on Github. It’s created as a plugin and can be added to your game project. Arizona Framework features core game architecture concepts commonly used in games such as Game ModeGame StateGame SystemPlayer StatePlayer PawnPlayer ControllerPlayer UI, and more. It’s easily extendable and contains in-built support for multiplayer (both high-level networking and local coop).

To showcase this framework’s example usage, we’ve created a sample first-person shooter game project Arizona Framework Sample. If you plan to create a multiplayer game with Flax feel free to use it as the foundation for a new project.

ImGui Plugin

Dear ImGui is a bloat-free graphical user interface library for C++ which is commonly used in gamedev for tools and debug interfaces creation. We’ve created and released an official plugin for Flax-games to integrate ImGui and use it in C++/C# scripts. See the repository readme to learn how to use it in your game project.

Performance Optimizations


Every Flax update brings various performance improvements. This time we’ve focused on CPU optimization of the game rendering. Now, renderer uses multi-threaded draw calls collection (via Job System), material shader constants are separated into per-view and per-draw data, shadows rendering is batched with main view, meshes drawing is faster, and much more. This resulted in a massive performance boost for large scenes (10k+ meshes) or in levels with many shadowed lights. Scene rendering is fully multi-threaded with bigger throughput. Also, existing graphics features such as DDGI or Global SDF have been optimized for bigger game productions.

Above you can see an example view from Tracy’s profiler with CPU frame time of the Library demo (arch vis scene) that has 30+ fully shadowed lights and 10k meshes.

Hierarchical Tags


New gameplay tags come to Flax! Hierarchical tags with namespaces can empower gameplay programming. Now, Actors have a list of those tags which makes them more usable. Also, the new editor supports easy tag picking which can be used in other gameplay systems (eg. player weapons, animations, or abilities setup). Tags are a lightweight and scalable solution for well-organized game productions.

Important feature of this new system is new API such as Tags.GetTags.HasTagTags.HasAnyExactTags.HasAll, and so on, which improve usability in code.

DLSS Plugin

NVIDIA DLSS is a revolutionary breakthrough in AI-powered graphics upscaling technology that massively boosts performance. To ease the integration of this technology into Flax-games we’ve released an official plugin with DLSS integration for developers. DLSS for Flax Engine is available on Github and supports DLSS 3.1.

Editor improvements


Flax Editor is under constant development towards making it the best game editor, this time we notably worked on:

  • GPU Memory profiler – allows inspecting graphics memory usage for each resource. Double-click to open related asset (eg. texture or model that created resource), use tooltip to inspect resource description (eg. buffer flags or texture format).
  • Assets profiler – shows all loaded assets, including per-resource memory usage (cpu-mem, estimated), type and references count. Right-click to inspect asset (eg. select actors using it or show references graph), double-click to open in editor. This can be useful when profiling performance and memory usage.
  • Improved Gizmo tool – bigger readability and scale tool with 2-axis mode.
  • New Actor Icons – editor viewport icons has been redone to have clean and consistent style.
  • Improved Properties panel groups – now group panels in Editor have an outline, bigger header and expand state icon which improves usability and makes UI more intuitive.
  • Editor usability – lots of Quality Of Life improvements to help developers use Flax Editor (eg. reorganized context menus)
  • Custom game viewport sizing – can be used to test mobile displays or fixed game screen aspect ratios when developing cross-platform games.

Upcoming .NET 7

Recently we’ve started updating to the latest .NET 7 for C# scripting. You can already test it on dotnet7 branch and preview the progress on a roadmap. Hopefully, it should be ready for the next 1.6 update which means that:

  • .Net Framework support is deprecated now and we will migrate to the latest .Net 7
  • Visual Studio 2017 and 2019 won’t be supported (due to.Net 7 SDK requirements of VS 2022)
  • Any 3rd party C# libs will need to be rebuilt with .Net Core/Standard
  • .Net 7 SDK will be required system dependency for Editor (cooked game as standalone)

Benefits of that change:

  • Far better performance (new GC, new JIT, optimized stdlib)
  • Latest C# 11 support
  • Ability to use mixed native/managed debugger in VS 2022
  • New Editor’s code hot-reload via AssemblyLoadContext (safer than current custom solution)
  • Seamless support for newer .Net versions in future

Finally, we also updated our Tech Demo 2022 to the latest Flax 1.5 which improved both performance and quality. Check it out!


Wojciech Figat

Lead Developer

1 Comment

Asym · February 25, 2023 at 8:37 PM

I love Flax Engine. Wish more people will get around and start using it, awesome game engine!

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *