A New Year Brings a Fresh Start
I swear, I’m not going to start this post out with how disappointed I am at my lack of writing output over the last year. Oops…
The Problem
A possible solution
Something I’ve seen work really well for other people who struggle with producing consistent output are what I think of as “creative challenges”. Things like the “take a picture every day for a year” challenge that a lot of people are doing to improve their photography.
I just can’t face the idea of a “blog a day” challenge, though – I like the idea of something a little more long-form, and a daily deadline would force me to cut corners to an extent I’m not ready for yet.
So instead, I signed up for the OneGameAMonth challenge. Game design is one of my non-programming passions, so I feel like I’ll be able to stay motivated and really try to see this through. A month is a long-enough deadline that I feel like I can produce something worth examining, and the practical problems and “stuff I learned along the way” should provide ample material for *at least* one blog entry a month.
The Plan
I haven’t planned the whole 12 months out yet, but here’s what I do know my plans:
- I will create a variety of games in different formats, including video games, board games, and card games
- I will explore different genres in each format
- Everything I do will be open-source on my Github account
- I will write at least one blog entry every month, about the current game
- If I don’t finish a game in a particular month, I will not give up – I’ll just do something less ambitious for the next month
The Proof
It’s named Rocks!
What I’ve learned on this project so far
This first version is very limited, and frankly pretty buggy:
- There’s no proper collision detection – it’s hard to die, unless you try to hit a rock with the ship
- The asteroids don’t start larger and break up into smaller ones
- There’s no level progression, and no game-over when you die 3 times
- No enemy UFOs yet
- There are missing sound & visual effects
And the code is, frankly, a mess. But on the other side, there’s a lot I’ve learned over the last two days:
- All of the rendering is done using the Canvas line-drawing primitives
- The sounds are synthesized on-the-fly using Web Audio units instead of sampled sounds
- The animation is driven using requestAnimationFrame, so it should throttle back when in the background
- The whole thing is less than 11k in size, and there’s about 400 lines of Javascript in the main game file. That’s smaller than a typical iOS app icon…
Leave a Reply