FNA GUI Library

So I haven’t really touched my demo/play project, Galactic Aggressors, in a couple of months or so.  I started adding scene/screen support, making it overly complex as I usually do… which led to boredom and burnout.

Yesterday, I thought I’d fix that.  I decided I’d stop what I was doing, and revitalize my interest by getting the game working in a Windows VM as a change of pace.  That should have taken me 15 minutes, right?  I mean, the whole thing was developed in Linux with MonoDevelop + FNA; you’d think I could drop some Windows SDL DLLs in the game directory and call it a day.

Yeah right.  I must have fought with it for over an hour before getting frustrated to the point where I walked away from it.  It constantly complained that libglib-2.0-0.dll wasn’t found even though it’s in the same freaking directory as the related gtk-sharp DLLs that were loading just fine.  That glib DLL also doesn’t appear to have any registration entry points that regsvr32 or regasm would use, so I’m truly puzzled as to why it fails to load or what I can do about it.

As usual, all my pain is self-inflicted.  I never should have used GTK# for the level editor feature, and probably would be less burned out with the project if I had done the smart thing and made a U-turn back when I was plodding through the multi-type cell renderer issue and complaining about their API.  What I need is a real crossplatform GUI library that works with FNA on Linux.

The question now is:  What to use instead?  I searched around on the topic, and found several options (most of which are mentioned here:  https://gamedev.stackexchange.com/questions/42142/gui-library-for-monogame).  Of course, the vast majority of them seem to be old and no longer maintained.  The couple that aren’t abandoned are either reliant on Windows or have other odd blockers that prevent me from using them with FNA and/or Linux.

The prettiest option on the list was NuclearWinter, which is still maintained.  I recall that I already tried to get NuclearWinter working with FNA some months back, and (while it would render fine, after not too many changes) it had lots of issues with input operations due to the way it was written to hook Monogame’s OpenTK implementation (which is of course not there for my purposes, as FNA uses SDL instead).  I would try to get support working properly, but I need to set down a rule for myself not to spend all of my development playtime working on yet another 3rd party library… because it seems like that’s all I’ve been doing since I started this little demo project.

So, as a fallback I tried Ruminate.  I was able to get the Ruminate example up and running with Linux/FNA with only one change to the Ruminate code (they use backslashes to separate directories when loading their mappings file).  Ruminate seems to have all the basic features covered, and looks easy enough to extend, so I think I’ll have a go with that for now.