Jan 17 2008

Petition Damsel Post-Mortem

Tag: #1: Petition Damsel, Game in a Weektrevor @ 9:35 pm

So it’s been a couple days since I finished Petition Damsel and posted it on the site (For the few folks who have been having troubles with the Win32 binary package; I’m pretty sure that version 1.0.1.1 has finally fixed the “incorrect configuration” problem).

I’ve had some time away from Damsel, I’ve played partway through Moai Better Blues, and a little of I Wanna Be the Guy (I’ve made it about two thirds of the way through the second screen; took me well over an hour!), and so at this point, I think I’m far enough away from the whole experience that I can begin to evaluate how it went.

So without further ado:

What went right

  • Using VectorStorm: With VectorStorm as a basis for the project, I could really jump right in and implement game concepts very quickly. It gave me support for changing screen resolutions, visual quality, volume levels, and all sorts of other “Quality of Life” stuff that I never would have had time to implement within the week, if I had started from scratch. It also meant that I could blatantly rip off code that I’d already written, such as the UI that I wrote for my ‘Asteroids’ clone in VectorStorm.
  • No code Monday&Tuesday: Restricting myself from doing any coding on Monday and Tuesday meant that I could really focus on getting the design right, rather than risk coding myself into a dead end.
  • Good quality music: I love Magnatune. Seems like whenever I need music for a project, I can find exactly what I need there. In this case, the new album from Ehren Starks had exactly the moody piano music I wanted for the introductory quote reveal. Finding a suitably manic piece to move into was much harder, until I happened to bump into a piece by the Napolean Blown Aparts which I’d heard a year or two back, and which turned out to be just what I needed. I’ve bought an awful lot of music from Magnatune over the years, and their licensing allows me to use their music in noncommercial projects. So in my book, they rock. :)

What went wrong

  • Using VectorStorm: I don’t know that VectorStorm was really the right choice for this type of game. Vector graphics have a kind of old-school cred, but they also tend to feel a little serious, where I was trying for a more lighthearted, slightly madcap feeling for this game, and I feel like the vector graphics took away from that.
  • No code Monday&Tuesday: In practice, the best parts of the design only occurred to me after I started implementing the game; they were triggered by actually playing the game. Having the playable version actually helped the design process.
  • Difficulty of creating sprites: I hadn’t run into this before because I had never created a vector sprite more complicated than the ship from ‘Asteroids’, but it’s actually really difficult to create vector sprites as complicated as the Petition Damsel for the VectorStorm library; I basically had to draw them freehand on graph paper, and then transcribe points manually. Next time I do something like this, I want to have a vector sprite editor tool which will let me design these objects interactively.
  • First playable very late: My “first playable” version of Damsel wasn’t ready until Sunday morning; only about twelve hours from the final deadline. I really should have had that on Thursday, so that I’d have had time to tune the gameplay, instead of having to release whatever I happened to implement in the final hours of Sunday, with no time to experiment with variations. Next time, perhaps I’ll start coding on Tuesday, and hopefully have a first playable much earlier.
  • Overambitious design: The design I had at the end of the design period was far, far beyond what I could actually realistically achieve within the remainder of the week, and was radically cut down at the last minute on Sunday. In the future, I need to generate far simpler designs from the outset!

So there we go. All told, I’m extremely pleased (and was rather shocked) at how well Damsel turned out, bearing in mind all the troubles I ran into along the way. It literally came together during during the last nine hours of the week-long deadline, as I was trying to write out all the bits of design that I simply didn’t have time to implement.

I’m going to address a bunch of these issues before or during the next ‘Game in a Week’. I’m currently hoping to start the next one in a couple weeks. Gives me some time to write that vector sprite editor, first. :)


Jan 13 2008

Petition Damsel, done!

Tag: #1: Petition Damsel, Game in a Weektrevor @ 9:29 pm

Phew. Well, it’s three hours before the deadline, and I’ve finally finished.

So what are you waiting for? Petition Damsel is over there in the righthand column, under ‘Get Games’. There are Win32 and OSX builds right now. Once I’ve had some sleep, I’ll upload a snapshot of the source code so that Linux and other folks can build it for themselves.

I’m really interested to hear what people think of it. Positive, negative, whatever; I’d like to hear people’s thoughts; put comments over on the Petition Damsel download page.


Jan 13 2008

Game in a Week, T minus 9 hours

Tag: #1: Petition Damsel, Game in a Weektrevor @ 3:07 pm

