Quick Planitia Update

In the wake of my article on getting started in game programming, I have been taking my own advice and doing some learning. In particular I am getting more familiar with Direct3D. While I’ve known the basics for a while, I want to become a more advanced 3D programmer and I also need to learn vertex and pixel shaders. So I’m working my way through Frank Luna’s Introduction to 3D Game Programming with DirectX 9.0. I mentioned this book earlier but I really can’t say enough about it. As far as I’m concerned this is the book to get if you want to learn Direct3D.

Plus, with sections on terrain rendering, particle systems and picking, this book could have been subtitled “How to Program Planitia”.

So, no work will be done on Planitia for a bit while I work my way through this book. I’m currently on page 60 of 376. I am hoping to get through the book by the end of this week, though that will take some serious work.


Time For Zombies!

Dead Rising is a proper application of next-generation technology. Observe the following hypothetical design discussion:

Capcom Designer 1: Okay, what can we do on the Xbox 360 that we couldn’t do before?

Capcom Designer 2: Make the exact same kind of games we’ve been making, only prettier?

Capcom Designer 1: Dude, we’re designers, not artists. What can we do from a design standpoint that we couldn’t do before?

Capcom Designer 2: I don’t know…um…instead of putting a small number of very highly detailed models on the screen, we could put a very large number of moderately-detailed models on the screen instead.

Capcom Designer 1: Okay, that’s a good start…what kind of game could we make with that technology?

Capcom Designer 3: How about a game where you can run around and kill hundreds of zombies using anything that comes to hand?

Designer 1 + Designer 2: JACKPOT!

In other ways, though, the game is quite conventional:

Capcom Modeller 1: I’m giving every woman in this game really big boobs.

Capcom Modeller 2: Why?

Capcom Modeller 1: Because I can.

Capcom Modeller 2: AWESOME!

But it’s not about the boobs. It’s about cutting zombie heads off with a scythe. And as a result, this is the first game to ever make me really want a 360. Maybe that’ll be my Christmas present to myself…


Congratulations to Brad and Debbie Wardell!

Brad Wardell is the founder of Stardock and the creator of the Galactic Civilizations series of games. He’s one of my favorite people, and just a few days ago he and his wife Debbie were blessed with their third child, a girl named Ashley. They already have two boys, so its good that their third was a girl…it guarantees that they will get the Full Parenting Experience 🙂

Congratulations, Brad and Debbie!


E3

Well, I guess I should just be happy that I managed to have a game shown there…but I would really have liked to have gone, at least once. I never thought that the day would come when there wasn’t an E3 to look forward to in May.

And how will the poor Gamespot editors assert their superiority over each other and us now?

And now Gabe and Tycho are making noises about how PAX could become the next E3. Something tells me that they simply have no idea how much trouble they are making for themselves by suggesting that.


Skinny Boy

My son David has always been kind of skinny. It’s been a bit of a concern for me and my wife for a while…even though he seems to eat a lot (and eat a lot of protein), he always looks a little underweight.

He recently had to have some shots, since he’s starting kindergarten this year. So we took him to the doctor. The nurse weighed him and measured him and then told us, “Well, he’s in the seventy-fifth percentile for his weight…”

I was aghast. “He only weighs seventy-five percent of what he should?”

“Oh, no, oh, no!” she laughed. “That means he weighs more than seventy-five percent of five-year-olds.”

“So he’s actually over the normal weight? Why does he look so skinny, then?”

“Well, because he’s in the ninety-fifth percentile for his height.”

I was stunned. He doesn’t look skinny because he’s underweight, he looks skinny because he’s about six inches taller than the average five-year-old! And he just turned five two weeks ago!

Needless to say, I was relieved.


Getting Started in Game Programming

I’ve thought for a long time about writing an article on how to become a game programmer on your own. The problem is that everybody and their kid sister has written an article on this subject, and most of them are better than anything I could write.

But there is one thing I can do to help the budding game developer, and that’s point out which books he probably should be reading (and which ones he probably should avoid).

There are a couple steps on the path to becoming a game programmer. First, you have to pick your language. Your language is C++. There, wasn’t that easy?

Yeah, I’m being a little facetious. If you’re just writing games for yourself and don’t want to get an industry job or ever work on a team, you can write your games using whatever language, libraries and helper programs you want.

But if you want to become a professional, you’re going to have to learn C++. End of story. Oh sure, other languages might be helpful, but the vast majority of game development (both on PCs and on consoles) is done in C++. Why? Because it works, and more libraries have been written for it than any other language. There are free C++ compilers for almost every operating system on the planet. And there are more books on C++ than any other programming language.

