Sorry about the brief updates, but we’ve less than two weeks to go on our project here at work and the hours are long. I’ve got a surprise for you guys coming in the mail, and I will have another video blog for you Saturday night. So stuff’s gonna happen, just stick around.
Video Blog 1, 09-16-06
Surprise!
I’d been meaning to do something like this for a while, and since Gamespot will kindly host them (since I’m a subscriber), why not? Enjoy!
Edit: Here’s an embedded Google video version:
And here’s a direct download link.
Stalked by Weird Al!
I’m pretty sure that Weird Al has been observing me secretly. Isn’t that illegal?
New Game Development Articles
Well, new to me, anyway.
While I’ve been working on Sandworm (my One-Page Game) I’ve been learning more about the Windows console application functions. While these aren’t really hard to use, example code is always helpful and Microsoft provides very little. So I’d been searching both the internet and Google Groups for more information on the assumption that I can’t be the only person using this stuff. But I hadn’t really found anything.
So Sandworm was almost finished when a Google search on the WriteConsoleOutput() function pointed me to an article I really really wish I’d found before I started coding. The code this article provides is much better than what I’d written, so I’m incorporating it. And anyone else who wants to write a console application should read it. It even includes an ASCII table!
And Sol has written a set of tutorials on immediate-mode GUIs. If you’ve used his SDL tutorials you know he’s an excellent writer, and immediate-mode GUIs look better to me every day (you’ll recall I used one for my combat prototype).
Yesterday
And then something strange happened…I describe it as “the best week’s work I’ve ever done in my life”. It was something I started on a Monday morning and finished on a Sunday afternoon; it was a game that was written in a week start-to-finish. And that was what was so nice about the industry back then – you could just do that. You could sit down and bang out a game; 3.5k of code didn’t take a lot of time to fill.
And I wrote this game. I was very fond of Centipede, but Centipede was too cutesy for me, with its flower gardens and little centipedes – I wanted something more hard-edged for this game.
I actually had the name of the game before I wrote the game; I’d been up at a computer show in London and they had posters for this new Harrison Ford film that was out called Blade Runner. So I saw the posters and they had this very distinctive font that said ‘Blade Runner’ at the top. But I didn’t want to use ‘Blade Runner’ because my game wasn’t anything like Blade Runner; it was a game based on this grid so I thought, “Hey, I’ll call it Gridrunner.”
So I wrote it and I thought it was a very nice little game, but I didn’t think that much more of it, really. And I sent a copy out to my friends in the States who were distributing my games, and one night I remember the phone going at about four o’clock in the morning. I crawled out of bed and answered the phone and it was this guy from Human Engineered Software, and he was ranting! He said they loved this game and had been playing it for hours and I should stand by to make quite a lot of money, and I thought, well, it’s just this silly little game I made in a week, but okay, fair enough, and I put the phone down and went back to bed and went to sleep. Got up the next day and thought I’d had a weird dream where I was sure they’d said that this game was so good I was going to make loads of money! But it turned out he was actually quite serious and they turned it into a cartridge and it did turn out to do really well! It was the first major success for Llamasoft. It was number one on the VIC-20 charts in the States which was really surprising, and made me enough money to keep me going for several years.
Like I said, the best week’s work I ever did in my life. I wish I could have another week like that!
– Jeff Minter, from his “History of Llamasoft” presentation at Assembly ’04
Now, I could go into a rant here about how games were better in the old days, but I don’t really believe that. True, there were some fantastic games made back then, but there was also a bunch of crap that nobody remembers any more.
What I will say is that modern software development has become very abstract, with layers upon layers upon layers upon layers, and this is simply the worst possible thing that could have happened for game development which really has to go straight to the hardware in order to be fast. So we get APIs that do touch the hardware directly, but because they have to play nice with these abstracted operating systems we have to jump through all these hoops and do things like raw memory writes just to put a damn pixel on the screen. And God help you if you forget to set your pitch and your width correctly…
This is why I like making and playing little text-mode games. I’m honestly fascinated by things like Roguelikes, even though most Roguelikes frustrate me because they are too damn hard.
And of course, the company that could have given us a very straightforward game development API because they control both the hardware and the OS refuses to do so because they hate gamers. Well, screw you too, Apple…see if I ever buy an iPod.
And this is just the Price that Must Be Paid in order to do modern game development (at least on the PC). It’s difficult, and it’s going to stay difficult for a good long while. But in the end, we do it because we are compelled. And it’s not like there aren’t any rewards…
A New Challenge: The One-Page Game
(Because I didn’t have enough projects going on at once…)
Basically, I’ve been working out of my book for about two weeks now, and I’ve written very little code. That bugs me. But I can’t really start on Planitia yet, can I?
So I began to think about doing a little game on the side in the meantime. A very little game – one that would scratch my game development itch but not take a bunch of time away from the book.
And then I remembered a little something I read in The Rainbow back in high school.
The Rainbow was a magazine for the Color Computer, which was Radio Shack’s competitor for the Apple II/Commodore 64/Timex Sinclair 1000 market. The Color Computer ran on a Motorola 6809 processor and came with 4k of RAM (later models came with 16k and there were expansion systems designed to bump it up to the “magic” 64k). It was hampered a bit by its weak display system, but overall it was a good little computer and lots of hobbyists used it for lots of different things.
And of course support magazines sprung up for it. The Rainbow was the biggest and most successful of these, and it was an old-school support magazine in that it included source listings that users could type in themselves. It covered just about every application you could put a computer to, which included games. Indeed, their annual game issue was always their biggest seller. During its heyday issues of The Rainbow ran over 300 pages and looked like phone books because of all the included source code.
I read a whole bunch of issues in high school. I borrowed them from a friend and thoroughly enjoyed them despite not having a Color Computer of my own. (Back then I would read anything about computers I could get my hands on.) And I recalled reading a small article in one issue that presented a version of Centipede a reader had written and submitted. This game was unique because the source code only took up a little more than one page. I remembered being very impressed when I saw that.
And I decided that writing a complete game in one page of source would be a unique challenge that wouldn’t take too much time away from learning DirectX.
So here comes a new challenger!
The One-Page Game
What does it mean to write a game in one page? Well, after trying it myself and having some of my friends try it, we’ve come up with a couple different interpretations.
Challenge 1: The True One-Page Game
To complete this challenge, write a game whose source is fully contained in one page of text that is eighty characters wide and sixty lines long. No external data files are permitted; this source file must contain everything your game needs to run. You may only use the base libraries that come with your compiler.
Of course, in order to complete this challenge, you’ll have to write source code that looks like this:
#include <windows.h> HANDLE h;SetCur(bool b){CONSOLE_CURSOR_INFO c = {1, b};SetConsoleCursorInfo(h, &c);}Init(){h = GetStdHandle(STD_OUTPUT_HANDLE);SetCur(false);}SetPos(int x, int y){COORD c = {x, y};SetConsoleCursorPosition(h,c);}SetColor(int f, int b){ SetConsoleTextAttribute(h,f|b);}Print(char* i){DWORD r;WriteConsole(h,i, strlen(i),&r,NULL);}
If this bothers you, you can try Challenge 2.
Challenge 2: The 4800-Byte Game
To complete this challenge, write a game whose source is fully contained in one file that does not exceed 4800 bytes in length. The actual file can be as long as you want it. While you may think you’re getting a little extra room with this method, I think with the extra whitespace it’s a wash, so this is mostly an aesthetic decision. Again, no data files or libraries except what came with your compiler.
And if that just isn’t enough room for you (or you abhor writing text-based games) you can try Challenge 3.
Challenge 3: The Two-File Game
To complete this challenge, write a game whose source is fully contained in two files, one header and one source, which are less than 4800 bytes each (9600 bytes total). Again, no data files or libraries except what comes with your compiler, but under Windows this includes DirectX and D3DX so this version opens up the option of using 3D rather than making a text-based game. Tom has already created an incredible-looking game that fits this challenge. Hopefully he’ll post it soon.
As for me, my game will fulfill Challenge 1. It’s going to be a Centipede clone in honor of that article I read in The Rainbow. And it would be done by now if I hadn’t spent so much time figuring out how to get the mouse to work with a console application…
Book Progress, Part Deux
I have now finished 110 of the 357 pages in my current book. That’s about thirty percent. I would very much like to get this book done by the end of next week…that will take a serious commitment from me. To the tune of about twenty-five pages a day.
I also have a little something else that I’ll talk about later, when it’s actually congealed.
David
You’ll have to forgive me. I am proving yet again that I’m just too boring a person to have a blog.
Actually, a lot happened to me in these last two weeks, it’s just that very little of it was related to game development. My son David started school last week.
I guess it’s time for me to come clean about my son. He has a mental problem of some sort; we’re not quite sure what it is. The best guess is mild autism. It took him a long time to learn to talk and it took us forever to get him potty trained.
Side story: My wife and I finally got fed up when he turned three and wasn’t potty trained yet. We decided one night to just sit him down on his training potty and not let him get up until he went in it. We both had to sit there and make sure he didn’t run away; it was frustrating for everyone involved though we tried our best to keep it positive. Eventually, David pointed at my wife and said, “YOU change the diaper!” which I think is the first complete sentence we ever heard him say. My wife and I were very surprised, but we recovered and told him, “No, David, you’re a big boy now, no more diapers.” While we didn’t get him to go that night, it was definitely the breakthrough experience for him because he started going in the potty regularly just a few days after that, to our great relief.
The interesting thing is that he learns new stuff every single day. He just turned five about a month ago and he just started kindergarten, but he knows all his shapes, all his colors, what colors combine to make other colors, his entire alphabet, all his numbers at least up to twenty, and even all his planets (I haven’t had the heart to tell him about Pluto). He also draws better than I’ve ever seen a five-year-old draw – when he draws eyes, he actually draws ovals and then puts pupils in them, and both eyes are always looking in the same direction. So it’s kind of frustrating that we can’t seem to get him to understand that he needs to put his pants back on when he’s done using the bathroom.
If he didn’t have the social problems he has, he would definitely be considered a bright child. But it’s impossible to have a conversation with him. If you ask him a question, the odds are good that he will simply repeat the question back to you instead of answering it. He uses words to make himself understood, but it’s usually just one word or a short phrase (“Drink!” “Hot dogs!” “Blue’s Clues!”). Despite our best efforts, we haven’t been able to get him to understand the concept of “not yours” or the concept of “dangerous”. He has actually gotten out of the house a couple of times by waking up before anyone else and figuring out how to unlock the front door – we finally had to put a double-deadbolt on the front door (so that you need a key to get in AND to get out) in order to put a stop to that, because no matter what kind of latch we put on the door he figured out a way to unlatch it, and no matter what we put in front of the door he figured out a way to move it. Needless to say, that was a very scary time for us.
Now he’s started kindergarten. We told his teacher before he started that he was going to be a handful. Fortunately, she realized right away that she was going to need some help with him. The special education teachers examined him and were very surprised at everything he knew (especially when he started drawing). They’re actually excited to work with him. It’s obvious that David learns very easily, it’s just a matter of teaching these concepts to him in ways that he can understand. They believe that there’s a good chance they can get him caught up socially this year, so that when he starts first grade next year he’ll be able to go to a normal class.
You have no idea how relieved I was to hear them say that.
And fortunately, our youngest doesn’t appear to be having the same problems David did.
Book Progress
I am currently on page 78 of Frank Luna’s book. There are 376 pages in it. I am averaging about ten pages a day, which means I’ll be done in about a month unless I really pick up the pace. Of course, I don’t want to rush too much or I might miss things, which would be counterproductive.
In other news, last night I dreamt that I’d already lost all my weight and everyone was commenting on how good I looked. Then I woke up. 🙁
Heavy-A
I’m 6’4″. I weigh over 300 pounds. I am a big dude.
I’m not just big, I’m wide. Even if I weren’t overweight I’d still take up a whole doorframe because of the width of my shoulders.
I also like to keep my hair real short because of how grey it is. Seeing a head full of grey hair in the mirror makes me sad, so I just cut it all off.
Plus I can do the growly voice.
Because of all this, I am constantly asked if I play football. At more than one party I have been mistaken for a security guard. I have been told that I have an intimidating presence.
But I’m not intimidating. I don’t have a violent nature. I love rainbows, and, and kittens! And small children! And…and pretty stuff! Architecture! And flowers! Lots of flowers!
Sometimes I actually like to embrace my largish nature, as evidenced by the picture above (which will go on my Aspyr badge).
But I’m really just a big fuzzy-wuzzy cuddly bear, dammit!
July 2025 S M T W T F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31