What’s new

We are thrilled to announce that today we have published a new Flax 0.5 update! The newest Alpha version update makes another great leap towards final release and brings lots of exciting features such as Particles simulation, Vulkan rendering support, Editor improvements and Curves editing.

In this blog post, we will review the recent update highlights and focus on the most interesting topics. To detailed information see the official release notes.


Highlights

Particles

Particles

The major feature of this update is particle support. Particles are one of the most essential parts of modern games. Every time you see a fire, smoke, explosion or dust, you can be sure – those are particles. However, nowadays gamers and game developers are more demanding so we put lots of effort to create the particles system that will be able to bring more awesomeness to the games.

Particle System
Particle System

To do so Flax supports seamless CPU and GPU particles simulation, high performant rendering and provides a set of great tools for content creators. We know that visual effects are a major aspect of every game so we wanted to allow game developers to easily create particle emitters, define the simulations and construct everything from simple effects to complex particle systems.

See the related documentation to learn more here.

Vulkan support

Vulkan

Now, Flax supports rendering graphics with Vulkan. Adding Vulkan backend enables us to move towards cross-platform gaming and better performance.

The current implementation supports full graphics pipeline and compute shaders (only stream-output and counter buffers are missing). We use descriptors pool manager to reuse descriptor set layouts and optimized pipeline binding to reduce API calls. The pipeline state objects are cached on request and reused later which reduces memory usage. Also using ring-buffer for uniforms data reduces descriptors changes due to dynamic offset assignment that is more efficient.

You can read more about on the blog.

Curves editing

Curves
Using Curves in Scripts

This update features many new additions to the scripting. This includes a new Curve<T> type and related editor tools. You can easily add curve object to your script and use it to animate objects or for general purpose. This comes very handy during game production and is now in-build engine feature.

New script events

Our C# scripting keeps evolving. During this update, we refactored the script events and improved their execution performance. Firstly, deprecated OnTriggerEnter/Stay/Exit, OnCollisionEnter/Stay/Exit, and OnJointBreak events have been removed as using Collider.TriggerEnter/Exit, Collider.CollisionEnter/Exit, and Joint.JointBreak is more performant and allows developers to register for multiple colliders events in the same script instead of adding a script to collider actor. Secondly, we added the virtual methods to Script base class which makes it easier to override the proper method and get proper documentation right in the IDE. The simplified script events callbacks are easier to use and match better our engine design vision. Note: calling base methods of Script class is not required and can be skipped to safe performance.

Also, we updated the Flax Documentation and Flax Samples to include these changes. To help you upgrade your existing code please take a look at the improved documentation about script events here.

Content Finder tool

Content Finder Tool
Content Finder Tool

One of the greatest features added to Editor is content finder tool. This little dialog allows you to very quickly navigate around the whole project by simply pressing Ctrl+O anywhere and typing the search query. It can be used to browse through the content assets but also the scene actors so you can find literally anything.

This feature has been implemented by JimiVacarians. Thanks!

New command-line options

As Flax is often used in various scenarios and we want to keep very agile here is a list of new command-line options added to the engine:

  • -vulkan – use Vulkan rendering backend
  • -skipcompile – skips the automatic C# scripts compilation on startup
  • -mute – disables audio system (engine will use Null Audio backend)
  • -nvidia – hints to use NVIDIA GPU if available
  • -amd – hints to use AMD GPU if available
  • -intel – hints to use Intel GPU if available
  • -mononolog – enables advanced debugging for Mono runtime

Additionally, the startup command-line arguments are exposed to C# API via Application.CommandLine for your applications.

New material nodes

Curve
Sampling Vector2 Curve in Material

Materials system is constantly growing every update. This time we extended the standard nodes collection by adding new useful nodes such as:

  • Append – appends vectors and scalars
  • Sample Gradient – linear color gradient sampling with preview
  • Curve – float/vector2,3,4 curves editing and sampling
  • Degrees/Radians – angle units conversion tool (works with vectors too)
  • Bitwise operations – integer math operations set
  • Boolean math – boolean math operations set
  • Comparison nodes – an easier way to compare values
  • Branch – picks a value based on a condition
  • Flipbook – samples sprite sheet
  • Depth fade – implements soft-particles and transparency

More Editor features

Input Values Parsing

Flax Editor is already a great tool. However, every update makes it even more outstanding. This time we wanted to add lots of usability features including Auto Save (configurable via options), Undo for Visject (materials, anim graph, particles graphs), parsing input fields (just type 2 + 2 * 2 and editor will calculate result), custom editor options (editor plugins can add own settings to editor UI), input shortcuts settings (define own bindings for keyboard).

Many of those changes will improve your game development and editor usage experience. To learn more just look at the complete update changelog.

Actors type serialization

The scene objects (actors and scripts) have now fully unified type serialization and class meta caching that improves the performance and standardizes the design. From now on, every actor will use TypeName for its type info instead of old TypeID ( "TypeID": 1 -> "TypeName": "FlaxEngine.StaticModel"). This change will be visible in scene and prefab files saved with the newest version. We will continue supports the old format of scenes in next engine updates for at least a year.

Third-Party libraries updates

The new Flax version is the first shipped update that uses our brand new build system. We put a lot of effects to make it more performant and fit our development. This was also a great opportunity to update most of the dependency third-party libraries that we use.

  • Update Mono to 5.20.1
  • Update Assimp to 5.0 RC 1
  • Update DirectXMesh to April 26, 2019
  • Update DirectXTex to April 26, 2019
  • Update UVAtlas to April 26, 2019
  • Update freetype to 2.10
  • Update curl to 7.64.1
  • Update fmt to 5.3
  • Update OpenAL to 1.19.1
  • Update PhysX to 4.1
  • Use static linking for PhysX on Windows
  • Use static linking for Mono on Windows
  • Use AOT for C# assemblies on UWP platform

To learn more about Flax.Build see this blog post.


Moving even faster forward…

We bring more features every update to the engine. This update notably makes engine feature complete and orients the development to produce more time-saving solutions and new useful features to the engine.

We’re looking forward to talking to you about the Alpha and reading your feedback on our Discord channel. See you soon! Please let us know what are your thoughts about it.


Wojciech Figat

Lead Developer

2 Comments

Konrad Krajewski · September 13, 2019 at 1:15 PM

A positive comment 🙂
From the bottom of my heart.

Rasmus · October 2, 2019 at 9:22 PM

Hey I have been following Flax since I saw it on Gamefromscratch on youtube. It’s interesting to follow along I can’t wait for beta release. It looks like Flax is easy to use like Unity but have graphics like Unreal. Hope beta releases soon, great work!

Leave a Reply

Avatar placeholder

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