Top Rope Suplex

Learning Life & Programming

XNA: For Beginners or No?

Dennis, the senior software engineer for Cecropia, makes any interesting analysis of the XNA tools on his blog.

My young programmer mind boils down his post to two things:

1)  He doesn’t like that XNA is a propritary API

2)  He doesn’t like that you have to pay to run the applications on a 360

I understand the concerns about XNA being proprietary.  Me learning XNA is not going to help me learn a whole lot about C++ in order to later code for Nintendo’s systems.  However, me learning XNA is, in fact, helping me learn C# and, to an extent, JAVA.  Giving a geek the opportunity to code for a gaming system, no matter which one, is motivation enough to learn.

In order to code for Nintendo systems, I would need become a full-on developer and then buy CodeWarrior (i THINK that’s the way it works).  To write for the PS3… um… I have no idea where to begin or what language they use.  But Microsoft has come out with XNA and said, “Here!  Take it!  It’s free!  Build Windows games, build Xbox 360 games… we don’t care.  Just build it!”

More importantly, Microsoft has written a ton of documentation and tutorials on the subject.  I’ve never found reading APIs so interesting (and thus, I’ve entered a whole new level of nerdiness, I know).

But, Dennis does make a valid point; I am learning a proprietary API.  I will know how to write simple games for the 360 and Windows (Dennis did seem to miss that part; XNA also allows you to create distributable games for Windows for free).  I won’t be writing the next Oblivion or Gears of War… but I might be able to write a new Pac-Man or puzzle game.  At the very least, I can put my head on the 360.

Is Microsoft evil for offering me a free tool to use their stuff?  No; it’s a good (great?) business decision.  I’ll never forget that the first game system I ran code on was the 360.  But I don’t think that learning XNA is going to hinder my further development.  Since I’m learning it at the same time I’m learning JAVA, it’s a great way for me to be able to see the similarities between different languages.  I’m able to seperate the core concepts of programming from the nuiances of APIs.

If you want to learn to program games, I highly suggest using the XNA tools.  They are free, and there is already a ton of accessible documentation out there.  However, I do think it’s a good idea to learn something else at the same time.  Since XNA is C#, which is very similar to JAVA, I think the XNA/JAVA combo is a great intro to programming.  Of course, what do I know… I’m still just learning.

As to the complaint that you have to pay $50 or $100 to run the code on the 360… I’m ok with this.  The subscription also gets you access to additional content and starter kits.  And those starter kits will also work on PCs… and they’re distributable for free on PCs.  The hobbyist side of this all is great.  And $50 to run my code on a 360 is well worth the cost.

I’m very interested to learn what Microsoft has in store for XNA Games Studio Professional, when we’ll be able to sell our XNA projects, not just give them away.

December 12, 2006 - Posted by Aaron | C#, JAVA, Programming & Gaming, XNA | | 3 Comments

3 Comments »

  1. I agree with you.

    C# is not proprietary. Anybody is free to reimplement .Net for their platform, just as Mono is doing. So will Mono.Xna.

    I can fully understand that it’s not Microsoft’s job, just because they participate in a non-proprietary standard, to develop for the competition’s platforms. But that doesn’t stop the competition from doing so.

    Also, playing with XNA will teach you C#, and give you a good head for OOP, which is useful for any language.

    C# (and probably XNA too for that matter) will grow big in the coming ten years, maybe to the point where it is the major language of the gaming industry.

    If you want a job in the gaming industry, you should know the tools the industry is using. And I’d say that Windows (and Xbox) is a pretty big part of the market, so the industry will target those two platforms (among others).

    Would you rather learn the Nintendo SDK and lock yourself to that market? Yes, you can, and I wouldn’t complain. Why do some complain when people choose to niche themselves on the de facto standard platform?

    What’s the problem with coding in a system where you can sell the end result to the major gaming platform?

    Ranting again… Sorry. (c:

    Cheers for Microsoft!
    Joran

    Comment by Joran Omark | December 13, 2006 | Reply

  2. Joran -

    Thanks for visiting my blog!

    You’re entirely right about XNA helping me learn OOP in general. It was through working on my XNA stuff that objects and creating instances of them finally “clicked” in my head.

    Working on two different languages has really helped me figure out the core concepts of programming; whereas objects clicked in XNA, using Arrays clicked in JAVA for me. I need to start blogging about when certain techniques “click” for me. It would be interesting to go back 6 months from now and see how my understanding of certain techniques and tools have changed.

    And yes, I agree: “What’s the problem with coding in a system where you can sell the end result to the major gaming platform?” Even more so, I can freely distribute my stuff on the Windows platform (or sell it once XNA GS Professional comes out?). Free tools + the largest install base of any platform (Windows) = available audience. Homebrew DS software (while I am HIGHLY interested in learning) is a very, very closed market.

    And I had no idea that C# wasn’t proprietary. Mono (http://www.mono-project.com/) is something I’ll need to look into…

    Comment by Top Rope Suplex | December 13, 2006 | Reply

  3. very interesting, but I don’t agree with you
    Idetrorce

    Comment by Idetrorce | December 15, 2007 | Reply


Leave a comment