In my day job, progress happens bit-by-bit.  The projects I manage are big enough to require a nontrivial amount of cross-team collaboration and integration; it’s a rare deliverable that I can do in a single day just sitting at my desk.  I rarely “check off” success, and it’s only when I look back at the last six months and say “wow – look at what we’ve accomplished” that I get the sense of accomplishment that programming provides.  My rat-tab takes months to dispense a pellet.

That’s why, when the day’s done and the kids are asleep, I find myself in front of the laptop working on some game project.  I need more pellets!

As any project advances, it naturally gets more and more complex; more systems to keep track of, more old design decisions that were “mostly” backed out, and so on.  The rat-tab takes more presses before it’ll dispense.  That’s where my roguelike is at now; especially with the isometric/non-isometric and the iOS/XNA vacillations, I’ve got overly complex systems and functionality that doesn’t apply, making it harder to make changes without unexpectedly impacting other things.  I’m not even going to think about what adding tombstoning support would involve…

So: I’ve started over on my roguelike; back to day one (kind of) and square one (sort of).  I’ll leverage aspects of the old codebase (e.g. dungeon generation), but am otherwise starting from scratch.  I have a mostly complete phased plan for bringing features online, each one being another pellet.

The new project’s reached its first milestone, consisting of:

  • Complete dungeon generation
  • Tap-to-move and “explore” modes
  • Basic GameState model in place
  • Generic Event model
  • Action system
  • Level rendering
  • Visibility and Lighting
  • Player
  • Working in both Windows and WP7

Nothing amazing, and most of those systems are in place but not ‘populated’ (e.g. the only supported Action right now is MoveAction) – but it’ll be easy to incrementally add feature after feature (pellets; so… many… pellets!).  I’m planning on discussing each of those subsystems at some length in future posts.

I’ve uploaded a video of it to YouTube (recommend watching at 720 & fullscreen):

Here’s a link to the Windows executable shown in the video:

And here’s a link to the current source: