XNA, Hooray…or Nay?

November 17th, 2008

Download latest device drivers. Words that should be lived by if you don’t want to go through the headaches I just did. After a month of wrestling with the skydome, I changed tact. I wanted to see how far along XNA (the development environment that Microsoft made for PC and XBox 360 games) has come.

Suffice it to say, they have embraced 3D! So, I am going down the XNA C# path. I haven’t learned a new programming language since college some 16 years ago. Back then, I knew about 13. Since working professionally, there has not been a nail rusty enough to be pummeled by the trusty, powerful, and ever faithful C++.

C++ can do anything to the PC. If you want to create a new OS, do it in C++. Fly a rocket to Mars? C++. C++ Is the industry standard for good reason. It’s adaptable, forgiving, and fast. Kinda like a military chaplain in battle, you will find few programmers in foxholes who are not clinging to their C++. It’s not perfect, however. You can create memory leaks, multithread deadlocks, and write spaghetti code without discipline. And let’s face it, technology waits for no one, so out in the field, it’s easy to fall into bad habits during crunch time. As far as spaghetti code, once you are adept enough in C++ and can read it, you are probably not inclined to fix something ain’t broke.

Microsoft knew this going into mainstream “opensource” SDK kits for the next gen console. It takes years to become fluent in C++. But a hobbyist might not have the time, patience, and dedication necessary to create a game with such a formidable language. C#, Microsoft’s answer to Java (Sun’s answer to the next C++) handles just that. No pointers, no need for garbage collection. Just create a class, link to a dll, and you are done.

Almost. After installing the latest XNA 3.0 kit, I was QUICKLY….QUICKLY, disappointed. The kit came with no demos, and support was only available online. What were they thinking??! Demos were downloaded. Fine, a bump in the road. A perk was they had complete games in multiple genres called Starter Kits. Good for them! It’s about time they gave you more to work with then just a quickie sample that won’t work in the real world.

So for the past week I have been in sample hell and glory. The demos worked, the starter kits would crash. I found C# to be real easy to read and debug, I would be hard pressed to create an app from scratch. But I don’t think I’ve done that yet in the 20 years of programming, when cutting and pasting an existing app is so easy. The starter kit I was interested in was called RacingGame. Original.

Racing game didn’t work out of the box for me. Which is why I got the latest device drivers and fixed the problem. i was hoping someone on the XNA forum would answer the questions I had. Initially, I thought the forum would be great. My first post was quickly responded to, and numerous times there after. This past week, though, I have not heard too much. So it’s back to the good old days of solving problems on my own.

On the plus side, I think I will have a Glitchy prototype up and running in no time! Stay tuned.

A broken skydome

October 5th, 2008

I have spent weeks going over the engine, acclimating myself to the code, trying to hunt down this bug that only happens in full screen mode:

Broken skydome

ROAM terrain

September 9th, 2008

I am working on PIX currently.  There needs to be a mechanism that will allow the player to make a short movie of their game play so they can post it on youtube.  This is a bit more then a game such as Halo 3 allows.  You need Halo 3 and an XBox Live account to share with your friends, who need Halo 3 to see it.  Glitchy will make sharing more transparent…but not until I get PIX working.  Stay tuned, the next post may just be a movie of the engine in action!

Progress…?

August 11th, 2008

The Fundo engine is that much closer to working. It will now render a scene. There are major clipping issues, the code looks to load resources from a relative path, and then assumes that effect resources are valid. There are some asserts in the code, which is good, and DirectX does make it easy to debug. Some of the issues to get it working were linking to the June 2007 SDK libs. Other problems were getting it to use old .fx files with the newer SDK. I should have taken a screen shot, but I am getting a lot of clipping errors with the .fx files that come with the Gaia engine. I think shaders will be next to tackle! Seeing something on the screen after weeks of work does mean progress, and I am looking forward to understanding shaders. Look for screenshots soon, and the possibility of giving away the Fundo engine when it’s bare bones.

Prebuilt Engines

August 10th, 2008

