wow, I'm honored and humbled by the responses to "gather". I had fun and will definitely be back. The pyweek upload system is giving me trouble, so if you want the most recent versions of the game (the post-pyweek release) at my personal site.
src : http://static.adambachman.org/games/gather-2008-04-24_src.zip
Windows .exe : http://static.adambachman.org/games/gather-2008-04-24.zip
On with the postmortem...
What I think went right:
- All sound and graphics were from somewhere else. Besides some minor tweaking to shrink file sizes (cutting music into smaller loopable chunks and increasing compression), I didn't have to do anything to make the media work. That saved a ton of time for tweaking gameplay.
- Start with big ideas, cut mercilessly. This was originally going to be an RPG/story based game with a sci-fi story running through everything. Didn't happen. There was going to be flocking, heatmaps, procedural content and other complex algorithmic stuff, but I found that I didn't have the chops to bring it together in one week. So I cut everything that wasn't necessary for playing and added back just enough to make it finished. I was *this* close to ignoring levels, score keeping, and the whole little HUD thing, but managed to slip them in on Friday.
- Standing on the shoulders of giants. From the first moment I opened my editor, pygame and the Splush package meant I could see something happening. I'd never used the pygame Sprite library before this week, but it came easily once I got started. Not having to ever worry about collision algorithms alone was worth the learning curve. Feedback is key keeping up my motivation, so being able to rely on other people's tools meant almost all my own changes were high level, substantive changes that actually effected the way the game played instead of rewriting a framework.
- Polish. Little changes add together for big effects. Little changes are also easier to get right than big changes. Most of Friday and Saturday were spent polishing. Please note, with only one week to design and develop, I consider bugfixes to be polish.
What needs improvement:
- Barking up the wrong tree. Wednesday was a total day off, no game code touched, because I almost burned myself out Tuesday trying to lever a trigonometry based flocking algorithm into an 8-way movement system. On top of the fact that I've never written boids code, I tried to retrofit it into what I already had. This resulted in pretty much a day and a half wasted. I could've been more merciless.
- No practice or preparation. I promised myself I would try writing a game in the weeks leading up to pyweek. FAIL. This didn't kill me in the week of the comp, but it meant I had to learn as I went. Related to this, I would've liked to figure out in advance what I could rip out of Splush to avoid mental clutter. In general, I wish my tool use abilities had been a little more honed getting into the week of coding.
All said and done, I enjoyed it making and playing the game, and I'm glad some other folks did too. I hope to do a small set of tutorials while pulling the game apart and re-writing most of it. At this point I can't imagine adding features without coming at it fresh. I think there's potential here, but I don't envision turning this into a power-up heavy 2D action shooter. I like the design constraints of a five-minute casual shooter, so I think whatever changes, it'll still be pretty much the same game.
Huge thanks to Richard and everyone else involved for keeping pyweek rolling, I look forward to 7!