Monday, April 6, 2009

Blog, which art my creation: I command thee to live!

Well, this brings forth the existence of my first blog. Basically, my nefarious scheme is to use this to post my latest thoughts on the creation of entertainment (books and video games, primarily).

Essentially, writing books and designing games of all sorts have been my lifelong hobbies since I was a young warthog, and I'm highly opinionated on both. I'm also highly opinionated on politics(libertarian), religion (Church of Jesus Christ of Latter-Day Saints), education (homeschooling), finances (live cheaply and stay out of debt), food (sushi, though that one tends to conflict with my previously mentioned finances theory), and water (definitely H2O). However, this blog will be primarily devoted to my hobbies of writing and game programming/design.

So, onto my first game-related post:

XNA is (almost) awesome.

For the uninitiated, XNA (stands for XNA's Not Acronymed) is a programmer's framework that allows them to create game for the Xbox 360. The philosophy behind XNA is to let the game's creators focus more on designing their game and less on the exact behavior of the hardware. Thus, a lot of long and difficult tasks that are normally part of game programming are basically done for you or at least made a lot simpler. The trade-off is that you lose performance, so the XNA games are never going to be as visually impressive as their C/C++ counterparts.

Now that that's out of the way, the question is "How good is it?" First, the positive:

XNA code is written in C#, which I find to be more sensible, easy, and straightforward to code in than most other languages. On top of that, XNA itself is fairly straightforward (at least, as much as it is possible to be in game programming, which is inherently quite difficult). I got more done in a few hours on XNA than a week on DirectX. On top of that, most of the same code will run on both Windows and the Xbox 360, which is quite pleasing.

So what are the negatives? First off, 3d animation. While trying to create my first meaningful 3d game, things were going fairly well for the most part. I had my objects in the game, my physics, my collision detection, etc. Then I tried to animate one of the models...

Instead of finding a nice Animation class that could look into your 3ds max files, find animation data, and convert it to something XNAish, I discovered that animation was practically a cut feature (at least as far as any web searches went). I found occasional third party libraries that were confusing as heck and even more confusing when I tried to understand what they were actually doing, but the whole theory of "Let the programmer focus on creating his game" seemed to be completely lost. The code samples I found seemed to be re-creating in code what the artist had already done in his modeling program. If you're making a 3d space shooter or puzzle game, I guess you don't really need animation, but otherwise...Well, animation is actually the reason that I shelved my 3d game and started on a 2d one. I'm actually making progress, now.

Well, there's my wall of text for the day. Fare thee all well