This project is read-only.

ExEn is a high-performance implementation of a subset of the XNA API that runs on Silverlight, iOS and Android.

For documentation, see the Documentation directory in the provided source files.



I no longer have time to properly maintain and support ExEn (see this blog post for details). On the one hand: ExEn is still an excellent choice for iOS and Android development, due to its stability and performance. On the other hand: I'm not adding new features or fixing bugs (which occasionally crop up when Apple changes something).

If you wish to use ExEn, download the latest SVN version and, if you run into problems, have a look in the contributed patches.


Don't forget to visit my blog at

See ExEn in action!

My game Light Blocks runs on Silverlight and iOS. You can play it online. Or download it from the App Store.

My game Captain Stretchy-Arms is currently a work-in-progress. You can see a video of it running on XNA, Silverlight and iOS, and play it in your browser in this blog post.

See how easy ExEn makes it to port a game from XNA to Silverlight an iOS in my 15-minutes Marblets Port video. The port now also runs on Android, and the source code is available with ExEn.

Finally, take a look at these games that other developers have made with ExEn.

How ExEn works

ExEn is an implementation of a subset of the XNA API that runs on Silverlight, iOS and Android. The goal of ExEn is to make it as easy as possible for you to port your game with the absolute minimum of platform-specific code. ExEn has been written with performance, robustness and API accuracy in mind.

On Silverlight, ExEn maps XNA's immediate-style API onto Silverlight's retained-style object tree in a high-performance way that does not require you to do any scene management. ExEn on Silverlight makes full use of Silverlight's hardware acceleration.

On iOS and Android, ExEn translates the XNA API into the platform's own API (and OpenGL for graphics) using Xamarin's MonoTouch and Mono for Android products to provide an implementation of C#/.NET and platform API bindings for each platform.

ExEn currently only supports XNA's 2D APIs for graphics (ie: SpriteBatch). However it is still possible to access the underlying platform using ExEn. For example, to port a 3D game to iOS and Android, you could port your renderer to OpenGL, and use ExEn for everything else.

Last edited Oct 1, 2012 at 11:55 AM by AndrewRussell, version 7