What bounties would you like to see next - big ticket items

At the MonoGame Foundation we are ever pushing the boundaries forward and in doing so, we recognise we also need help.

For those critical “must have” things we need sooner, the Foundation are willing to contribute to community project to further the Monogame Framework or its supporting content.

*Note, we state “Contribute”, this is not specifically paid work. Being open source, the contribution should still be voluntary, MonoGame is then supporting the developer with a contribution to help progress the work faster.

Past bounties which have accelerated the project include:

  • A new 2D developer tutorial (public)
  • A new 2D Shader tutorial (sponsors only now, public later)
  • Upgrade Texture compression libraries
  • Re-packaging of dependencies
  • New NativeAOT backend implementation (ongoing)

For a full list of current and past bounties, see here.

But the work continues, so the aim of this post is to allow all of the MonoGame community to feedback and give guidance for “What next?”

Current plans include:

  • NativeAOT for Mobile, iOS/Android - In design
  • ARM Deployment and validation - In design
  • FFmpeg and FFprobe update for Windows arm64 - In Design
  • 3D Shader tutorial to extend the 3D Sample - Under review

But what do you think! Let it be known.

Fun Fact: several of our bounty payments did not actually go to the developers, some have offered to donate their proceeds to charity, because they are awesome!

2 Likes

TL;DR: console porting is still my biggest pain-point with MG, all else is manageable and/or almost exactly the way I’d like it to be or at least is already moving in that direction :slight_smile:

I apologize in advance for how long-winded this is going to be, but I mean… you asked :stuck_out_tongue: I want to start by saying I’m absolutely jacked about MG and have been since I started using it some years after XNA was no longer really viable, especially in recent years with the foundation and everything. Crazy development has been happening behind the scenes (and not behind the scenes) and I love the direction MG has been taking overall.

For context of where this is coming from: I have been using MG for some 10+ years at least and XNA for many years before that. I have commercially-released several games, some of which have been ported to consoles, mobile, etc, even having releases on stuff like Atari VCS (the new one). Up till now all our released games have been 2D and our console porting has been touch-and-go as I’ll explain later, but porting to mobile and PC/Mac/Linux-based stuff has been a relative breeze. The purpose of stating this is to point out that the following brain dump is coming from the perspective of an experienced MG-based developer. It is my opinion that the main reasons people use MG, for the most part in this order, are (and therefore MGs goals should align with):

  • We want to code our games in C#
  • We like to write systems ourselves instead of using clunky existing engines
  • We like the XNA format/approach to coding games (i.e. I want to write my game to use the framework, not DirectX or whatever else directly, so I don’t have to worry about the specifics of how texture memory and sounds and whatever else is handled per platform)
  • We want to be able to write one code-base that can be deployed to multiple platforms relatively easily (by ourselves). DESPITE BEING LOWER ON THE LIST, THIS IS A BIG ONE!

To that last point, I want to point out that despite my personal extensive-ish experience deploying MG-based games, console porting is still mostly a black-box type of thing in my mind. If I code a DesktopGL game and want to port it to Android/iOS/Mac/Linux/Windows there are for-sure some platform-specific considerations to be made, but at least getting things running there is mostly “make a new project that’s set to deploy for that platform and click build”. What I have always had issues with is console porting. After you go through all the trouble to get approved with partners and they ship you devkits and everything is seeming awesome you come to find even just getting the boilerplate cornflowerblue MG project to run on it takes days or weeks to figure out, if you can at all. Then, even when you finally do, getting required stuff like showing the current player’s username is a whole other battle for no reason. If it wasn’t for roz, I wouldn’t be working on a PS5 port right now, which we’ve been blocked from doing for literal years. Our devkits were just collecting dust. To this day I’ve never gotten a non-UWP MG project running on my Xbox devkit, and we even have a game that released on Xbox years ago. I say all this to point out a first-hand experience from a non-novice and I know I am not the only one with these pains. Being that one of the top 5 reasons for pretty much anyone to use MG (imho) is to be able to build their game for consoles themselves, it seems nuts how difficult it is. Especially because the solution is just “knowing what knob to twist” as was the case with the excellent “Get Started on PS5” document roz put together for us. One day we had no hope of running on PS, the next we followed a few spelled-out steps of stuff I’d almost certainly never be able to work out on my own and bam-boom, PS5 build running. Also, just so it’s said, yes I’m aware that MG devs have put A TON of work into getting MG to run on consoles and even share their companies’ in-house-made porting tools (BRUTE) for free and we are EXTREMELY grateful for all that, but all that generosity is lost to the end-user that is unable to use it (me). Which, again imho, is the whole point of using MG in the first place. To wit…