Three hours on, here’s where I’m at:

  • Fixed a bunch of gameplay bugs, a few of them causing spectacular crashes (but these were all the usual corner-cases where you expect to find crashes.. respawning after dying while in the middle of using a petition was one of these, for example).
  • Tuned time bonuses so that individual games now tend to last about two to three minutes for me. I’m sure that if you went in really trying to play as long as possible, rather than just having fun, that you could probably play infinitely. But I don’t really have time to do proper play tuning and difficulty ramping for a release tonight, and I don’t want the game to be too difficult for first-time players. So I’m erring on the side of ‘accessible’.
  • “How to Play” screen implemented. I like it a lot, even if the code is shocking. I’m going to have to put an apology in the file, when I release the code.
  • Adjusted VectorStorm’s initial resolution selection code (for the very first run only). VectorStorm now tries to initialise a resolution of 800×600, instead of choosing the smallest supported fullscreen resolution. If the current hardware doesn’t support 800×600, it will choose the next smallest resolution supported. If nothing under 800×600 is supported, then it will choose the smallest resolution that is supported. The resolution can still be changed from the options screen.
  • Added a “back” option from the options screen, so people don’t have to guess the ‘q’ keymapping.

Stuff that remains to be done:

  • Custom graphics for three different characters
  • Polish title screen
  • Sound effects
  • As much gameplay tuning as I can manage.

Jan 13 2008

Game in a Week, Day 6.25: First playable

Tag: #1: Petition Damsel, Game in a Weektrevor @ 11:47 am

Not going to spend too much time writing here, but.. this game was definitely overcomplicated for what I can comfortably design and build in a week. With only twelve hours to go, I finally have my first fully playable version of Damsel with all gameplay elements in place.

Stuff remaining to do, in approximate order of importance:

  • A “How to Play” screen.
  • Tune time rewards for actions taken.
  • Add a few new graphics. (I’ve reused colored versions of a few sprites for very different purposes right now)
  • Find and integrate sound effects.
  • Make binary builds.

Jan 12 2008

Things I have learned

Tag: #1: Petition Damsel, Game in a Week, General lifetrevor @ 6:02 pm

I have serious trouble typing the word “petition” at speed. It keeps coming out as “peitition”. Writing it on paper isn’t a problem. Investigating other words with repeated sound patterns, I found that “Banana” reliably comes out as “Banena”, and “Pinocchio” as “Pinocchiao”.

The only conclusion I can draw from this experiment is that my mind is really good at inventing creative means of procrastination, when I really should be programming.


Jan 11 2008

Game in a Week, Day 5

Tag: #1: Petition Damsel, Game in a Weektrevor @ 11:17 pm

Screengrab from Day 5.  Believe it or not, this shows approximately the same state of play as the shot from Day 4.Another day of not quite achieving the goals I set out for myself. I still don’t have a fully playable game prototype, but the scene is now much more recognisable than it was yesterday. It’s amazing how just a few vectors can give a scene some context.

I ended up not having as much time to program today as I had hoped, again due to a combination of illness and unpleasant weather. But I’m still generally pleased with how much I got done today, under the conditions. And I’m still pretty confident about having Damsel wrapped up on Sunday (though I would have liked an extra day to polish the gameplay)

Stuff that has taken longer than I expected: Finding an appropriate size for characters relative to the level graphics, while still making characters vaguely recognisable and having a nicely sized level to work within. Navigation AI for the AI characters, to keep them walking along the edge of the street. And, of course, general design. I’d originally allocated the first two days to nail down the game design, but I’m still tweaking with it now as I’m implementing it, trying to make the game more compelling. (The four-way intersection, for example, is a design modification that I made today; the game was set in a parking lot, yesterday).

I’ll probably start showing off bits of actual gameplay tomorrow. Very close to having everything I need in place to turn it into an actual game. :) And of course, there are still lots and lots of graphics left to create. But it’s coming together. So overall mood: missing every deadline I set myself, but I still think I’ll finish on time.


Jan 11 2008

Game in a Week, Day 4

Tag: #1: Petition Damsel, Game in a Weektrevor @ 12:45 am

Snap from day four of DamselIt’s late. It’s been extremely hot today. It’s half past midnight as I write this, and it’s still far too hot to sleep. Or for that matter, to really be very good at coding.

I really wanted to get a playable Damsel prototype working today, but I’ve simply been unable to focus. Oh well; at least I made some progress, still! The shot above is a partial screengrab of the current state of play. The red rectangle represents the player, the blue rectangles represent other game objects. They’ll all be replaced with other graphics, eventually; probably Saturday. And the eagle-eyed among you will have noticed the score display that i’ve blatantly copy and pasted out of the Asteroids sample game from VectorStorm.

At this moment, the game does respond to player controls, but you can’t yet really play the game; no scoring is implemented, and very few actual gameplay functions are in place. But at least all the major types of gameplay objects are there, and it’s just a matter of wiring up all their functionality. With any luck, I’ll be able to make up for lost time tomorrow, and get my full gameplay prototype implemented.


Jan 09 2008

Game in a Week, Day 3

Tag: #1: Petition Damsel, Game in a Weektrevor @ 9:38 pm

Damsel first imageWow, 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.


Jan 08 2008

Game in a Week, Day 2

Tag: #1: Petition Damsel, Game in a Weektrevor @ 10:36 pm

Bloom working on Windows!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.


Jan 07 2008

Game in a Week, Day 1

Tag: #1: Petition Damsel, Game in a Weektrevor @ 11:03 pm

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!


Next Page »