Wow, what a day.
I should begin by saying that I’ve been ill today, and so didn’t go in to work. But that doesn’t mean that I had all day to play with Damsel; My head really hasn’t been very together for most of the day, so I suspect that writing code would have been a bit futile anyway. (And besides, I write games professionally for a living. Writing personal games during work hours would be just a wee bit unethical)
I did begin to feel better in the late afternoon, so I’ve spent a few hours on Damsel tonight. I don’t have nearly as much done as I would have hoped because I didn’t want to push myself, but I do have an initial screen (click the thumbnail, above), a Title screen menu (blatantly copy-and-pasted from the ‘Asteroids’ sample game included in the core VectorStorm release), and have the project all set up under source control. And I picked out a few pieces of music that I want to use. And that’s about it.
Now, I do want to mention that while I’m building Damsel in a private subversion repository right now, I’ll be putting the code and data somewhere public when I release the game on Sunday, for anybody who’d like to take a look at it. But do be aware that unlike VectorStorm, the Game in a Week things are written for speed of implementation, rather than for maintainability and clean design, so they might not be something you want to learn from or emulate.
In the “changes that will roll back into VectorStorm” category.. in the Damsel copy of the VectorStorm engine, I added a comma, and both forward and backward double-quotes to the vsBuiltInFont, specifically to be used in the screen above. Those changes will eventually find their way back into the basic VectorStorm repository; all three are useful characters which I was surprised to discover weren’t already in there.
Anyhow, I’m hoping I’m feeling more together tomorrow, and can actually put together a real gameplay prototype. I’ll be worried about my ability to actually deliver a fun game on Sunday if I don’t have an initial version by the end of tomorrow.
So it’s been an interesting, stressful day today! But the first and most important thing to mention is that I’ve gotten the bloom effect (repeatedly mentioned earlier) to compile and work correctly under Windows. I’ve also set up the engine to automatically detect whether or not it can use the bloom effect; whether it’s running on a computer that supports the needed OpenGL extensions. This means that I’ll be able to include the bloom effect in Damsel!
I’ve decided that at least my initial pre-prototype of Damsel will be done in VectorStorm. Thankfully, VectorStorm and GemStorm have interfaces that are similar enough that if I eventually decide that I do actually need bitmapped images, then it’ll be pretty easy to swap over. But for now, I’m planning to use good old-fashioned vector graphics.
I’d been hoping to get ahead of schedule and get a headstart on a real gameplay prototype today, but in the end I decided that getting the bloom working would be worth the time, and now that I’ve done it I’m really glad that I did; it really makes vector graphics look much nicer and more professional, and I’m still on track with my original schedule.
Anyhow, it’s probably time for me to get some rest now; got a long day tomorrow, and I’ll need to put together that rough initial gameplay prototype at the end of it! I’m definitely going to need my rest for that.
So it’s been a good day. I got to play with fun things at work, and I’ve had plenty of time to think about the design for the game which I’m now calling “Beauteous damsel, your petition is ill-timed”.
I quickly found that ‘petition’ was the most compelling word for me, as it generated the most game design ideas in the back of my head. These ranged from trying to sneak up and get people to sign your petition (could be vaguely stealthish), trying to avoid people who wanted you to sign their petitions (could be like the old game ‘Daleks’), could be a turn-based political game about swaying policy decisions, etc. But I’ve come up with something else, which I’m going to leave as a surprise for the final release, just six days from now.
So I now have a vague game design. The big issues left for me are the details of the game’s design, and whether I’ll be able to create the game I want using VectorStorm, or whether I’ll need raster graphics, and so will need to resurrect my old GemStorm engine. That’s my goal for tomorrow: Work out game design details, and figure out whether the game can be done with vector graphics. It’d be heaps easier if I can just use VectorStorm, but.. I’m not certain. Vector graphics tend to be appropriate for space games and other futuristic things.. I just don’t know whether they’d work for something that’s based on passing around a piece of paper.
Anyway, that’s tomorrow’s job. For today, it’s mission accomplished!

