I'm considering experimenting with game development. Which is a better investment of my time, learning XNA or learning how to write a Facebook game?
I would definitely invest time into learning XNA. Who knows how long facebook will be around.
Facebook isn't even a gaming platform--it's a social networking platform. You might want to rephrase the question to say Flash or DHTML. They can't really be compared.
I would say that the games you can make with XNA are far more richer than the HTML/Flash based Facebook games. Of course you could probably make more money from a Facebook game :)
I wouldn't perceive Facebook as a gaming platform. If you want to learn how to write a game, XNA is the way to go. I'd highly recommend picking up the XNA Unleashed book to walk through some of the basic XNA and game concepts.
That said, http://creators.xna.com has a ton of fantastic content and examples that do some pretty advanced things.
In short, go XNA.
XNA is a framework designed to make games. Facebook, not so much.
If you're not familiar with game development, XNA should give you a pretty good idea about how professional game development workflows go.
On the other hand, Actually finishing a simple text-based/tile-based game for Facebook using Flash / DHTML is probably a much more realistic goal than finishing a complex game where you have to deal with meshes, collision detection and cameras.
I say learn both XNA and the Facebook platform. You can integrate Facebook Connect into any type of application allowing your XNA game to connect to Facebook.
(If it's a 2D game you could even use Silverlight and have your game run directly in the browser)
Considering the amount of material out there about XNA (do a search on SO for instance), I would recommend starting XNA instead of Facebook.
Start at XNA Creator's club and go from there...
You can do both :-)
- Write an XNA Game
- Publish it on the XBox
- Port it to silverlight using SilverSprite: http://silversprite.codeplex.com/
- Write a Facebook app which hosts the silverlight game.
- ...
- Profit!