From Unity to Flax - my thoughts so far

Just wanted to share my experience, as I finally decided to go for the Flax Engine for a new solo game project.

I have been using Unity for over a decade across many different kinds of projects (games, visualization, VR, and so on), so I thought my transition experience could be useful to others looking into a change of environment.

My main motivation to move away from Unity is their licensing model, which is too costly for small independent startups like mine. The cost also feels unpredictable since they can apparently change the terms at any point.

The second reason is that Unity has become bloated and slow to work with. Thousands of micro-pauses, leaving me staring at the progress bar every day, started to hurt both my productivity and my sanity.

Iā€™ve been working with Flax for just a week, so these are just my initial thoughtsā€”Iā€™m still very much in the learning phase.

PROS

  • Responsiveness: Thereā€™s no noticeable delay after changing a scriptā€”it can be tested immediately. This is such a huge relief compared to Unity, which loves throwing progress bars at you for every tiny change. This alone is reason enough to switch.
  • Easy to learn: Flax is set up very similarly to Unity, both in the IDE and the API, making the transition much smoother.
  • C++ integration: Itā€™s great to have the option to use C++ for extra processing power in a seamless, integrated way. Many engines support multiple languages (e.g., Godot with C# and GDScript), but Iā€™ve never liked that approach. Who wants to learn a proprietary language just for one engine? It also feels like a waste of resources for the engine devs that could be better spent improving the engineā€™s core functionality. Flax does it right by providing access to a modern, high-level language like C#, while also offering an accessible way to use optimized native code through C++.
  • Up-to-date .NET support: Flax supports the latest .NET versions, such as .NET 8, and I assume soon .NET 9. In contrast, Unity is stuck with outdated .NET versions due to legacy support. Modern .NET versions bring critical improvements, which are essential for competitive AAA game development.
  • Thoughtful design: The more I explore Flax, the more impressed I am with how thoughtfully itā€™s designed. For example, OnDebugDraw allows you to render shapes and text directly in the editor view for debugging, its neat and avoids having to cluttering the code with switches or remembering where to disable debug visualizations manually in the release.
  • Modern 3D engine: Flax is clean and optimized from the ground up, without being bogged down by legacy support. Itā€™s fully PBR-based, unlike Unity, which gradually adopted a PBR workflow while maintaining compatibility with outdated systems. Unityā€™s patched-together pipelines and quirks can be frustrating, and in some projects, I spent more time figuring out workarounds for bugs than actually developing the product.
  • Stability: Despite its relatively small user base and limited real-world testing, Flax has been remarkably stable. I havenā€™t encountered serious crashes, bugs, or the illogical workarounds that Unity often demands.
  • Meaningful feature set: Everything in Flax feels practical and usable. I anticipate using 70-80% of the engineā€™s features in my game, compared to only 15-20% in Unity. While this might sound like Unity is more capable, its extra features often get in the way. I frequently found myself fighting Unityā€™s ā€œhelpfulā€ abstractions, which would break or block progress. Itā€™s like Unity insist holding your handā€”only for you to realize the hand is attached to a torn-off zombie arm. :sweat_smile:
  • Cutting-edge technology: Flax includes modern features like automatic LOD, tessellation, terrain streaming, and networking. The engine feels like it was built by someone who truly understands the needs of game developers. It gives me a sleek, modern Unreal Engine vibe, whereas Unity feels more like a patchwork of ideas thrown together over time.

CONS

  • Limited documentation: While the API is reasonably well-documented, there isnā€™t much support from forums or third-party sites yet. Many developers rely on LLMs these days, but GPT-4 often struggles with Flax due to limited training data, sometimes fabricating methods or defaulting to Unity code. Would really like to see more samples, getting my head around how the animation system works without samples showcasing it has been time consuming for example.
  • No Asset Store: Unityā€™s Asset Store is massive and provides solutions for nearly every need. You can port Unity assets to Flax, but non-art assets will require additional work. Personally, this doesnā€™t bother me much since I often prefer sourcing assets elsewhere, like GitHub for code and other sites for art and music.
  • Uses cm as units: Using 1/100 m as a unit is one of those annoying legacy quirks often found in computer graphics. I assume this was adopted from Unreal Engine, which likely used it to handle the lack of native floating-point precision in the old days. In a modern engine, this approach doesnā€™t make much sense. For example, I built my own 2D physics engine for this game, and constantly converting between units is a headache. For large worlds, sacrificing the range of floats to achieve sub-millimeter precision feels unnecessary.
    This also leads to another awkward issue: the engineā€™s dual support for double/float precision coordinates, which seems to be a solution for the range limitations caused by using cm as the base unit. This results in a lot of code being written twice, with switches to choose between double or float. Supporting dual precision seems time-consuming and adds complexity that could be a source of potential problems. In my opinion, sticking uniformly to floats and using meters as the base unit would be a better approach. It would provide a 100x larger range, which is more than sufficient for most cases, and it would also improve compatibility with existing code. That said, I do appreciate the reasoning behind supporting doubles, as it makes large, open-world games more accessible.
    Now, the good news is that, from what I can see, Flax Engine 2.0 will adopt meters as the standard unit. I just hope this change doesnā€™t lead to the kind of legacy support bloat that Unity struggles with, given how fundamental it is. Personally, Iā€™m fine with porting my game to 2.0 with the new units if it means having a cleaner engine.
  • UI system: I havenā€™t had much time to explore the UI system yet, but it does seem a bit lacking. To be fair, Unityā€™s UI system isnā€™t great either. The new UI Toolkit is a buggy mess in my experience, IMGUI is outdated, and Unity UI, though still my favorite, lacks many basic widgets. From what Iā€™ve seen, Flax uses a code-heavy, Unity UI-like approach. For example, I couldnā€™t make a button and bind a method call to it directly in the inspector, as you can in Unity. I had to write some code to handle event binding. It also seems to lack support for rich text tags and advanced text rendering, like text outlines, which you get with TextMesh Pro. Overall, the UI system feels bare-bones, but thatā€™s not necessarily a bad thing.

CONCLUSION

Iā€™ve only scratched the surface after a short time with Flax, but the transition from Unity has been overwhelmingly positive. Flax feels clean and modern compared to the convoluted, bloated experience Unity has become. My productivity has noticeably increased, and the learning curve has been manageable.

Iā€™m excited to test the upcoming Flax Engine 2.0, especially its adoption of metric units. Each update has brought meaningful improvements, and Iā€™m optimistic about the engineā€™s future.

Iā€™ll share more insights as my project progresses. Hopefully, this journey provides useful takeaways for anyone considering the switch from Unity.

Finally, a huge thanks to the talented team behind Flax Engineā€”your work is incredible and deserves more recognition! :+1:

5 Likes

Awesome, thanks for sharing! Itā€™s summarizes my feelings when I tested Flax for the first time almost exactly. Totally agreed on the ā€œcm as unitsā€ issue. As a physics developer, that has been my show stopper for adopting Flax. Fixing this in 2.0 is the correct move.

1 Like

Agreed with everything you stated. Thanks for sharing. Adding to this.

I came from NWN1 & 2 land originally, then Bethesda game modding (mostly Skyrim and Fallout 4) which led me into Unity 4 then UE4.3. I still use Unity v5.6.7 Pro (easy testing) but do not like the 2017+ subscription model. I need a tool that can do interactive 3D entertainment/survival in third person.

  • Have been using Flax since 1.3 and going through the same build test (again) that I did in 1.6 and posted a large write up here in the forums. v1.9 is better but also mostly the same. I have not been able to break it like prior when doing mass imports. The Content Manager is functioning (still mostly sucks) with its 1,000ms ā€˜pulseā€™ update.

  • The Flax UI and speedy use of it is pleasant. Easy on the eyes and quick to find things. Very good.

  • C# scripting is easy (especially if already using Unity) and doing dynamics from scripts in objects is super easy and reliable. This is something UE4/5 does not do well at all (even in the C++ side). I have not had 1 dynamic reference bug in Flax and that is from pushing Flax very hard. Amazing to be honest.

  • cm units is a PITA to work with. Especially when using km for decimal math migration in large environments like a space scene or large environment. Using conversion functions works but some things like Physics are almost impossible to insert the conversion functions. I am mostly not using physics except for ragdolls. Math formulae to do things work fine and Flax C# has no trouble handling the speed. To be honest here, doing the math is faster and more reliable than using the Physics Loop.

  • Flax license model does not make sense currently. Especially with Godot (Flax is far better), O3DE, Stride, and Evergine (not open source). Flax is mostly excellent to use but O3DE (2024) is excellent and Lua is solid. Stride v4.2 is excellent and up to the same C# level but Flax has slightly better GI and is slightly faster. Evergine is very solid (C#) but I like the Flax material graph/editor much better. I would much prefer a donate to the Flax project to help fund Flax. I am 100% sure the funding would come in. With the current license model that resembles Epicā€™s UE4/5, donations are going to be limited. Not worth investing in something that we have to pay on Gross later. I have no trouble paying the % when I release but this Flax Engine is still just a passion project. It feels this way, it is represented this way, is executed this way, and as such is a license model mismatch. Be a success, then when it is battle hardened offer a purchase license (maybe like Unity 4/5 Pro) with the extra toys/source and personal support or something. The funds will come for certain. Flax is very good. Just needs A LOT of polish.

  • Flax polish is lacking. I get it, new shinies are fun and attract attention. Normal Map Green Channel has existed forever now and looks to be fixed in v1.9. The texture needs to be deleted then reimported with the selection: Invert Green Channel the popup note is worded correctly too. Flax v1.9 alpha textures now LERP properly too which is nice. Flax is definitely getting some much deserved polish but sometimes things that just using the engine for a couple of hours normally show what look like placeholders or some idea not completed.

  • I love Flax. Sticking with it. But darn it do I hate it at times with baffling decisions. Still though. It works and works well and is definitely getting better. Go Wojtek!

Cheers
O.

I found flax after my 2 years of making a game and not trusting the developer and switching engines
Unity to Unreal to Godot to finally Flaxengine. I have ABSOLUTELY fallen in love with this engine. Its everything I want. Unity Ui with everything I need right there. C# amazing SHARP graphics and amazing shaders. I have found my engine.

My quick thoughts

  • UI perfect its like it was made for me HOWEVER it is buggy and sometimes can become unresponsive.
  • C# debugging is incredibly fast.
  • Graphically matches and surpasses my Unreal effortā€¦ with little effort and barely a whirl on my GPU fans.

Cons

  • I agree with the issues with cm/metres all my code numbers needed changing which is a me problem yes but some of these numbers I am putting in seem mad high.

What bothers me

  • The Flax license model does bother me. I understand why it is the way it is. Wojciech Figat is the only guy (or was) making this Engine. Man needs money and to put it into FOSS territory with no income if something becomes a viral hit would be a shame for him. Though Flax license model is making people question ā€œwhy not just use Unreal or Unityā€ which is what I had done until this point. I think Figat probably has sleepless nights thinking of turning it FOSS which COULD make it the Godot, unity killer however thats a giant risk which he cannot come back on if it goes wrong.

  • My other worry isā€¦ whats happening? I have seen no updates. How is the flax team doing? We still doing this?

All in all I have been so incredibly happy with using this engine. I have a plan to finally take my 3D platformer/action game to further than the movement test I have been doing for all engines and aim for it to be show reel material this time next year to really show off flax. Engine needs to be advertised and I will love to help however I need a year to cook.

1 Like

@AynomlousPixel Thanks for sharing your thoughts. I am also a bit concerned about the licensing model, but not as a user, more on behalf of the Flax developer(s). The revenue kicks in at a threshold that would imply a very successful game, however, as far as I can see not even a single game has reached this level so far (even though the engine certainly has the potential for driving AAA games!) meaning there is no money driving the development of the engine at this point as far as I can see.

This becomes our problem too, as with no money helping out, the team working on it needs to spend the time on other jobs to make a living, and that takes the time away from Flax development. So far we have been lucky Wojciech Figat has put so much time, talent and effort into the engine. I truly hope he will harvest some fruits for his excellent work soon. I believe a successful game released on the engine showcasing its potential to other devs could be the trigger.

As for no updates, what exactly did you have in mind? From what I can see the engine had a major update to 1.9 just a couple of months ago, and I can see the contributions on github flows in at a pretty steady rate?

Yeah, I was meant to say these are the only things that allay my fears. I think because I know Wojciech Figat is pretty much the lone soul behind the bulk of the Flax engine I kinda need him to post a ā€œI am still here guys!ā€ every so often so I donā€™t feel like I am making a game for a dead engine lol. Just have attachment issues I guess.

1 Like