Let’s talk about what to avoid. Avoid books that promise to teach you how to program a game in a short amount of time. What most of these books teach is how to use a scripting language or a gamemaker program to make games. This won’t be useful to you if you want to become a professional game developer. Specifically avoid the book 3D Game Programming All in One, as this book is basically just a tutorial for the Torque game engine and teaches you nothing about programming. Also take careful note of any book that promises to teach you DirectX; some of them actually use Visual Basic instead of C++, which makes them darn near useless.

So here’s what I suggest.

First, get a compiler. You cannot learn C++ without a compiler. If you’re on Windows, get Visual C++ Express and be done with it; there’s no sense in messing around with anything else. If you’re on another operating system you’ll probably end up with some version of GCC, which I don’t know much about, but it’s in widespread use so research shouldn’t be that hard.

Second, you need to learn basic C++ syntax. There are a lot of books on this subject. Tons and tons of them. Most of them are crap, but even a crappy book can suffice here if it does actually cover the basics. Now, back when I learned C++ I did it from a book that included a floppy disk with a copy of Borland’s Turbo C++ on it…that’s how long ago it was. So I’m not that familiar with the current crop of books, but the one I keep hearing about is Accelerated C++. You probably won’t go wrong with it (but this is the only book I will recommend that I haven’t actually read).

Once you’ve learned basic C++ and are familiar with your compiler, it’s time to get a more thorough overview of the language, and the best book for that is none other than Stroustrup’s The C++ Programming Language. Now, this book covers the entire language and most of the Standard Template Library and it’s not particularly difficult to read. But it should not be your first C++ book, because it isn’t a tutorial. I would recommend going straight through the book, reading each section and writing little programs in your compiler to demonstrate to yourself that you understand each concept – this is exactly how I learned C++ on my own. I would also recommend making double sure that you understand how classes work, how inheritance works, and how pointers work before you proceed to the next level. If you can’t tell me what a reference to a pointer is and why you would want to use one, you probably shouldn’t go on yet.

Now you know how to do pretty much everything in C++. But there’s more to learn, because there are a lot of things in C++ that you shouldn’t do even though you can. The next two books I would recommend are Meyers’ Effective C++ and McConnell’s Code Complete. Both of these are outstanding books that will make you a much better programmer practically overnight if you take the time to read and understand everything they say. Effective C++ will tell you about all the common traps C++ programmers fall into and explain how to avoid them. Code Complete is a bit higher level – it will teach you how to design your programs before you start coding so that your code doesn’t get so tangled you can’t deal with it any more. Code Complete is especially important if you plan to become part of a programming team.

Now, during the course of reading Effective C++ and Code Complete, you will probably encounter information that contradicts what you read in earlier books. In this case, these two books win.

Now you’re a hardcore C++ developer, but you still don’t know anything about game development. Therefore, your next book should be Llopis’ C++ For Game Programmers. This book is going to directly contradict things you’ve previously read; in this case, this book wins. You’ll be doing lots of stuff in game development that would make your average OOPmeister wince; that’s just the way game development is. Some of the content in the book will be stuff you already know. That’s okay, because the rest of it is pure gold. Pay special attention to the section on memory management; this is a vital concept that most game development books ignore because it can be quite difficult.

I’m also going to recommend that you read McShaffry’s Game Coding Complete at this point. Make sure you get the latest edition, which at the time of this writing is the fourth edition. This is the only book I’ve ever seen to cover how to design and write an overall game engine, as well as how to create a resource handling system. Again, these are both topics that most game development books ignore because of their difficulty. This book will also cover the basics of just about every aspect of game development, including graphics, sound, physics and networking.

If you’ve been reading and coding dilligently then you should now have a solid understanding of the basics of professional-level game development. Now there isn’t so much a progression as just a list of books I’d recommend.

The Graphics Gems series – if you’re doing 3D programming, and especially if you’re doing 3D programming on a platform that does not have hardware acceleration, then you must have at least the first book in this series. Yes, it is terribly expensive, but it’s worth it.

The Game Programming Gems series – this was an attempt to create a series like Graphics Gems, but for general game development. As they progressed the information presented became more specialized and less vital – but again, you should definitely own at least the first book.

If you are just starting out with Direct3D, then the book I’d recommend is Introduction to 3D Game Programming with DirectX 9.0 by Frank Luna. This book actually lives up to its name and will take you in baby steps from initializing Direct3D to particle systems, multitexturing, shadows, landscape rendering, picking, and pixel and vertex shaders. Make sure you get the first edition of this book, as the second edition will focus on DirectX 10 and will do everything with shaders. That’ll be interesting, but it won’t be a “for beginners” book like the first edition is.

Hope this helps!


Somewhat Structured

I really should check my incoming links more often. Casey Dunham from Somewhat Structured Thoughts wrote a post about my combat prototype and apparently didn’t hate it. Thanks, Casey! Hopefully I’ll finish it one day!


