BRUTAL is the free C# framework that got RimWorld off Unity

BRUTAL is the free C# framework that RimWorld’s studio, Ludeon, used to build Waylith, the engine that took the game off Unity. In the studio’s own test, a late-game colony ran 2.2x faster and a 1,500-mod pack loaded in 6 minutes instead of 14. It ships no editor and no renderer, and its license isn’t approved as open source.
Key Takeaways
- RimWorld swapped Unity for a BRUTAL-based engine in about five months.
- Ludeon saw 2 to 4 times better speed, and most mods still work.
- BRUTAL gives you no editor, no scene graph and no renderer.
- It’s free for commercial games, but you must show its logo first.
- It suits big simulation games, not a weekend platformer.
What is the BRUTAL C# framework?
BRUTAL comes from RocketWerkz, the New Zealand studio of DayZ creator Dean Hall, which also makes Stationeers and ICARUS. Hall announced it in a Reddit post on r/gamedev , Reddit’s game developer forum. The post passed 4,000 upvotes and 430 comments in two days, which is big for a library with no editor. It’s published under Ahwoo, Hall’s new game store.
The studio spent four years building it in private. Making your own tech was such a “red flag” for a studio that the project was kept secret even inside RocketWerkz. He also says plainly that he doesn’t think everyone should use it. The name is meant as a warning.
At its core, BRUTAL is a custom interop layer that gives C# direct access to native libraries. The team built libraries around it for maths, memory, strings, job scheduling, logging and localization. It ships bindings for:
- Graphics: Vulkan (with VMA), OpenGL, ShaderC, Slang, RenderDoc
- Windows and input: GLFW, SDL
- Debug UI: Dear ImGui and ImPlot
- Audio and networking: FMOD, OpenAL, RakNet
- Physics and text: Jolt, Box2D, FreeType
BRUTAL has no editor, no scene graph and no renderer, and the team won’t add them. Hall compares it to the Linux kernel and Ubuntu: BRUTAL is the kernel, and your game or engine is the distro. In his view, skipping the engine is faster, because he no longer spends weeks working out how an engine’s makers meant something to work.
Hall also called it XNA “from the other direction”, and that comparison landed. One commenter said it gave them warm feelings last felt on XNA 3.1, Microsoft’s old C# game toolkit.
How RimWorld left Unity for the Waylith engine
RimWorld runs on Waylith, an engine Ludeon built on top of the framework. RimWorld creator Tynan Sylvester came to Hall with a problem on May 1st. About five months later, the new engine was announced.

RimWorld update 1.7 moves the game from Unity to Ludeon’s own engine. It looks and plays the same, but runs 2 to 4 times faster in Ludeon’s tests, depending on PC and mod list.
| Test | RimWorld 1.6 (Unity) | RimWorld 1.7 (Waylith) |
|---|---|---|
| Stress-tested late-game colony | 1x | 2.2x faster |
| 1,500-mod pack load time | 14 minutes | 6 minutes |
These numbers come from Ludeon’s own tests, not an independent benchmark.
Compatibility was the harder problem, and Ludeon seems to have solved most of it. Old saves load in the new version, and new saves still open in the old one. Most mods work unchanged. Very old PCs may not run it at all.

Update 1.7 is out on the Steam unstable beta branch, while the default branch keeps 1.6. For modders, Ludeon promises the latest C# features, room for heavy mods without the usual slowdown, and bigger visual effects. One modder who tested Waylith, u/Scurvyez, described moving shaders from HLSL to GLSL and using Vulkan for nebulae and black holes. Ludeon also hints that a second game will use Waylith.
Some players assumed the port was a quick AI job, which annoyed people in the thread.
Something I found really disheartening about the RimWorld announcement is how many people just handwaved away the effort involved with “AI”. All of this cross team collaboration and invested man hours just for so many folks to not appreciate it because they think someone prompted Claude “convert to new engine plz”.
List of games built with BRUTAL
The roster is short, and RocketWerkz made most of it.
Kitten Space Agency is RocketWerkz’s free pre-alpha spaceflight sim. It runs a solar system at real scale and is built straight on BRUTAL. The team includes Felipe Falanghe, who created Kerbal Space Program, and Stefan Moluf, who spent nearly 12 years writing SpaceX flight software. KSP modders Blackrack (Scatterer) and Jamie Leighton (JPLRepo) work on it too. It won Most Innovative Hi-Tech Creative Technology Solution at the 2026 NZ Hi-Tech Awards .

