Last week I released "Haywire", my first game for #1GAM. Seeing as I haven't really made anything in a while, I kept things as simple as possible. Overall I'm pleased that it got finished, although I would have liked there to be a bit more "game" to it.
Overall the game took a total of 7 hours and 9 minutes to make. As well as tracking task time, I kept a separate log to make note of important milestones. As you can see, I left things pretty late before I got started…
- Created basic project skeleton, can compile it and view a title screen with version string
- Set up resource manager
- Created a basic tileset and map
- Can scroll the map manually using arrow keys
- Spent about an hour wrestling with Flixel's camera system. Turns out rather
than using a constructor for states, the
createmethod should be used/overridden.
- Simple player ship can move left to right
- Camera follows player
- Background layer with parallax scrolling
- Basic player movement added – can now accelerate left and right, as well as thrust upwards. Really simple gravity
- Proper graphics now
- Got a stationary animal on the map. Just a sprite for now so not sure it counts as progress
- Fixgured out how to draw a line (using an FlxSprite as the body) - Don't really like it, but it should do the trick
- Added a nifty starfield to the far background
- Added some basic collision with the floor. For some reason the pixel perfect collision isn't working the way I want it to.
- Added some little particles that shoot out of the bottom when the ship thrusts upwards
- Really simple grapple hook now
- Grapple hook now bends (rather terribly) depending on the velocity of the ship
- Added a little mothership sprite that floats around
- Player can now pick up any animal and they will stick to the end of the hook
- Grabbed animal can be delivered to the mothership
- Grapple now affects physics - having the hook increases drag, and hooking an animals makes the ship heavier
- Returning an animal now increases the score
- Player now has health
- Running out of health makes SPLOSION
- Multiple animals, all in random places. I guess this is a game now?
- Added a really terrible title screen
What Went Right
No Feature Creep
I've taken part in a few game jams now, and the process is usually the same:
- Come up with a small idea
- Think of some really cool ideas that I just have to add
- Implement one or two of those features
- Run out of time
- Vow to keep things simple next time…
This time I actually kept things simple. I had a lot of ideas for things I wanted to implement, but I forced myself to stick to only the absolute basics.
One area I constantly struggle with is coming up with half-decent graphics. This has been a constant pain for me, so this time I went with some simple vector art.
A couple of parallax layers and a starfield are all it took to create something that I was happy with. There's also a few particle effects, but other than that it's very simple.
As always, it's nice to come away at the end of a challenge with something that can be played. Granted, the main game loop is very small, but there's a kernel of something fun there.
Kept a Development Log
This is something I should have started doing years ago. I usually write notes on what I'm developing, but I don't normally keep track of each feature as I complete it. For Haywire I kept a simple text file, and then updated it whenever I made something new. Seeing the game's progress over time was a huge motivator for me.
What Went Wrong
Game? What Game?
Let's face it - there's not a lot of game here. There's no reward for rescuing animals quicker, no real obstacles to overcome, and you have to refresh the browser window to start again.
Not Enough Time
I only remembered about #1GAM a few weeks into January, so I didn't have a great deal of time to get started. Still, 7 hours isn't very long to spend making a playable game. Put it down to a mix of bad planning and laziness on my part.
One thing I've always been conscious of is adding a layer of polish to my games, but I really dropped the ball this time. The score font doesn't work, the health indicator is a bit cryptic, and don't get me started on the awful collision.
On top of all that, there's no way to restart without refreshing the browser, which just adds to the half-baked feel.
Lessons For The Future
More Time Polishing
Even though these are small games, it's still worth scheduling a few hours to get the rough edges smoothed out. In future, I should probably build the full loop (title, play state, restart) at the beginning so I'm not rushing near the end.
More Time in General
Only spending 7 hours on a game? 'Nuff said.
Keep it Simple
It's very, very difficult to keep things small, especially when all these great ideas keep swimming around. Being creative is part of the fun of game development, but it's also a burden once deadlines start getting closer.
Not every game has to be 20 hours long and full of amazing graphics. Concentrate on a few areas you want to experiment with and go from there.