Planitia Design Pass

Okay, Planitia. Here’s the basic design I am visualizing.

You’re a god. Your people worship you. You gain mana from their worship, and how quickly you gain mana is dependent on how many of them there are. There are three things you can do with your mana:

  • Raise and lower the land. This will give your villagers more space to expand.
  • Spend it to teach your villagers new things, like how to build new buildings or how to do certain tasks better.
  • Cast spells that either help your villagers or impede your enemy’s villagers.

I was not planning on including direct control of your villagers (though this could change). This would result in a very Populous-style game.

The only problem is that if the base game is growing your civilization with no direct control over your villagers, that’s not really a game. it’s a software toy. To make it a game, there are two options.

The first is to give the player external, computer-enforced goals, like “create 50 villagers” or “generate 1000 mana” or “expand your village to this size”. Since the actual game play will be pretty simple, this may not make for a very fun game.

So we get to the second option. The one where you build up your village so that you can destroy all who oppose you, burn the bodies, salt the earth, collect their souls to offer to your dark god, etc, etc. Option two would probably be more fun. Option two requires either multiplayer or a half-decent AI. Both would be hard to do in 40 hours. So we’d end up with a game with very simple gameplay, but you can play skirmish against the computer and/or multiplayer with someone else over the net.

Thoughts?


Feed Fixed

I’m not a big user of RSS, so I hadn’t noticed that my site’s feed was broken until a friend at work told me. It should be fixed now, but the fix involved upgrading the site to the most recent version of WordPress, so some other things might have gone wibbly.  If you see any problems, please let me know.  One additional benefit of this is that I might be able to get this site listed on an aggregator like Qatfish.com now.


The Voices of Hit & Myth

Hit & Myth had a budget of roughly three dollars and some pocket lint, so we were forced to do most of the voice acting ourselves.

Forced to. Really. We had no choice. It’s not like we liked making silly voices.

And, okay, I’ll admit it. I’m posting this stuff because I did a lot of voice work for this game and I want people to actually hear it.

If you’ll recall, when I came on the Hit & Myth project, it didn’t have a sound engine and it didn’t have any sounds! I came on at the end of March and E3 was in May, so this was a priority. We grabbed some stuff from our libraries but a lot of stuff had to be done from scratch, and fast. So one evening TJ O’Leary, our sound designer, fired up his recorder and I spent about an hour doing a bunch of zombie, wraith, ghost, alien, and skeleton voices. TJ liked most of them enough that he left them in the final game.

Later, after E3 was done, it was time to record the actual dialogue. Just about everybody pitched in. Here’s what everyone did and some samples.

Wynne McLaughlan, our chief designer and writer
Cadbury (the hero) – Wynne said this was his best Monty Python impression.

Michael Morlan, our producer and an experienced filmmaker and actor
The Narrator
The Big Kahuna
Santa Claws
Billy-Bob 209
The Jabberwock
Cthuluhoop (the main baddie)

Eric Peterson, our studio head
The Cheshire Cat

Mike McKinley, one of our artists
Santa Claus

Dave Shramek, designer
Pervis the Poltergeist

Steve Garcia, another artist
Jerry the Elf – Steve beat me out for this part, and I’m actually glad, because his Jerry was much better than mine.

TJ O’Leary, our sound designer
The Caterpillar

Robie Kentspeth, the only non-Gizmondo employee. She is a professional filmmaker and actress and a friend of Mike Morlan’s. She did all our female voices. I especially liked her Alice.
The Cyber-Reindeer
Mother
The Red Queen
Alice

Me
Zombie
Skeleton
Crypt Keeper
Scary Beast
Flesh Golem
Ghost
Alien
Brainiac
Robie the Robot – This is basically our homage to the classic arcade game Berzerk.
The Balloon Elves – I insisted this line be in the game. It’s a reference to the Gnomish Flying Machine unit in Warcraft II.
The Suicide Elves – And this line was a reference to the Troll Batrider unit in Warcraft III.
The Snowman
The Scrinch
The Card Knights – For this voice, I basically just imitated the Spy unit from Command & Conquer: Red Alert.
Tweedledee and Tweedledum
The White Rabbit – I hate this voice; I pretty much came up with it on the spot. Wynne liked it, so I guess that’s all that matters (Wynne and Mike Morlan were co-voice-directors).
Shub Nogginsplitter (the last boss) – This is my standard demonic voice. My kids hear this one a lot.

I ended up doing almost every non-boss enemy in the game, plus a couple of the bosses. Ryan once described Hit & Myth as a continual battle between me and Wynne, and every time Wynne kills me I pop up in a new form.

And finally, this is my favorite bit from the intro movie.