What is BRUTE?

BRUTE is a tool and runtime for transforming .NET IL code into highly portable C++ code. It was built to provide a fast C# runtime for MonoGame on game consoles where no other managed runtime existed.

The idea for BRUTE came in 2013 and the first proof of concept was developed in 2014. Since then it has expanded to cover the core C# feature set used by most games. It has runtime support for Windows desktops, PlayStation Vita, Xbox One, and Nintendo Switch.

The first MonoGame titles to use BRUTE include TowerFall and Axiom Verge. Since that time dozens more games have been released across all the major consoles including hits like Stardew Valley and Celeste.


By generating C++ code games using BRUTE gain full benefit of the optimizations provided by the native compiler for your target platform. We also get to easily alter how C# works in ways that are beneficial to games. For instance we can choose to not emit array bounds checking in favor of performance. It is also nice to easily set a breakpoint and step thru all the memory allocations in your game.

However the most critical feature of BRUTE is that it is easily ported to new platforms by implementing a few low level runtime functions and macros. This means games can be quickly ported to just about any new console, operating system, or embedded device.


The BRUTE tool is still currently under development and closed source. To get access contact @TomSpilman. Note you must be licensed by Nintendo, Microsoft, and/or Sony to get access to MonoGame and BRUTE support for consoles.


BRUTE was created by @TomSpilman with help from a few other contributors.

It was inspired by DotNetAnywhere, the first Unreal Engine 4 Emscripten demo, and tools like JSIL.

Need Help?

Having trouble with BRUTE?

Check out our documentation, submit an issue, or ask us on Gitter and we’ll help you sort it out.