So I spent the better part of last week rebuilding the Gaia engine to work in dev studio 2009. After finally getting it to build, and run, I realized that it ran the old code, and not the Oct 2004 update that Snook supplied. That version I had running in dev studio 2005, so that is what I am working on today. But while thinking about this, I’m not married to any one engine. I am actually retooling the Gaia engine into my own engine, named the FunDo Engine.

So I looked to see if there were any free game engines available. There are tons. Read the fine print if you are going to use any of these engines. Garage Games’ Torque Engine, for example, is riddled with gotchyas when it comes to commercially licensing their engine. Then there are the amateur engines that are riddled with bugs. Such as Gaia. It doesn’t compile out of the box, and even after that, it will crash. Sometimes it is better to do things your own way, even if you’ll be behind the cutting edge curve by a couple of years. Or maybe not. OK, back to work.

What’s in a Name?

August 10th, 2008

I recently saw a PBS special on late at night about a guy in Japan running for political office.  What I found very interesting was a part of the documentary that explained the candidate, Yamauchi, had to say his name every 3 seconds to passersby.  It didn’t matter what policies he stood behind, as long as he repeated his name over and over, people would vote for him!

And then, while watching the previews to the Disney film, Wall-E, I saw the preview for Bolt…which, I will not link.  Disney repeated this stupid dog’s name every second, or maybe even every half second.  They have no morals.  Wall-E was terrible, it had the soul of watching microwaveable popcorn cook.  After the “bing”, you’re left with a smoky haze and regretful feeling of “Why did I even bother?”

But this isn’t a movie review blog!  It’s a game dev blog, so the point I’m trying to make is Glitchy.  Ahem. The point I’m trying to Glitchy.  ??? Glitchy.  Grrrrr.  One second.  There’s a problem with my keyb-Glitchy.

Glitchy

Glitchy

Glitchy

Glitchy

Agggg!!!!!  OK, now do you get my Glitchy?  MY POINT!  Ugh, this is very frustrGlitchy.  My point is if you say the Glitchy name of whatever Glitchy it is you’re trying to promote Glitchy, it sinks into peoples braiGlitchy.  BRAINS!  Brains! Brains! Brains!  Now I’m sounding like a zombie.  Glitchy.

End of today’s blog.  Aha!  I got the last word in!  Glitchy

Monday’s post on…Thursday?

July 31st, 2008

Uhhh…heh heh. So much for kept promises! The work over the weekend was a bust. Again. At least I was able to get a DX9 sample compiled, built, and running. The problem was linking to the proper libraries. A quick schooling on Direct X, for the uninitiated and curious. Direct X is based on the COM model. The COM model http://en.wikipedia.org/wiki/Component_Object_Model allows for the origination of an object to be irrelevant to subsequent derivatives of the object. Now, what the hell does that mean, you ask? I guess some of us don’t like to read wiki, do we?

I’ll give an example for the layman, and then apply that example to what Direct X does. I create an object, I call it a dog. I define the general behavior and look of the dog, but I don’t get too specific. Why? Well, there are many types of dogs…work dogs, show dogs.

What does the dyslexic, atheist insomniac do?

He stays up late questioning the existence of dog.

My definition is going to be very very general. A dog has four legs, one head, one tail, and one body. My dog walks and runs, but can’t fly. Then I write a bunch of stuff that someone might do to a dog. Change color, maybe. Does it need to eat, or sleep, or bark? Can I share my dog with other people over the internet? I define these workings as strongly and coherently as possible. My first dog application might be as rudimentary as a stick figure dog sprite that can walk and jump and make a single bark. I call it Dog X 1.0, and give it to others to create their own stick figure dogs.

As time goes on, and computers get more powerful, I create Dog X 2.0. I can allow better features to be had for this iteration of dogs…BUT…but…anyone who created a dog with Dog X 1.0 is ok. Their dog is not obsolete. They can even add the new feature set from Dog X 2.0 to their new dog. Now they can have 3D dogs, with multiple voice channels so they can overlay a growl, into a bark, into a howl, into a whimper, etc. My main goal is backwards compatibility! As the technology progresses, so does a programmers possibilities, but I keep everyone who’s ever developed any dogs in the loop.

