I’ve been strongly considering entering the Ludum Dare game competition this coming weekend, and I’ve been trying to figure out what platform and/or engine to use.
The obvious choice is XNA and some version of one of my own engines. This is what I’m most comfortable with. However, I was really hoping to get something that would work in a browser. This makes it much easier for people to trying out the game and vote on it. The Unity engine was a no-go because of the ramp-up time it would require.
I knew there were some ports of XNA that work on Silverlight, and more full XNA integration with Silverlight 5.
Unfortunately there is a pretty serious adoption blocker with using XNA in a Silverlight 5 application. It requires hardware accelerated graphics be turned on, which is not the default. Instead, the user who browses to a Silverlight/XNA application will be told to enable GPU acceleration. See here for more info. It would be a more straightforward experience simply to install a windows executable.
So my next attempt involved using Silverlight 4 and the SliverSprite libary, which is a Silverlight implementation of most of the 2d XNA APIs.
I got this set up and rendering some basic stuff, but unfortunately I ran into a bunch of problems. Many of them were surmountable (don’t bother trying to debug when running in Chrome, it’s a complete mess; there is no great solution for loading SpriteFonts; The basic overloads of SpriteBatch.Draw have some pretty serious bugs).
Unfortunately some were not. There is no point filtering supported, so crisp scaled 2d graphics are not possible. Also, the most basic graphics drawn are corrupted (the 2nd column of each sprite rendered was shifted down by one pixel).
So I’m not sure if this solution will work. I may keep working with both a regular XNA and a Silverlight/XNA version of the app and see how far I get. But I’ll be quick to ditch the Silverlight version if it proves troublesome.
I also looked at HTML5 as a possibility, but there would be quite a ramp-up there.