Short version, I ported Uproot to MonoGame.
This means Uproot now runs Microsoft-independent XNA-style implementation. The big changes include back-end .NET->Mono and DirectX->OpenGL migration. And, of course, this means portability to all kinds of platforms — Linux, Mac, Mobiles, and, more importantly, Windows 8 Metro. I could go on a long rant about Microsoft not supporting XNA anymore and having no plans or support for XNA Metro apps. Bah! (Will just have to learn Unity proper, I guess)
There were a few minor and a couple major hiccups, although that categorization really only applies to the end result. The actual issues were fairly easy to fix. I was very pleasantly surprised at how easy it was to port it. In fact, the word “port” is an exaggeration, as it is almost the same code! It just worked almost straight away, with 0 relevant compile errors. And since I didn’t use any fancy shamncy Microsoft stuff, like Gamer Services or that weird music/sound implementation, I did not have to deal with any incompatibilities. All the stuff I use is the out of the box stuff MonoGame guys have implemented. Most surprising part is the shaders, which gave me almost 0 trouble (except names used to access parameters) where I was expecting the most trouble!
Now, there are some issues. There is an FPS drop, which kind of a sucks, given how many sprites I draw. My render target switching especially is somewhat slower, and I do lots of that. Tiles draw 2x slower (from 7 to 15 ms per frame at debug). But I really don’t know how to speed any of this up besides drawing less. Thankfully, optimized release version is much snappier and runs at 60 fps fine. Though I’m worried about slower PCs.
To celebrate, I drew some native’s swamp huts (further proving I shouldn’t draw):