Reaching the speed of light
We’re happy to release Flax 1.2! It brings lots of great features such as Localization Tools, Vehicles, Networking, Job System, and hundreds of bugfixes.
We’d like to thank all the community members and contributors that are involved in Flax. During the past months, we’ve made over 1,100 commits into Flax repositories and over 60 Pull Requests. 🙌❤️
As always we will do a review of the major features in this update. To see detailed information visit the official release notes.
Made with Flax
This release includes support for Vehicles. Now, you can create cars with a custom physical shape, wheels, and engine setup. We’re using Nvidia PhysX to drive the simulation and expose lots of highly configurable properties to tweak the vehicle. It can be used to make simple cars or even advanced realistic racing games. Also, unofficially cars in Flax drive better than in Cyberpunk 2077.
As always we’re preapred a complete documentation and tutorial how to use this new feature here.
We’re happy to announce that we’re working on Nintendo Switch platform support. Very soon Flax will be available for Switch developers. We will inform you once it’s ready via our dev blog. Stay tuned, we’re almost ready.
In this release, we’re bringing more features into networking for multiplayer games. We’ve implemented a low-level networking system featuring Network Peers for creating multiplayer sessions with network messages transportation layer. The default network driver uses ENet with the possibility to use any library you want (like ValveSockets, SteamRelay, SteamP2P, Photon Realtime, etc.).
Together with this, we’ve released an open-source Network Sample project to help you start making multiplayer games in Flax. It features a game server-client with the game session, chat and players lobby. We have also a simple step-by-step tutorial to help you start using networking in Flax.
Creating games that target the global market and support multiple languages can be a challenge. In 1.2 we shipped new localization tools for games internalization. This includes UI language localization, values culture (numbers, currency, and date formatting), and creating a translation for different languages. We’ve added new Localization Settings that is a dashboard with lots of utilities such as adding new locales, searching localized string is code or content. As shown on a gif above, Editor has a live-preview option of the current locale.
Follow this documentation to learn more.
The very first thing that you will probably notice after launching 1.2 update is that Flax Editor has new icons. We’ve improved resolution and style of the icon set to make it crisper. The new UI just feels better.
The latest 1.2 update brings a massive performance boost for large worlds. Here is an example of 5,000 animated models playing animation and being rendered at stable 60 FPS (tested on mid-price i5 CPU). To achieve this level of performance we’ve created a Job System that runs a worker thread per CPU core to run extensive computations in asynchronous. For more advanced calculations used by gameplay systems or engine systems, we’re implemented Task Graph. It can be used to parallelize game even better plus it supports dependencies between async systems.
During this update, we’ve converted all major engine systems into async Task Graph Systems to ensure the higher parallelization of the engine code (streaming, animations, particles, etc.). It can be further extended by game-specific systems in your code. To see how to do it see this tutorial. Both Job System and Task Graph can be used in C#, C++, or Visual Scripting.
In order to optimize engine or game the developers need proper profiling tools. The in-built profiler helps with this but for more advanced optimizations we needed something more powerful. Now, Flax supports an open-source Tracy profiler for CPU instrumentation and performance analysis. It can profile both game and editor, supports remote profiling, and can be used to capture profiling sessions for comparison. Also, Flax will automatically insert profile zones for C# and Visual Script methods so gameplay performance profiling is even easier now.
Another exciting feature is textures streaming configuration. The new Streaming settings asset contains Texture Groups for managing textures quality and streaming options at runtime (every texture asset can define the texture group it belongs to).
It can be used to strip textures resolution when cooking for mobile/Switch or to implement dynamic texture quality settings in game menu. Also, Flax will reduce quality of textures that are not rendered for some time (configurable) to improve game performance and reduce GPU memory usage. Additionally, we’ve added a new API to query current streaming stats and content stats which can be used to implement a loading screen as showcased in a tutorial here.
AMD Fidelity FX Super Resolution is a cutting edge super-optimize spatial upsampling technology that produces impressive image quality at fast framerates. We’ve released an open-source plugin for Flax Engine that implements FSR effect and can be easily integrated into Flax games. Visit this repository to learn more.
Every update brings many large features but also tons of smaller things that matter. We continued working on improving quality and usability of the Editor. Here is a list of notable ones:
- 9-slicing support for UI (gif above)
- New C++ docs and tutorials (see docs in this section)
- Ability to show/hide GUI and DebugDraw shapes inside Game viewport
- Daily source builds from
masterbranch (here or via Launcher)
- Optimized editor/game CPU usage when idle
- Delay node for Visual Scripting
- Faster scenes opening (in general both engine and editor are faster)
- Animation asset preview with playback debugging (play/pause/seek/slowmo)
- Support for C# objects and structures as Visual Script or Anim Graph parameters
- Tons of new APIs for easier games scripting (see changelog to learn more)
- Both Vulkan and D3D12 rendering backend are way more stable now in large worlds
- Modular animated characters support
- New Temporal AA with less ghosting
- Change default Update rate to 60
- Debug view for collision geometry (see image below)