[MonoGame/MonoGame] Opening up BRUTE - Csharp

This is not about MG itself but a core component that allows MG to run on consoles - BRUTE. Aside from the console-specific bits, is there a reason it's not widely available and open? There's a lack of quality open-source IL to C++ transpilers, and I'd imagine this would create a lot of new opportunities regarding .NET game development, including on desktop, mobile, and especially web platforms.

Currently available .NET AOT options (feel free to enlighten me): - .NET Native - specific to Windows/UWP. - CoreRT - in a preview state and may or may not ever fully develop, as good as it currently is. - Unity IL2CPP - locked down and deeply tied to their proprietary engine.

Based on BRUTE's website, BRUTE sounds like an ideal tool to have an open community of collaborators and users. We know how well it works on consoles due to all the MG games developed for them. I'd love to have a discussion about this and learn more since I don't have access to the tool.

What version of MonoGame does the bug occur on:

  • Develop

What operating system are you using:

  • Windows, Linux

What MonoGame platform are you using:

- DesktopGL

Asked Nov 13 '21 22:11
avatar kimimaru4000

2 Answer:

Hey all.

is there a reason it's not widely available and open?

Just that i hate a lot of aspects of its current implementation and have been working towards improving it as we work on various ports.

Knowing how open source works it is hard to get any real good contributors. So opening it will just add more workload on myself providing support, reviewing PRs and usually rejecting them... which i really hate to do.

There is also a more minor issue that technically it exposed the C++ project formats for some consoles. It is arguable that isn't a big deal... but a little worried by that.

Going to think how i can make it open ASAP and try to guide people into the right direction to help move it forward.

it's stuck at C# version 5.

It has been moving forward... we support a lot of 6 and 7. The issue is the current decompiler we're using to make the code look nice generates some broken code. Upgrading it may or may not produce better code... i need to test it on some of our projects here.

The bigger plan is to totally drop the decompiler and just work from raw IL. Our C++ will be uglier, but it will be much more reliable and we'll be in full control over code generation.

So, what's the long term plan?

My plan is to keep BRUTE running and as up to date as possible until a superior option presents itself. At this point i don't see one for the next couple of years.

Answered Feb 03 '20 at 15:53
avatar  of tomspilman

We were also looking at updating the decompiler and found out how poorly that project documents their breakages

Yeah i sort of gave up on that avenue because of things like that. It just isn't a reliable library and we need to cut ties with it.

Fixing the template generation is probably the major blocker

I think i have a plan for that. The new VS project format allows for us to conditionally include CS files farily easily. Going to use that to move all that into separate .cs and .target files stored in the console repos.

Going to get that worked out first then we could open things.

Answered Feb 03 '20 at 16:59
avatar  of tomspilman