Recently, I've been dabbling in various gaming frameworks and learning new languages as a means to understand the pros and cons of each. Along the way I felt it was necessary to document my findings, in hopes that it'll prove useful for other aspiring game developers out there as well.
Last month Microsoft began hosting the New York Game Makers meetup each Saturday at their midtown offices here in Manhattan, which is completely free and offers a space for like-minded developers to get together and learn. With the goal of teaching one new framework every few weeks or months and completing projects, Jesse Freeman has kicked things off with our first framework, Impact.
This excellent thread on StackOverflow explains it in better detail than I ever could. Alternatively, if you are coming from a background with Unity3D, this thread explains it very well in terms of game development. With that out of the way, let's get started on a head-to-head comparison of some of the major features included with both frameworks:
One of the best features of Impact is Weltmesiter (German for World Master), an easy to use and fully customizable level editor. This tool allows you to drag and drop entities (enemies, players, triggers, etc.) into a scene, in addition to offering the ability to paint the level with sprites. Layers can be applied, so parallax scrolling background and adding collision is only a matter of dragging and dropping from a sidebar.
The initial configuration is probably the most difficult part, but once you’ve complete that, the rest is easy.
XNA on the other hand, offers no such utility. The framework is the bare minimum; a high level API which handles all of the heavy lifting such as memory management, garbage collection, and talking to the GPU for you. Fortunately, you have the ability to write your own tools and integrate them into your project, although this can be a huge undertaking for inexperienced developers or those tight on time.
Tiled, a map editor for XNA, works well for most people, and when combined with former XNA staffer Nick Gravelyn’s TiledLib, a library for loading maps created with the TileLib, they offer a suitable alternative to Weltmeister. Michael Neel and his team at FuncWorks have greatly improved upon that tool and crafted their own library, Xtiled.
Impact will run your $100, a miniscule amount when you compare it to other software suites for game development, such as Unity, Unreal, or professional versions of GameMaker. XNA is completely free, but to publish games to Xbox Live Indie Games, the service available to all Xbox Live Gold members, you need to pay a $100 annual fee. Windows Phone is included in this package as well, and I *believe* Windows 8 is included in that, but I’m not certain, so I’ll be looking into that now. XBLIG titles can only be written in XNA.
Audio within HTML5 should be looked into on a platform-by-platform basis, as it is still in its infancy and not fully supported by all. When combined with the Ejecta Framework, Impact games work on the iPhone “with perfect sound, Multitouch, and almost native performance. Ejecta takes your JS source code, executes it, and directly renders your game via OpenGL to the screen.” –Impact
documentation HTML5/Javasscript are now native to Windows Phone 8, Win RT, and Windows 8, so your Impact games can be distributed within those respective app stores with relative ease, although you will need to find a way to allow for gamepad support, as Impact does not natively support it. Fortunately one individual wrote a plugin for it, but I haven't tested it. XNA on the other hand, natively runs on the Xbox 360, PC, and Windows Phone 7.
An open source project, MonoGame, opens things up even further,as it's an entirely new implementation of the XNA APIs. So it essentially takes the original XNA framework out of the picture therefore cuts the ties to DirectX, to allow for deployment in other marketplaces. Currently supported platforms include: iOS, Android, Windows (both OpenGL and DirectX), Mac OS X, Linux, Windows 8 Store, Windows Phone 8, PlayStation Mobile, and the OUYA console. This is all free. For those of you looking for a visual editor, and really wanting great 3D tools, Synapse Gaming offers the SunBurn engine, starting at $150.
XNA can be written with C#, and late in XNA's life cycle Visual Basic was added, although was never a popular choice. Since it is a member of Microsoft's overarching .NET framework, Visual Studio is the perfect choice for an IDE to write your code. This fully featured IDE includes everything you need and more: Debugger, Compiler, Intellisense, etc.
With the XNA team disbanded and Microsoft dropping support for it, the community around the framework has decreased rapidly as well. Still, there are hundreds of tutorials, documents, forum posts, and snippets of code to keep you moving along. The MonoGame project has reinvigorated much of the community as well, so there is certainly a community behind that to find help from.
Impact's community is relatively small and not nearly as active, although PointOfImpact.com is an excellent resource for gathering snippets of code, plugins, game samples, and help forums. I've been stuck a few times, and the lack of quick activity on those forums can be frustrating, so in that case I'd suggest using an alternative like Stack Exchange to find quicker assistance.
.inject() works similar to
.extend() but does not create a new Class - instead, it changes the Class in place. This is useful if you want to change the behavior of one of Impacts classes without changing the engine's source code, e.g. for plugins.
This is extremely useful for adding new functionality to a class, and once you get the hang of it you'll truly understand its power and value. While you shouldn't take this writeup as the end-all-be-all of the framework, it is simply my experience with it as I transition from XNA.
For $100 you've got an excellent cross-platform framework which allows for rapid prototyping, the ability to easily share projects, and a developer who is active in his own forums and offers terrific support. Those of you looking to venture into the world of JS/HTML5 would be hard pressed to find a better alternative.
Note: This is a cross-post from my personal blog. It also appears there.
Additional Resources: Jesse Freeman's Introducing HTML5 Game Development book is perfect for those looking to get started with impact. Included with the book is a link to the source code, which details from beginning to end, the process of creating a fully functional side scrolling platformer. It certainly helped me wrap my head around this new framework.