UI Frameworks

Microsoft now OWNS xamarin so if you don’t want to be left behind fix mono game real quick before Microsoft does, bugs in opentk (android full screen) will soon be fixed inside xamarin/visualstudio18 if you want to open source develop I suggest you hurry, xamarins NEW pages telling us about D.I.P. help along way to getting screen resolutions on an android device? I thought monogame was going to be helpful, Microsoft give there community away for free and it’s good stuff, i’ll stick with monogame if they can answer one question AND ITS BEEN TESTED.

@Paul_Crawley, you appear to be under the impression that MonoGame is now under the control of Microsoft. This is not the case. Xamarin did not own MonoGame at any time, and therefore Microsoft has no ownership of MonoGame. Some members of Microsoft have contributed code which goes through the same pull request/review process as everyone else. There is no “the sky is falling” happening here.

To answer your question, it does give you a full screen, i.e. no title bar and no soft buttons, at least the last time I checked it. Platforms do change however, so if an Android update has changed things, and this has happened before, it can be fixed, either by yourself or someone else in the community and submit a pull request with the changes.

not under any impression that Microsoft owns monogame, I know they don’t, they do own Xamarin now, latest Xamarin runs inside visual studio 2017 and Xamarin studio no longer works if you have VS 2017 installed.
I was pointing out that monogame claims to be cross platform, so setting a screen resolution of 800x600 on windows and setting a background picture (texture) should it not work on all platforms using the same commands, in the case of android it doesn’t.
to be truly cross platform shouldn’t the same code work the same way and be handled in the background? Try the code yourself, make a windows full screen mode of 800x600 on windows, use the same code for android, you’ll have an 800x600 box that DOES NOT cover the full screen (THE ENTIRE SCREEN!!!) as I been saying all along !!!

Spent the last two hours looking at UI Empty Keys,Mira and GeonBit UI.
And feel kind of lost right now. A solid and established UI library is really one of the things lacking.

1 Like

If you have any specific issues or need help with GeonBit feel free to PM me or open a ticket on github. building UI ain’t easy and feedback is always useful :slight_smile:

1 Like

There’s an entire Monogame.Extended.GUI framework and not an ounce of documentation (that I can find) around how to use it. So frustrating.

The GUI system in MonoGame.Extended is still very much a work in progress (and not currently top priority). Some parts of it work okay, other parts are still only half implemented.

I realize it’s frustrating when things are not complete and fully documented. If I knew of a way to snap my fingers and make it all happen I would.

Consider on the other hand what is done. A completely free, open source library that anyone can download, modify, dissect and use however they see fit. Anyone can spend the time to complete the unfinished bits, document the finished bits or just use it as a starting point for their own GUI system.

Literally hundreds of hours have already been put into it by myself and other contributors. We don’t get paid (the little bit that comes from Patreon helps cover some costs thanks to the supporters) but most of the work is purely driven by a passion for game development.

I love making libraries and tools to help other’s make games. That’s my passion, and I hope I can continue to get better at it. I’m always looking for ways to find more time to spend on it and new ways I can use that time more effectively.

Writing better documentation is something I’d really like to do. I haven’t found an effective way to do that yet.

I really hope I don’t come across as a jerk writing this. Honestly, I almost didn’t post it. Instead I hope it provides some insight into the frustrations I’ve been dealing with for the past couple of years.

Not at all, and I appreciate the dialogue.

I think one difference is, and perhaps I’m misinterpreting your feedback but based on it, it seems to me you see yourself as the only one who can work on this or get it done. The glory of OSS is that you can leverage the power of the mass to collectively work on, squash bugs and progress a piece of software.

My frustration is whoever wrote the GUI framework could create a simple piece of documentation in 5-10 minutes (I’m not expecting 50 pages or anything) with a simple explanation of use or just showing what objects are dependent on other objects that could save someone like me looking to check it out, hours of time. So with 0 documentation, nobody uses it and then the entire reason to open source it is lost. If nobody uses it, it might as well be on your hard drive kept away from everyone.

I would love to use it, contribute to it and make it better but if I can’t even get started I can’t help you. Neither can anyone else. That’s the point of OSS. Collectively creating software that’s better than one person could do is the point of this entire thing. Just my $.02

Spent some time on GeonBit UI, and is currently the best choice for sure.
It’s the most complete solution and very well documented.

I just wish more involvement from the Monogame Community helping to improve it

1 Like

In my experience it’s easier said than done. I started MonoGame.Extended nearly 2 years ago and in that time 48 people have contributed to the project. I appreciate the help of every one of those people. Thank you all.

What people often don’t realize is that creating a successful open source project is a lot of hard work. Simply throwing some code up on github is not good enough. Countless hours have gone into promoting the project. Talking about it on forums, answering questions, blog posts, tweets, merging pull requests, discussing designs and so on…