Things I’d like to see (in order of priority, imho):

  • Updated readmes or whatever needs to be done to get a “follow these steps to run MG on X platform” as a part of each platform’s Github Wiki or wherever else. As they stand, the existing “Getting started” docs simply do not work. Full stop. Unless you have a deep understanding of either the platforms backends/SDKs, or .NET versioning issues, or both, you’re just SOL.
  • Per-Platform out-of-the-box integrations. These aren’t even really MG-specific, more so C#-specific, but still.*
  • Basic/Intermediate Networking examples (both for LAN and actual Online)
  • Post-basic-3D-understanding step-by-step tutorial for the most basic form of making a model in Blender, importing/building that in MG, and not only rendering it but even animating it a bit. Nothing crazy - but more than just moving/scaling/etc the model, having it actually have like an actuating arm or some such. It’s not that hard to study existing material to understand the basics of 3D, matrices, basic vertex shaders, etc. But it’s a decent jump between that and like shadows/model animation/etc. Basics that could maybe bridge the gap between “this is how you render a billboard, a box, or an FBX” and “this is how you could have a character with a running animation”.

*For our Xbox port of Muffed (a top-down shooter game we released some years ago when UWP was still allowed for ID@Xbox builds), it took ages to work through all sorts of Xbox docs and forums and you-name-it to end up putting together what became a simple 300-ish line class file that handles all our “Xbox Integrations”. Stuff like checking the user’s game license/ownership, displaying the username, awarding achievements, player-specific save file storage access, basic stuff like that. There’s no reason there couldn’t be a boilerplate version of this that would work for any game as a “starting point” that would have saved me literally weeks or even months of BS to get our game doing Xbox things. I propose a bounty for simple .cs files included in each platform for like MonoGame.Integrations.(Xbox, Steam, PS/SCE, etc) classes. I have one of these for each of my platforms, the only one that could be stripped and re-used now is probably just the one for Steam, but again is one of those “for someone that knows what APIs to use and how, this is so straightforward it’s silly. For those that don’t, this will be a multi-week deep-dive into random disconnected docs at best, and most likely end up as an effort to hound other devs into helping you out to get a boilerplate thing started because all you can find on your own is Unity-referenced nonsense.” Steam integrations are a great example of this, because it’s literally just “include Steamworks .NET and then call MonoGame.Intregrations.Steam.GetCurrentUsername”. Since I’ve used Steam APIs a lot it’s super easy for me, just as I assume other APIs are for other devs that have used them as their main platform. I’m not suggesting these would include more than just the basics because they’d end up having crazy maintenance needs, but at least just the “required features” to run on X platform and stuff like license checking seems like it’d be maintainable enough.

Upcoming things I’m most jacked about:

  • NativeAOT support (this is huge, especially for consoles)
  • New project-based content management. As a developer that never really liked MGCB and always used it completely separately from my game project anyway, this is really neat to see :slight_smile:
  • Updated/updaing support for consoles and mobile :slight_smile:

I <3 MonoGame

2 Likes

I feel like my desires here are fairly simple. Web. Web, web, a thousand times web.

I know it’s a comparatively hyper niche desire, though. KNI exists, but currently that’s just 100% unsupported on Linux (and I believe Mac?), meaning it’s not really of any use to me.

2 Likes

Video playback that actually works on all platforms, please :slight_smile:

Of all the things that don’t work, this is the most annoying to tell people to try and roll their own solution, because it requires a lot of native library integration which can vary by platform. I know at least a few small commercial games that opted away from MonoGame in large part due to this.

1 Like

Yup, KNI has no Mac or Linux support, full stop, which I mostly develop on. I only ever boot up to my Windows partition when I need to work with KNI. It would be wonderful if MonoGame supported Web builds, especially since they’re kinda crucial for game jams these days (and deploying a web build makes getting strangers to help with playtesting much less riskier for them as well).

1 Like

I work in graphics programming and in most cases i run into the limitations of OpenGL 3.0 when targeting cross-platform builds. This is especially restrictive when implementing more advanced rendering techniques (not to mention that such configurations are difficult or impossible to profile properly with tools like RenderDoc). Frankly, I don’t believe the target audience for my projects is using hardware that old or constrained. A huge thank you to the developers for currently working on Vulkan and DX12. However, I would also like to see a more modern graphics API surface in MonoGame. For example, support for features such as alpha-to-coverage, independent blend functions, depth buffer copying, geometry shaders, and other capabilities that became standard after OpenGL 3.0 would make a substantial difference.

3 Likes

Yeah, that’s exactly the use case I would be after. Game jams, and an added element of trust for a demo of sorts.

I know it’s not even close to a small ask. But this is big ticket items, after all!

3 Likes