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.
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.
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.
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.
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.
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.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.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.
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.
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.
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.
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
masterbuilds from Github Actions,
- Release of official Editor for macOS package,
- Lots of bugfixing.