So yes, you can “leverage the power of the mass” but it’s certainly not easy

I wrote the GUI framework. Funnily enough I actually agree with you. Documentation is important and super helpful. We’ve all been on the receiving end of open source software that has very little documentation. It sucks.

The truth is, I worked on the GUI framework for a couple of months and I got burnt out. I had every intention of finishing it including documentation but I didn’t. Honestly, I’m not proud of it. I’d love to say I finish everything I start but the sad truth is I’m only human. Sometimes I make mistakes, sometimes I fail and not everything I do goes according to plan.

The previous paragraph is a little negative. Luckily, I’m generally a glass half full kind of guy. The good news is that making mistakes and failing is the only way to learn. I think I’ve learned a few things from my previous attempt and I have some ideas on how I’d approach it next time. Hopefully next time I’ll do a better job at not get burnt out and maybe I’ll even write a little documentation :wink:

Okay, let’s see. Well, I’ve already spent more than 10 minutes writing out this post. Maybe I’m just a bit slow gathering my thoughts tonight. What can I do in a few more minutes.

The place to get started would be the GuiDemo code in the repository.

Add some code like this to LoadContent:

        var titleScreen = GuiScreen.FromFile(Content, @"Content/title-screen.json");
        var guiRenderer = new GuiSpriteBatchRenderer(GraphicsDevice, _camera.GetViewMatrix);
        _guiSystem = new GuiSystem(_viewportAdapter, guiRenderer) { Screens = { titleScreen } };

        var quitButton = titleScreen.FindControl<GuiButton>("QuitButton");
        quitButton.Clicked += (sender, args) => _game.Back();

And call _guiSystem.Update(gameTime); and _guiSystem.Draw(gameTime); in the Update and Draw methods respectively.

Of course there’s also the json documents to explain but hopefully the demo will provide enough of a starting point.

I really do appreciate the help. I’m sure there’s more I could be doing to make it easier for contributors to contribute. I always take feedback seriously and I’ll definitely take it into consideration as we move forward.

Lastly, even though there’s a handful of other GUI frameworks, each with their own pros and cons, I still believe in the reasons why I started MonoGame.Extended.Gui in the first place. I’d love to bring it to completion some day. Its in the to-do list.


My real thing with this is everytime i try to start making my own.

It is the simple difficulty of what to use as the basis for all the buttons to make it extendable and flexible i find that these two in the case of a button class always seem to be counter to each other…

Do you guys go with a interface a base class or what pattern do you go with ? and why ?

I find if i go with a base class it keeps getting bigger as the number of different types of buttons i want to add grow as the requirements to keep it in a partitionable list that is still flexible make it so the base class has extra stuff previous buttons don’t require. So i just feel like im making slop. To boot there is the requirement for me that it doesn’t create garbage and be in a collision grid.

Has anyone here tried the Myra.UI interface package? It seems fairly straight forward to use…

This sentence says it all, this is something we don’t talk that much openly.
The price we pay as software developpers.
Writing softwares is so hard

10 years developper here. got burnt countless times.

1 Like

I appreciate you willing to have a mature conversation about this. Thank you.

I know OSS is a thankless job most of the time. You’re right, the potential for people to contribute is always there but unfortunately not always as much as the creator would like. The more popular the software is the more likely people will contribute. I think for me I’m just trying to help give advice on how to make it more popular. Would it make 100’s of people come out of the woods and contribute, probably not. Would it encourage a few more people like myself to do so, maybe.

Either way we all appreciate the work you guys do, even if we don’t say it all the time.


@craftworkgames @1stAnd10 I actually have started hacking into the MonoGame.Extended.UI a while ago. I’d say sure making GUI library is hard, which I believe you agree with me :slight_smile:.

I think I’m going to write a quick guide and a summary of my findings in the Extended category. Once we have a common ground then we can convince more people to contribute, or at least have an agreement on the direction the library would take.

1 Like

Looking forward to seeing what you come up with.

Only want to throw in my unfinished approach of recreating the legacy Unity3D GUI for MonoGame :slight_smile:

1 Like

I know this is an old post but I wanted to shout out Empty Keys. Give yourself some time to learn WPF and you won’t regret it. Hands down my favorite UI.

I have started my own UI Framework, the code can be found on GitHub: https://github.com/Apostolique/AposGui

Information about my design choices are in the wiki: https://github.com/Apostolique/AposGui/wiki/GUI-design-choices

Right now, I support mouse, keyboard, gamepad.

Empty Keys UI 3.1 is out - https://www.nuget.org/packages/EmptyKeysUI_MonoGame/

  • Library ported to .NET Standard 2.0
  • Compatible with MonoGame 3.7
  • Added support for Dispatcher
  • Fixed auto layout issue for Grid
  • Added auto scroll to selected item feature for ListBox