Let’s start with a little history: Development on ExEn started when I tried to use XnaTouch and SilverSprite to port an XNA game to iOS and Silverlight.
Up until that point I had been singing the praises of XNA, not only because it is a really fantastic library, but because it had this cross-platform support.
Of course, once I actually tried to use XnaTouch and SilverSprite I quickly changed my tune. Quite frankly the libraries were atrocious. Unusable. Poorly coded, ugly, buggy and slow.
Appalled, I started work on ExEn. It started from an amalgamation of XnaTouch and SilverSprite, but ended up being a near-complete rewrite. ExEn was created to live up to my very high standards. It’s performant, it’s has very few bugs – and none as blatant as its forebears, and it has a design philosophy that puts usability for real game developers first.
Of course, there is a wide chasm between a library for my internal use, and a library that anyone can use. So last year I experimented with crowd-funding. Thanks to contributions from the community, I raised enough money to take the time to work on a public release of ExEn, plus adding support for the Android platform.
The development of ExEn did not go perfectly smoothly – no software development project does. Adding support for the amazingly obtuse Android platform was especially challenging. But I think I did a pretty good job, and for the most part I enjoyed working on it. And the people who have been using ExEn for their projects have sent me nothing but praise.
ExEn is currently the best platform for porting SpriteBatch XNA games to iOS and Android.
As an added side benefit, since first announcing ExEn online, I have had many offers of contract work developing and porting mobile games using ExEn as the platform. (Incidentally, if you’re looking for a skilled C# and iOS developer…)
Sadly, all good things must come to an end.
ExEn itself is not a financially viable project for me. Not even remotely. Even with the contracting work it brings in, time spent working on it is essentially a loss for me.
This comes particularly in the face of competition from MonoGame. What once started out as XnaTouch, buggy and ugly, was endorsed by the Mono folks, renamed to “MonoGame”, and has seen its development accelerate at a tremendous pace in the last year.
My understanding is that MonoGame is still significantly buggy. Even as recently as this month I’ve had developers tell me they are switching to ExEn because they found MonoGame unreasonably buggy. And in spite of ExEn being a higher quality platform, MonoGame continues to acquire features, users and support at a tremendous rate. Not to mention: bug fixes. The simple fact of the matter is that they have way more resources than I do. Time is eventually going to make their library better.
(And on the Silverlight front, Silverlight 5 brought with it an XNA-based API for hardware-accelerated immediate-mode rendering, rendering some of the cleverest bits of ExEn obsolete.)
But this has been going on for some time now. What has prompted this blog post is that the iPad 3 (sorry, “the new iPad”) came out and I got a bug report. ExEn apparently has a problem with its automagic retina-display fonts on the new iPad. I suspect the fix is simple. But I can’t check it myself – I don’t have an iPad 3. (I figure that my iPad 2 is still good. I’m actually using it to write this post while I clone my failing HDD – another story.)
Here is a screenshot (iPad 2 and iPad 3)
Now – I could buy a new iPad – a significant expense for me and basically a loss when I consider that I have an otherwise perfectly functional iPad 2.
I also strongly considered crowd-funding the purchase of a new iPad – and perhaps even (in a fairly literal sense) buying some time to improve ExEn. In crowd-funding terms it’s a fairly small amount of money. I considered this so strongly that I actually shot the video for it. This option would still be a loss – this time of time. I would have had to put a large amount of work into the funding rewards and the funding drive itself – more than it would have earned back.
I decided, after a lot of reflection, to do neither. While those plans would have worked this time around, they are not sustainable. I don’t have the spare time or money to pour into ExEn development on a long-term basis (I wish I did). Even with the contract work that ExEn brings in it isn’t worthwhile. And I expect ExEn contract work will gradually dry up as MonoGame gains ground.
So rather than heading down this dead-end path, I have decided that it’s time to wind things up.
(I’ll still do what I can to fix this particular bug. I just won’t be spending money or an excess of time to do so. If anyone has a patch, I’d be very grateful.)
I don’t want to leave ExEn developers completely in the lurch. First of all, feel free to email me if you have any questions or concerns.
If someone out there wants to simply buy me an iPad 3, I would be thrilled to get ExEn to work as seamlessly there as it does on every other iOS device. Send me an email if you’re keen. (I know this isn’t as trendy as a sexy video and a crowd-funding project, but it’s a heck of a lot easier.)
Finally – and this is by far the most important – if you are a MonoGame developer: Please steal my code!
I would love to be able to tell all the ExEn users that MonoGame is a worthy replacement. So if you work with MonoGame email me and maybe I can help you integrate the best bits of ExEn into your library. You don’t even need my permission – ExEn is open source. (I haven’t looked at your code base for a while – but I’d love to be presently surprised to find ExEn code already in there.)
(Update: read my next post about nice ExEn features you can have.)
(Alternately, if someone out there is interested in taking over the ExEn project – and you have the time and skill to devote to it – I’d be happy to hand it over.)
Thank you to everyone who has supported ExEn. Together we made some fantastic software.
See you in the next project…