Tuesday, February 6, 2007

Let's Make a Game

When I was in High School, about a million years ago, I went to a youth camp in the mountains with one of my buddies. We shared a tent and hung out talking about this and that. I told him how I had saved up my allowance and bought a book about BASIC programming (my sister thought I was out of my mind.) Since then I had been learning to program on my sweet IBM XT that Dad had brought home from work. So then my friend says, "hey, we should make a game together."

I had no idea what I was in for.

It didn't take like to figure out that the version of BASIC I had was pretty lame for cool games. So I got a book (can't live without 'em) and started learning C, then C++. We discovered the totally rad Fastgraph library, the amazing Watcom compiler (now open source) that let you run in DOS protected mode, and generally had a great time.

Life has changed and making games seems so daunting anymore when you look at what the big shops are turning out. But heck, some games like Scorched Earth are still more fun than some EA games I've seen. So what's a guy to do? Well, there is still room for smaller games. People call them "casual" or "indie" games now. And they can be super fun. Today's tools let you make nice looking games with about the same effort as the old DOS/Fastgraph-based ones back in the day.

So hey, let's make a game. This time we will use Windows Presentation Foundation because we can. Plus, it's a great excuse to learn the next-generation Windows GUI framework.

Learning Windows Forms wasn't a huge deal. You had the form designer in Visual Studio, and the programming model was similar to most other operating system GUI frameworks around.

Windows Presentation Foundation will get a Visual Studio designer later this year or early next year. In the meantime there is Expression Blend Beta 2 to play with. But how in the world do you program the thing?

From what I've seen so far, the WPF programming model is it's own cat. Windows Presentation Foundation takes a radical departure from the old-school UI programming model. Just imagine throwing Flash, DirectX, XHTML, CSS, and .NET into a big blender and hitting 'puree'. Now sprinkle a little HyperCard on top for that extra something special. Mmm. Tasty shakes.

This past week I started learning WPF. Microsoft has some free eLearning courses, but they are pretty basic and talk about everything from about the 10,000-foot level. Good online docs are hard to find, and looking at the Windows SDK Samples doesn't help much since the code is so wonky compared to anything I've done before (yes, I did just use the word wonky). Sure, you've got MSDN, but that is primarily a reference you use when you already have a pretty good clue of what's going on. Unfortunately, I'm oh-so-clue-less at this point.

At times like these, you've either got to go take a class, buy a book, or suffer through the agony of trying to figure it all out on your own. Well, I'd rather install Gentoo than take that last approach, and classes are just too expensive for a cheapskate like myself.

So I ordered a book, as I did when I was a kid and many times since (programmers love books - they stay up at night devising various devious ways to get more books) . Of course I had to get THE book, according to the reviews. Most of them went something like this: "Wow! You've gotta get this book! It is so awesome I can't believe it! I read it and now I can write cool apps and my girlfriend came back to me and I am going to run for president now and change the world with WPF because it totally ROCKS! Make Apps, not War!"

Right. So, we'll see if it's any good. I'll let you know.

P.S. - Stay tuned for next week when I will talk details about the sweet game we are going to use as our "experiment".

No comments: