Welcome!
Here is a new Flax 1.7 update! This release brings various features like Cloth, Behavior Trees, more performance, improved licensing terms, and much more.
For this update together with our contributors, we’ve made over 1,419 commits and merged 233 Pull Requests into Flax repositories. Thanks for your support!
As always, we will do a short check around new features and highlights. To see detailed information visit the official release notes.
Highlights
Better Licensing
Flax Engine End-User License Agreement (EULA) has been updated to be less strict in certain areas. We believe that the current revenue-share-based model acts well and is a fair price for the engine with the tools we provide (4% of gross revenue above $250,000 per calendar quarter). However, we wanted to loosen licensing terms in favor of our users. The following changes were made:
- Removed ability to revoke or terminate the license.
Section Term and Termination
has been removed. We won’t be able to cancel the license from anyone.
- Added limitation on a maximum of one license modification per calendar quarter.
Section Amendments to this Agreement
has been updated to limit possible EULA modifications to once per calendar quarter (as opposed to an unlimited amount of amendments before). For the past 3 years, we’ve updated EULA only twice: both times in favor of our users. We’re committed to stable licensing terms that bring more trust to our clients.
- Added ability to keep using previous EULA version when it’s amended.
Section Amendments to this Agreement
has been updated to allow users to continue using the previous EULA version without a need to accept the new one as long as you keep using engine and tools version from before the license update. For example, if you start developing a game with Flax 1.7 using the current EULA and the license gets modified during your project development (eg. within the next 2 years) then optionally you can stay on the latest Flax version prior to the license update and skip acceptation of the new licensing terms. This means the license is not retroactive to the engine versions. We believe this change will allow developers to easily plan longer game productions without fear of license changes that could affect business costs.
- Added detailed explanation on advance payments.
Section Royalty
defines which revenue is accountable for 4% revenue share. It includes revenue from advance payments for the game such as payments from a game publisher. Royalties that you pay on advance payment of revenue for a game that is recoupable by the payer, such as a publisher, may be credited against future royalty payments that you incur under EULA for that game. This means, for example, if the publisher pays you $1,000,000 in advance payments (directly into game development), the royalty to Flax would be $30,000 (4% of the value above the first $250,000 per calendar quarter). Later, once the game generates revenue this advance payment is recoupable from the future royalties. For instance, if this game earns $1,500,000, the royalty would be $20,000 instead of $50,000 due to recouped advance payment.
Regular Engine Updates
We’ve updated our Release Policy to deliver more frequent engine updates in-between major releases. For the past years, Flax updates (eg. 1.4
, 1.5
) happened every ~4 months and we will continue to do so. In addition to that, we will support the latest stable version with monthly patch updates (eg. 1.7.1
, 1.7.2
). Until now we released only critical bug fixes and security updates which left large gaps in the engine roadmap timeline where most of devs used daily master
builds that are not guaranteed to be stable.
Currently, Flax grows quicker every day, we have more users and contributors than ever. Because of that, we want to keep the agile nature of the project. Finally, we’ve set up milestones plan for long-term planning. This helps to structure daily operations and keep track of which issues will be resolved and when.
Cloth
For this release, we added physical Cloth simulation with tooling. New Cloth actor uses vertices of the mesh as cloth particles and simulates them with physical properties, forces, constraints, and collisions. Under the hood we use NvCloth
library and run simulation in async via Job System which results in great performance even with multiple clothes being actively simulated.
Flax Editor contains in-built cloth painting tools with per-vertex paint brush. We’ve added sample cloths to Physics Features Tour project in Flax Samples. To learn more about clothing tools see this documentation.
Behavior Trees
Another big feature in this release is a system of Behavior Trees used for gameplay programming. Behavior trees are a popular AI technique used in many computer games to design and simulate intelligent characters, agents, or objects. A behavior tree is a combination of many different AI techniques: hierarchical state machines, planning, scheduling, and action execution. The key advantage of behavior trees is that they are quite easy to understand and can be created with visual editing tools rather than code-only.
Behavior Trees were designed to be very extendable by both game and plugins. You can create custom node types and wrap any data into the Behavior Knowledge via Blackboard or Goals (our unique concept of behavior data). Finally, Editor contains Behavior Trees editor with live debugging utilities.
To learn more see this documentation.
Performance Improvements
We’ve always been committed to great performance. This time we’ve focused on large-scale projects (eg. scenes with 40k objects) and polishing our custom .NET bindings code that links C# and C++ runtimes together. Physics simulation with thousands of active bodies is more stable with new physics collision events reporting and new delegate events table storage.
We’ve started refactoring scenes loading to run as much as possible in async via Job System. Now, in 1.7
actors and scripts are created via Job System (as shown in the picture above) which results in large performance benefits in large worlds or levels using many prefabs. For the next update (1.8
), we plan to continue this and implement async scene objects deserialization via Job System. This will further improve performance.
Editor Improvements
Every update brings many large features but also tons of smaller things that matter to the Editor. Here is a list of notable ones:
- New plugin project creation tool in Editor (Plugins Window, see picture below),
- Plugin adding utility via
git clone
(eg. adding plugin from Github, see picture below), - Content browser improvements – new look, more features for sorting and items displaying,
- New Spline editing tools,
- Network profiler with object replication and RPCs stats,
- Missing script utility to quickly re-add missing scripts in Editor (eg. after renaming class),
- Automatic game settings apply when saving json file in Editor.
Improved Editor for macOS
Flax userbase on macOS is growing fast! In order to smooth the usability on that platform we’ve fixed many bugs related to .NET SDK detection, input, dockable windows usage, and much more. Starting from now we will provide code signed Flax Editor for macOS arm64 (.dmg
binary). It will include an engine built for macOS and iOS to easily cook games for those platforms.
We’ve added file watcher support to handle the hot-reloading of scripts and shaders. The graphics backend will handle proper MoltenVK runtime with the latest Vulkan SDK.
Onboarding Experience Improvements
Due to the recent rapid growth of Flax users we’ve worked on improving the onboarding experience. This includes:
- Improvements to .NET SDK installation detection in Editor,
- Improvements to Visual Studio, VS Code and Rider code editors integration,
- Fix stability of Launcher downloading daily
master
builds from Github Actions, - Release of official Editor for macOS package,
- Lots of bugfixing.
12 Comments
Gasimo · October 31, 2023 at 3:40 PM
Awesome work everyone!
Yousif Ragab · October 31, 2023 at 3:46 PM
I’m really confident about switching to Flax, it looks amazing!
ViM · October 31, 2023 at 3:55 PM
Oh wow! BTs! Radical! : O
Ty · October 31, 2023 at 4:16 PM
So much talent in the project, keep up the amazing amazing work! And thanks for the macOS client!
Evan · October 31, 2023 at 6:47 PM
I am only new to flax but these leaps forward are incredible and the commitment to your community is refreshing to say the least!
Igor · October 31, 2023 at 10:46 PM
We need physx update to latest version and destruction system ASAP – and it will be MIND BLOWING
Bart · November 2, 2023 at 3:55 PM
Cool I get excited.
One thing though. Instead of using protected/public override (polymorfism) for OnUpdate, OnEnable, etc.. it might be faster to use reflection and to see if functions are in a script and then add them as in Unity, therefore no empty function calls.
ji xiang shen · November 2, 2023 at 8:41 PM
Flaxengine is indeed better and better, but there is a very important basic matter that must not be ignored, that is, the support of multi-language (UTF-8), I hope to see it in the next version as soon as possible. Thanks to the Flaxengine team for their efforts.
Arshia Dehghani · November 4, 2023 at 2:52 PM
keep up the good work and also a mobile app for playtesting like unity’s ” unity remote” app on both ios and android devices would be a great last punch to unity’s female Gentelia .
Marcell Hermann · November 7, 2023 at 8:57 AM
I started experimenting with Flax and Godot after the Unity incident in September. I also used Unreal before, but for me it was a little bit too much (not to speak of C++). Godot is cool, but GDscript and the node hierarchy system is not my thing. I am very happy that I found Flax, such a powerful, and to me very familiar engine from the start. I love creating in C# so finding an engine that is this polished and uses C# as it’s primarily language was a game changer.
I am really impressed by the dedication to the development and would like to to thank you all! I sincerely hope the community grows and grows, as this engine deserves it. Keep up the great work!
Vadim Maltsev · November 10, 2023 at 8:13 AM
Awesome update! Regarding the cloth feature, is it possible to load a weightmap for the cloth to mask out the physical verticea without needing to paint the mask manually?
ji xiang shen · November 11, 2023 at 7:34 AM
The biggest problem of Unity is that the time to deal with the various problems of the game engine is huge. This is the main reason why my team wants to give up Unity, but from the current situation, the game performance of Unity is still high. Under the action of Job System, 500,000 cubes move crazy on the screen, FPS can still exceed 60, but I look forward to and have seen the potential of Flaxengine