RocketWerkz runs three more of its games on BRUTAL:
- Torpedia moved off Unity about seven years into development. The port took two weeks plus a lot of cleanup, after Unity got slow to load and threatened to revoke the studio’s licenses.
- Gruntz has a unit test that flags any memory allocated during a frame.
- Art of the Rail is the third.
Two outside studios use it too:
- RimWorld by Ludeon, through its Waylith engine.
- Afterskies by Floating Origin Interactive.
Stationeers is the studio’s last Unity game left to port. RocketWerkz will start no new Unreal work.
Why the KSP creator says BRUTAL saved his career
Felipe Falanghe was the first developer outside RocketWerkz to use BRUTAL, and he’s making his next game with it.
It had gotten to a point where easily 90% or more of my time was going into trying to find a way to do whatever I needed to do, that was allowed to me by the engine. Instead of making the experience simpler and easier, I was spending most of my time fighting the tool.
In the same comment, Falanghe says he was close to quitting games, and Unity’s runtime fee was the last drop. Without an engine, he had to learn low-level graphics programming from scratch, where even getting one pixel on screen is a win. Six months later he was confident enough to start writing his own renderer.
In a 2025 interview with Game Developer , Hall predicted that frameworks, not engines, are the future of game development. Falanghe compared working in BRUTAL to sitting on a bar stool while Godot users sit on a comfy couch. The payoff, he said, is that “you get to use high precision numbers as far as you can into the game execution.”
That precision is the point for his kind of game. In a follow-up reply, he lists 4D games, non-Euclidean space and a slow speed of light. Any big general engine, he says, would fight that tooth and nail.
Why is BRUTAL faster than Unity’s C#?
The same C# code can run much faster outside Unity, for three reasons Hall gives in the thread.
The runtime differs: Unity runs C# on Mono with an older garbage collector. BRUTAL runs on .NET 10, with the modern generational collector and the newest language features.
Calls into native code also differ. Unity’s own fast binding tool is closed, so your libraries go through DllImport, with data conversion on many arguments. BRUTAL resolves each native function once into a raw function pointer. Structs use the same bytes on both sides, so a Vulkan call costs what it costs from C.
In a 2022 test by Hedberg Games , code that ran in about 20 ms on .NET Core took about 4,000 ms in Unity. Unity’s Burst compiler got it back to 20 ms, but only after a rewrite into Burst’s restricted subset of C#. BRUTAL runs ordinary C# on current .NET, so it needs no such rewrite.
BRUTAL also uses unmanaged allocators, span-based collections and strings that never touch the garbage collector, so a frame can run with zero managed allocations. Hall admits that’s “overkill for many games”. Its Vulkan bindings also map close to 1:1, so C++ Vulkan tutorials translate almost line for line.
one of the really cool things BRUTAL does is compute shaders. Vulkan allows you to run generic shader code that’s not limited to vertex/fragment shaders and in a way not limited to NVIDIA (like with CUDA). Kitten Space Agency uses these in really interesting ways.
Not everyone agreed it’s new. One reply points out that OpenGL has had compute shaders for over a decade. Therefore, the gain is a good C# Vulkan binding.
The BRUTAL license: free, with credit terms
BRUTAL is free for commercial games, with no royalties and no revenue share. In return, a shipped game must include:
- the BRUTAL copyright notice in the credits,
- the BRUTAL logo before gameplay starts,
- the NOTICE.txt file shipped alongside the game.
A separate commercial license removes these rules. Non-profit projects can also ask to skip the logo. The license is based on MIT with extra credit terms, and the Open Source Initiative hasn’t reviewed or approved it.
Hall frames the credit rule as the whole point. With AI and agents writing more code, he wants the engineers who built BRUTAL remembered by name. Some developers refuse that trade.
Using FLOSS tooling is nonoptional for me these days. I’m done with companies like Microsoft and Unity. BRUTAL’s license is NOT FLOSS to be clear.
Hall pitches BRUTAL against bigger costs. He cites Unreal’s 5% royalty on revenue above its threshold. He also cites Unity’s public fights with developers and recent account suspensions over a mandatory security change. Releasing BRUTAL free was a risk for a studio that isn’t wealthy, and Hall says so.
Its been terrifying. We are not a wealthy studio. But it really seems like someone had to do something, so its our turn.
Pull requests are welcome, but the team controls scope tightly. CONTRIBUTING.md covers AI-assisted code and the sign-off each commit needs. Hall expects to reject PRs that drift from the framework’s purpose.
Getting started with BRUTAL on Linux
You need the .NET 10 SDK, plus a Vulkan 1.3 GPU with current drivers if you plan to render anything. The Vulkan SDK is optional and adds validation layers. It runs on Windows and Linux. macOS support is unconfirmed, and consoles aren’t supported.
You can’t build from source yet, since project files and build scripts are still on the way. Instead, use the NuGet packages , one per top-level library. Start with a console project:
dotnet new console -n HelloBrutal
cd HelloBrutal
dotnet add package Ahwoo.Brutal.Core
dotnet add package Ahwoo.Brutal.GlfwThen replace Program.cs with this:
using Brutal.GlfwApi;
using Brutal.Numerics;
if (!Glfw.Init())
throw new Exception("Failed to initialize GLFW");
Glfw.WindowHint(GlfwWindowHint.ClientApi, 0);
var window = Glfw.CreateWindow(new GlfwWindow.CreateInfo
{
Title = "Hello BRUTAL",
Size = new int2(1280, 720),
});
while (!window.ShouldClose)
Glfw.PollEvents();
Glfw.Terminate();Start it with dotnet run and you get an empty 1280x720 window with no graphics API attached. Everything after that is yours to pick. The Vulkan packages are for writing a renderer, and ImGui gives you a debug UI. Concurrency is the job system, while FMOD and RakNet cover audio and networking.
Questions go on the BRUTAL forums, and bugs go on GitHub with a minimal repro. There’s also a Discord. The repo has about 1,700 stars and 88 forks, but only 10 commits on main, so the four years of work arrived as a code drop.
Who should use BRUTAL, and who should not
Good fits for BRUTAL include:
- experienced programmers who already know what they want to build,
- simulation-heavy games with huge scale, many units or precise coordinates,
- teams that spend more time fighting their engine than making the game,
- studios that want full source control over their foundation.
Bad fits include beginners, designers who live in an editor, and small 2D or story games. It also fails anyone who needs console export now, or an OSI-approved license. When a developer with a working C++ prototype asked whether to switch, Hall said no, unless something is blocking them outright.
| BRUTAL | Unity | Godot | MonoGame | |
|---|---|---|---|---|
| Editor | ✅ | ✅ | ||
| Built-in renderer | ✅ | ✅ | ✅ | |
| Price | $0 | $2,310/yr | $0 | $0 |
| Logo required | ✅ | |||
| OSI license | ✅ | ✅ | ||
| C# runtime | .NET 10 | Mono, IL2CPP | .NET | .NET |
| Best for | Simulations | Most games | Indie games | 2D games |
Godot and MonoGame are the closer free options, and both carry a standard open-source license. Pick BRUTAL only when your game breaks the assumptions those engines make. A weekend platformer would spend months on plumbing before the first jump.
Botmonster Tech