A New Year Brings a Fresh StartI 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...
No matter how much I promise myself I'm going to update my blog more often, it tends to languish. I have a bunch of half-written articles waiting to be published, but in the absence of any compelling deadline, I can continue to look at them as "not quite ready for public view" for forever.
A possible solutionSomething 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 PlanI 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
And to prove that I'm not completely full of it, here's the in-progress game for January, after two days of after-hours hacking:
And here's the GitHub repository for it.
This is an HTML5 Canvas & WebAudio version of the old Asteroids arcade game. Because it uses some cutting-edge web features, it only runs properly in recent WebKit-based browsers. That's Google Chrome and Safari. Future games will likely be more cross-platform, but I wanted to learn a bit about the Web Audio API.
What I've learned on this project so farThis 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
- 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