views:

2866

answers:

5

Which .Net technology is best suitable for which kind of game? What the criteria for choosing between WPF, Silverlight or XNA?

+8  A: 

If you need speed, ie first person shooter go for XNA, and if you want to write for XBox as well as windows go for XNA.

If you want to write for web go silverlight.

If you want desktop strategy (chess, cards etc) go WPF.

MrTelly
+18  A: 

Really, you're comparing apples to end tables to Tupperware...

WPF isn't strictly a game-related technology. Because of how it handles data binding and the separation of the UI layer from the logic layer, it might work well for anything where you're looking for a rich client, but you want to be able to make changes to the presentation easily, perhaps because you want the game to be skinnable. Apart from that, you're not really getting much for gaming out of WPF as a technology. It's kind of the baseline if you're assuming something on the Windows platform.

With Silverlight, you get browser based delivery on multiple platforms. That's the big draw. More power than you normally have in the browser, but certainly not what you have as a regular client-side app. More artistic freedom than you normally have in the browser, but again not as much as you'd have in a client-side app. If you've tried doing web-based games before, this is a big step up. If you're used to desktop-based stuff, accessing multiple clients might interest you, but otherwise it's a big step down in performance and in raw capabilities.

XNA is a game technology. It's not just that you get access to the Xbox (and Zune!) as a platform; it's that the entire infrastructure is built around making games. It gives you built in support for things like shaders, timers, collision detection, positional audio, and a whole host of stuff that you'd normally have to write yourself, whether your game is 2d or 3d. The base project even creates a basic game loop for you. It's very specific in the platforms that it supports and it supports them for gaming. Really, if building a game is the core of what you want to do and you're still learning the process, it's a great place to start. Assuming you don't need the specific advantages that the other technologies you mentioned have, I would say that XNA is probably your best choice, regardless of what kind of game you are planning on building.

Raumornie
+1  A: 

I guess this may beg the larger question;
Are you looking to write a game that fits a language, or do you want a language that fits games?

Having said that, I am going to go ahead second Raumornie by recommending XNA regardless.

I have just started down this path and have found a great deal of information available online for XNA. Hit up XNA Creators Club (http://creators.xna.com) and download everything that seems mildly interesting. There is a great deal of awesome code samples and mini games available.

Other Handy Links;
http://innovativegames.net/blog/xna-game-engine-tutorial-series/
http://www.thehazymind.com/category/xna/
http://www.ziggyware.com/

Tyronomo
A: 

hmmm i am in a Team that started a game in XNA. Stuff like Menus, Options Screens (we got a lot of them), Input Boxes, Buttons, Highscores, basic Layout in a flow style, Charts and things like these are pretty a Pain in XNA - it takes you months of the time you want to spend on the basic game features.

so we planned to make a fusion: Things that are Easy WPF are coded in WPF, things that become handy to XNA are coded in XNA.

Or lets tale the HUD of World of Warcraft - it would take you months in XNA, but only days in WPF...

there are a lot of voices out there who want for this reasons a fusion of this 2 technologies. Both rely on directX - but as far as i know it's not possible to fuse them in a simple and performant way.

Check this out: http://forums.xna.com/forums/p/1122/6527.aspx http://social.msdn.microsoft.com/Forums/en-US/xnaframework/thread/0562aab0-029a-4aed-a59a-8b94b1f1ca2f http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/259/XNA-Meet-WPF.aspx http://forums.xna.com/forums/p/29421/165307.aspx

+1  A: 

Assuming you're going to stick to 2D games, you could always just target all of the platforms :-D

For Windows, XBox and Zune (which you didn't mention in your list), use XNA.

For Windows, Mac, and Linux via the browser, take your XNA game and use SilverSprite to run it in Silverlight. You can then publish your game on xbox live, and then take the same game, and publish it on SilverArcade.

Joel Martinez