Idle reader, you can believe without any oath of mine that I would wish this book, as the child of my brain, to be the most beautiful, the liveliest and the cleverest imaginable. But I have been unable to transgress the order of nature, by which like gives birth to like. And so, what could my sterile and ill-cultivated genius beget but the story of a lean, shrivelled, whimsical child, full of varied fancies that no one else has ever imagined…
~Cervantes, Don Quixote
Well, it’s time to select the topic for my first ‘Game in a Week’ project, which will formally begin tomorrow. I’ve selected a book from my bookshelf; Don Quixote, by Cervantes. This is a Penguin Classics edition, translated by J. M. Cohen. This particular copy of the book may charitably be described as “well loved”, but it’s still in good enough shape to provide a spark of inspiration for this first game, and it seems a very appropriate book to use.
Opening the book to a random page, I check the first complete sentence, from which I will select at least one word to serve as the seed for the game I build. The page number is 401, and the first sentence completely on that page is:
Beauteous damsel, your petition is ill-timed, for I am prevented from embarking on any other adventure until I have brought the one to which I have pledged myself to a successful conclusion.
…and I’ve no clue what I’m going to do with that. I’m sure I can work a damsel in, and perhaps something about being “ill-timed” or even some gameplay element about making petitions or pledges.. Oh well; I guess I’ll have my designing work cut out for me tomorrow!
As is often the case, the actual problem turned out to be pretty silly; one of my offscreen buffers was set to GL_NEAREST instead of GL_LINEAR during an important copy. Someone remind me again why I enjoy programming?
This still isn’t ready to go live yet; there are too many computers out there which can’t handle OpenGL Shader Model 2.0, so I don’t want to force this effect on everyone (Also, it’s still a good deal slower than I’d like). So I need to write detection code and hook it up into the preferences system and everything. But at least it’s in the pipeline.
But not this week; I start on my first experimental “Game in a Week” tomorrow, so all my spare time is going to go into that, rather than into improving the general game engine. I’ll post further details on the “Game in a Week” project tomorrow. Hold on tight, it’s going to be a bumpy ride.
Something very strange is going on with the bloom effect that I’ve been playing with, recently; here’s a really good screenshot of it. See how the glow seem to occur in little evenly-spaced circles along the length of the straight lines? That can’t possibly be correct..
Yay, shader debugging!

They say that bloom is the new lens flare.
So I said to myself, who am I to fight Them? I mean, what with Their black helicopters and mind control rays and everything, I wouldn’t stand a chance..
This is still a work in progress; the code is based on the algorithms discussed at Philip Rideout’s OpenGL Bloom tutorial; working with pixel shaders (”fragment shaders”) is entirely new to me, so I’m learning quickly!
The code is checked in to the subversion repository, but is not yet enabled. I need to set things up so that VectorStorm can figure out whether or not a particular computer is capable of doing this effect (requires a video card supporting OpenGL Shader Model 2), and if so, turn this on by default.. or if not, use the old renderer by default. Probably will require a little bit more work to set things up so that I can switch renderers while the game is running. I still refuse to display a “restart the game for your changes to take effect” screen.
And now, time to get to bed. It’s nearly 3:00am. Amazing how time can fly when you’re staring at glowy things.
As many have commented long before me, a blog’s first post is generally the worst one it will ever receive. It typically explains the purpose of the blog (which any reader visiting the site already knew), says a few bits and pieces about the author, enthuses about how frequent updates will be, and then closes off with an apologetic comment about the blog possibly never taking off.
So here we go.
VectorStorm is a 2D game engine I have been writing, designed to create vector graphic games. My plan with VectorStorm is to use it to create quick and novel gameplay prototypes, in the vein of the Experimental Gameplay Project. VectorStorm’s current development is being driven by filling out the common requirements of a few small games, which I’m developing at the same time as the engine itself.
I’ll be keeping relatively up to date builds of the core VectorStorm engine and games available for download, so people can watch the progress. For any programmers out there, the full source code for all of the above is and will continue to also be available under the terms of the GPLv3, so feel free to grab it, learn from it, and even build your own GPLv3 software on top of it.
My current goal is to produce a new game once a month, obeying the “must be created in seven days” limit imposed by the Experimental Gameplay Project, which I’ll generally be doing during the first week of each month (but will be doing in the second week this month, since I’ve missed the first week already).
Now that I’ve said all that, I’d probably better stop writing; only two days left until I need to start on the first experimental game idea, and there are a few minor upgrades I’d like to make to the core engine before then!