Today's "What do we do about our XNA Projects in a Windows Store World" Wednesday post is a project I stumbled on recently and given that there's a good bit of XNA code out there and that people are looking for ways to move it forward and/or reuse it (and that I like the acronym explaniation) I thought you all might find this project interesting.
As they clearly states it's not "done" but there is a Windows Store app based on it in the Store, so it might be done enough for you too!
This software is not completely production ready and work in progress. We started in September 2011 and many things are still to do and unfinished but we are on a good way. See Current Status for a overview how much of XNA compatibility ANX has reached. This software is mostly usable in a production environment but not all features are finished.
The first goal is to create a 1.0 version which has the same features as XNA and which behaves the same way.
The ANX.Framework is a platform independent game framework which is compatible with Microsoft's XNA Framework.
BTW: ANX is the acronym for 'ANX's not XNA' and XNA is the acronym for 'XNA's not acronymed'
Today the first ANX game was approved for the Windows 8 store: Whac-A-Hamster by our team member rene87. You can download it here: http://apps.microsoft.com/webpdp/de-DE/app/whac-a-hamster/659d78c8-2eb4-4fe7-8560-d56c849f5827. This is no AAA game and it has a easy concept but it is a great proof-of-concept for our work. It proves that you are able to create Win8 ModernUI games with ANX.
What is the purpose of the ANX.Framework?
The ANX.Framework is a framework which is source compatible with Microsoft's XNA framework 4.0. Source compatibility means, that you can "translate" a XNA game project to be a ANX game project by simply replacing all namespaces from Microsoft.XNA.Framework to ANX.Framework. The advantage of ANX is simply that you are able to swap the RenderSystem, the InputSystem and the AudioSystem. By swapping this systems you are no more limited to run your game using DirectX9 which XNA is using. ANX comes with a DirectX10 RenderSystem as a default. A DirectX 11, DirectX 11.1 and a OpenGL 3 RenderSystem is currently in development. This will make it possible to run your games on Linux and other platforms which are supported by OpenGL etc. simply by swapping the namespaces.
After finishing the work on the core functions of porting the XNA framework over to ANX we will concentrate on finishing more RenderSystems, InputSystems and AudioSystems.
Another important point of the ANX.Framework is the fact, that the DirectX10 RenderSystem (and the DX11 and 11.1 RenderSystems too) are based on the awesome SharpDX project which is known as the fastest managed DirectX wrapper existing.
Current State of the project.
The current state is that we reached the goal of having the same signature as XNA (The way you can call all classes from your project) and we also got a first rendering sample to run on Ubuntu. This doesn't mean we have all of the features implemented yet! However we're making great progress and are working hard on implementing all the features XNA does. The RenderSystems are becoming more stable all the time and also the InputSystem is progressing. The next big task will be the AudioSystems.
Is this "yet another game engine"?
No, ANX is not another game engine but it is perfectly suited as basis of your game engine. ANX is a graphics, input and sound framework. It gives you a nice and easy to learn interface to the beasts that handles all the graphics stuff like DirectX and OpenGL. ANX will make it easy for you to dive into game development but you have to code. It is low level but it hasn't a steep learning curve like DirectX and OpenGL.
What's also cool is that you get the source for it all, ANX, samples, the whole thing. Is it active? Well there was a check-in just days ago, so yep, it's active.
Heck they even provide a tool to make it easy to convert your XNA game over to ANX.
For converting an XNA Game to the ANX Framework you can use the ProjectConverter Tool.
You can choose if the Project should be converted directly, so the result is saved in the source directory, or if it should be saved in a different path.
The tool can be used as a GUI- and a CMD-Variant.
This tool is still in development. If you encounter any errors, please open an Issue for it.
What the tool is doing
Since the ANX Framework is code compatible with XNA it's very easy to convert projects between these two.
The tool simply removes the XNA assembly references in the csproj file and replaces them with the corresponding ANX assemblies.
Then the tool iterates through all the code files associated with the csproj file and replaces all XNA usings with the ANX ones.
It can also convert XNA Content Projects to ANX Content Projects.
Using the Graphical User Interface
If you do not pass any arguments to the application, it will automatically start in GUI mode.
The UI looks like this and should be self explanatory.
Using the Command Line Interface
When starting the tool via cmd you can choose between different operation modes by passing parameters:
Included is even a Sample Browser...
If you've got XNA experience and would like to leverage that to build Windows Store apps, or want to use the power of DirectX but don't want to play in the C++ world, or just looking for some interesting code to read, looks like ANX is your ticket!