Background
To improve my skills, and learn new ones, I periodically do small coding exercises. Sometimes I’ll write a little application or script. Sometimes I’ll follow a set of style constraints, like Object Calisthenics. Sometimes I’ll solve the same problem again and again, such as the Game of Life.
The exercises I have been using have mostly gotten a bit stale, so I feel like it’s time for a new one. And since I’m experimenting with blogging, I may as well do it in public!
The Challenge
Inspired by the 7DRL Challenge, my plan is sheer elegance in its simplicity: I will release a simple roguelike game, written in Haskell, every day for the next week.
Why?
When planning an exercise like this, it’s worth considering what you hope to gain from it. In this case, I’ve got three big goals:
- Get some more Haskell experience: I’ve been playing with Haskell, but I still haven’t gotten very deeply into it. This particular problem seems like a good way to get a feel for how IO works in the world of pure functions.
- Practice small releases: This is something I’ve done a lot of over the years, but this’ll be a chance to try applying it to a new language and a new problem domain – the situation where I have the most trouble doing it.
- Do some game programming: I’ve been getting back into gaming over the last year or so, and really appreciating all the weird little games people are making. I’d love to do more of this myself.
The Tentative Plan
I’ll probably start very tiny: acceptable first releases for me would include navigating your character around the screen, navigating left and write on a single line (a 1D Roguelike!), or, if I’m having a really tough time, just clearing the screen. I’ll try to do a mini-retrospective after each release to consider what I’ve learned. On Wednesday, Friday, and Monday I’ll also try to post something here, and in the mean time folks are welcome to follow along on the Git repository. At the end, I’ll back up, consider what I’ve learned over the course of the week, and decide whether I recommend the exercise to others.
And with that, I’m off to write some games!