Microsoft failed to do this with Direct X, and their programming environments. With each iteration, they added more and more cool stuff…but when trying to build an old application with the latest version of Direct X, there would be too many errors generated to shake a stick at. Believe me, I’ve tried stick shaking, voo doo, exorcisms, and wasting weeks porting from Direct X 7 to 8 to 9 to 10. Now they’ve done it with making 11 Vista only.

1,100 programmers went into the Direct X waters, 300 came out. Sharks took the rest. Anyway, we delivered the bomb. Not quite. I am toying with 2D and sprites and XNA. I’ll deliver a bomb of a web page soon for Glitchy.

2D or Not 2D

July 24th, 2008

It’s official.  The only comments I’ve been getting on the blog are spam.  Therefore, if anyone wants to comment, they’re gunna have to log in.  If I get too many requests from spammers to log in, then this blog is going to be pretty darned one sided there don’t cha know?  In other news, still having compiler issues for building code that worked in 05, but doesn’t work in 09.  Why does Microsoft constantly tell me the project I am opening must be converted?

I was also approached by a colleague that I’ve known for many years about creating Actionscript 2D games.  I’ve been on the fence about this ever since Microsoft has made it a habit of radically changing their DirectX API from version to version.  What it boils down to is becoming well versed in an API that will be 3rd generation by the time you get your game done…and then what?  Player expectations will be far beyond anything one person can create art resources for.  There is no doubt that by adding that measly extra dimension, you open up a true world for the player to explore.

So now I’m at the crossroads of switching over to 2D or not 2D.  I will try once again over the weekend to get the terrain engine compiling.  If I can compile, I can optimize.  Once I optimize, then I can concentrate on tightening up the gameplay.  I still believe that gameplay rules.  More to come on Monday, and that’s a promise!

Blogging comments

July 17th, 2008

I am getting comments on my blog that are non-specific about the content of the blog, but peripheral enough to think they may be game related. The comments, in case you are too lazy to read (for sure, I am too lazy to link them!) read along the lines of “great blog, will be looking forward to more!” How ambiguous is that?!? What’s so great about this blog? I haven’t put anything on here that isn’t a regurgitation of some other site, and the information so far has been specifically about Sea Cow Games. I’ve gotten my share of spam mail, so unless these guys come forward with “here’s an idea about gaming that relates to your problem with…”, I’m gunna be awful leery. I’ll be like an old lady who opens her front door with the chain still attached, and she scowls out of the crack at any visitors.

I suppose I could make the blog user password enabled, but I want to give the average guy with zero free time the ability to zip in and out with a comment. A good comment. One that quotes me, even if all I wrote so far is “I had tuna on rye today!” Tell the old lady peeking behind the door that she got tuna breath for crying out loud.

Microsoft Grrrr!

July 11th, 2008

My troubles began when I tried to start up the new Dev Studio 2009 with a 2005 version of code, that really was written for Visual Studio 6. The included paths for the project, which worked fine in 2005, don’t work in 2009. So I am stuck including header by header, path by path, so that any outdated headers are not included.

On top of that, I tried connecting an old, but hardly used and boxed, Microsoft Force Feedback steering wheel, to the XBox 360. It didn’t work! I connect it to the PS3, and it slightly worked. I was playing Motosport with it. The camera was inverted, and the game doesn’t recognize using the steering wheel to select cars and tracks (although the menu is set up to handle this), but it did recognize the wheel. After the camera was inverted again, the game worked. It didn’t recognize the peddles, so we had to use the paddles on the wheel. Force feedback didn’t work, either. But I was really surprised and disappointed that Sony at least tried…Microsoft didn’t even bother trying. AND IT’S A PERIPHERAL MADE BY MICROSOFT.

I equate Microsoft to the pastry chef that’s really talented, knows how to make a great cake…but the kitchen is slightly messy, and he’ll misspell any names that are supposed to go on the cake. Before you can correct him, he’s already making pies, because pies are better, and everyone will be eating pies in the future.

I’m tempted to just make a story about Glitchy and get buzz going that way. It takes way too long to get up to speed with the latest SDK changes, and lackluster support. And sorry, but I am not going to make a cheap 2D side scroller for XNA. Player’s deserve more then that.That’s all for now!