Ok, maybe the word "dead" is pretty harsh, but let's face the facts for a moment:
Afaik, MSFT is not developing XNA any further,
XNA 5 = a unicorn, no matter how much you ask for it,
Supporting DirectX11.x would imply a pretty huge re-write of XNA.
XNA/DirectX is being retired from the MVP Award Program this year 2014,
There is a huge movement inside MSFT to "go native" and fully embrace C++11,
MSFT has been pimping alternative solutions, like Unity, Cocos and GameMaker, and
There's no indication that the .NET Framework may be used to build games for the XBox One.
We could argue forever regarding the extent of each fact, whether new ones should be included in the list above and or even what went wrong to have reached this point, but the truth is that faithful XNA'ers must jump ships to avoid obsolescense.
So, if you are an XNA'er like me, now what?
YMMV, depending on factors like the platforms you want/need to target, the tech, frameworks and or solutions you and your team feel comfortable with, and so on so forth.
A popular choice among indies (including my-self), and the one being pimped the most by MSFT (through the [email protected] program), is Unity: a great solution with a strong community and support, it's indie friendly, it's evolving nicely and new target platforms are periodically added as add-ons.
It has its caveats (imvho and others') if you are coming from OOP, but after a moderate learning curve, you can get the job done with superb quality. No doubt about it. And regarding some rumours, it seems that support for XBox One console is around the corner.
A strong contender to Unity, is UDK. The learning curve is imho higher than with Unity (since you have to learn unreal script, Kismet and other tools) but there are lots of tutorials and videos on Internet that would help you get on track.
Another alternative is the Leadwerks Game Engine (for use with C++ and with support for Lua-based scripting) which is gaining popularity. In fact, a campaign to port it to Linux succeeded a few months ago.
There are more alternatives to both of them, like Shiva3D (Lua-based scripting) and C4 Game Engine (C++), that can be found in this database.
There are also another type of authorware that I deem as WYSIWYG-like for 2D games: GameMaker Studio, GameSalad, Construct2 and Clickteam Fusion, are a few examples, among others. Each with pros and cons, its own way to handle game's execution, triggers, events and scripts and mainly oriented towards casual gaming. Some of them are really popular among indies, but fall short once you look for more advanced features.
It's worth mentioning here that MSFT is following the route of WYSIWYG with Project Spark for the XBox One (route that had started with XNA-based Kodu a while back for the 360). Let's see how this project rolls in the middle run ...
Now, what if you need more/full control over your game?
Well, in that case the answer depends on wether (a) you want to stick with C# as your preferred language or (b) you dare go native (either for the first time or return to your native roots).
C++ is still the standard in the Videogame Industry. Period. And if you search a little you may find some devs that still prefer C over C++ (like C99 lovers).
For new generations, exposed to a variety of higher-level languages than those, managed environments as well as scripting, languages like C/C++ may be scary. Dealing with pointers, memory leaks, memory corruption, resource depletion and crashes are part of the ocuppational hazards that one may face. And an unfriendly learning curve imposses a nasty entry barrier for newcomers.
But once you master the language (there are lots of tutos and books out there) you will feel a huge power at your hands, since C++ is a performing language that has evolved to an extent that Assembler is not missed, marginally speaking, even for critical code. Not to mention that C++11 (and the upcoming C++14) introduces new "dev-friendly" features that may help when newcomers decide to jump ships.
Plus, you will find a lot of middleware for many key areas (like AI, physics, rendering, etc.) that you can integrate into your own game engine or a third party ones, directly, with and without royalties.
One side note, in the case of iOS-based games/apps: Objective-C (or if you prefer "where C meets Smalltalk") is the language of choice. Personally speaking, I prefer C++ over Objective-C (as I prefer D over C++) but well, Objective-C (+ Cocoa) is the standard when coding natively for iOS.
Ok, in case you love C#, then you have at least the following four alternatives to XNA:
1) Monogame: this is the open source sibling of XNA, and thanks to Mono, it supports many non-MSFT platforms (recently, support for the PS4 console has been announced).
With few-to-none modifications to the source code of your XNA creations, you can port your games to a wide variety of platforms (including Win8 and WP8).
This open source solution has reached its third stable version, adding many requested features, like 3D support.
Not to mention that many well-known successful games have been created with Monogame (or custom adaptations of it) like: Bastion, Armed!, among others.
Last but not least, the community is growing strong around Monogame. As a matter of fact, if you like “the XNA-way” with the exact codebase then this is your perfect choice.
2) WaveEngine: developed by a team that counts with a couple of XNA/DirectX MVPs (with participation in the former well-known JadEngine), this cross-platform engine is a result of a two-year effort.
The Wave Engine team has developed this solution with XNA in mind in order to bring the closest experience to former XNA'ers, so that they feel at home even though it has its own codebase (which differs from XNA's one) and a component-based entity approach (like Unity).
The engine is completely free, so it's without a doubt worth trying! Check out the game "Bye Bye Brain Appocalipse" with over a million downloads.
3) DeltaEngine: the lead dev of this multiplatform solution (and CTO of Delta Engine GmbH) is the first XNA MVP that wrote a book about XNA.
It supports a variety of platforms, it allows coding with C# or C++, it offers tools, tutorials, demos plus sample kits, and games like Soulcraft show off the power of the solution.
You can check the licensing here.
4) SharpDX: created by Alex Mutel -as an alternative to SlimDX, this pure wrapper of DirectX has positioned as the lead solution for advanced user who want to program DX games on top of the lowest level available to C# (from DX 9.0c to DX 11.1, both included).
This set of open-source APIs is consumed by many of the above-mentioned solutions. What is more, games for Win8 from MSFT Studios (through partners like Arkadium) have been developed using SharpDX (i.e.: minesweeper, solitaire, and mahjong).
For those that create games with SharpDX but also want to support non-MSFT platforms, please check OpenTK, a wrapper of OpenGL, OpenCL, OpenAL.
There are other alternatives like Axiom and ANX, but those four are imho the most popular ones.
You may be wondering: "Ok, you have mentioned the choices, but, which ones do you use or prefer?". If that is the case, allow me to reply: "It usually depends on the requirements". But when I'm free to pick a solution (or a few), since I love C#, my choices are: Unity, Monogame and WaveEngine.
I pick Unity not only because it's popular but also because support for both PS4 and XBox One has been announced.
And I also pick Monogame and WaveEngine because of my past as a faithful XNA'er (and former XNA/Direct MVP) and my preference for OOP over a component-based-entity-driven solution. As a matter of fact, to ease development with the latter, I have been developed during 2013 my own asset pipeline which I currently use for in-house projects:
Please note that I'll briefly write a few words about "the APE" in a later post (and the upcoming campaign at IndieGoGo for it), but if you want to know more about it now, then read the following posts on my personal blog: part 1, part 2, part 3, part 4, part 5 and part 6.
To wrap it up ...
Although XNA is being phased out and MSFT shows no sign of reverting this situation with an eventual XNA 5, there are lots of options out there for XNA'ers that want to follow the indie route either as a hobby or as business. Prices, licensing, features and supported/target platforms vary so each option should be assessed with proper care on a per-project basis.
Thus, personally, I do not care the language or solution an indie dev picks to develop a game provided it's the right choice for the project, generally, business-wise -where applicable.
Let's hope that MSFT allows in the short/middle run full .NET Framework based games on the XBox One as Sony does with Xamarin's Mono port for the PS4.
Well, this is it for now, so I hope this post help former XNA'ers pick the path to follow from now on ...
'till next post,