#7DRL 2016 wrap-up: Rats, bats and cupcakes

I’ve marked my 2016 Seven Day Roguelike Challenge entry as “complete”, as it fulfils what I consider the bare basics for being a complete game:

  • You can win the game, by finding a cupcake. The longer you play and the further you explore, the more likely it is that you’ll find it in the randomly generated woods.
  • You can lose the game, by being repeatedly defeated in combat and dying.
  • You have a score, and so can try to improve from one game to the next. Your score is half your gold +number of new maps visited + 100 for finding the cupcake.

But is it a roguelike?

Let’s use the sometimes controversial Berlin Interpretation of a roguelike and see how it fares.

High value factors

  • Random environment generation: Yes. A bit too random, rather than procedural, but the maps are randomly generated.
  • Permadeath: Yes.
  • Turn-based: Also yes, though everyone gets an even number of turns, with no scheduling or speed taken into account.
  • Grid-based: Definitely.
  • Non-modal and Complex: The game is way too simple to be truly fun, and the player doesn’t have enough actions available to make modality even a consideration.
  • Resource management: Other than your health, there are no resources to manage.
  • Hack’n’slash: With an albeit incredibly simple combat engine, yes.
  • Exploration and discovery: Sort of. The layout of the woods remains fixed as you explore, and each screen is uniquely generated, though there aren’t enough different building blocks to make exploration feel rewarding.

Low value factors

  • Single player character: Yes. And she’s very cute (thanks to Quale’s sprite sheet!)
  • Monsters are similar to players: Actually, yes. They use the same code and statistics for movement and combat (and that’s all they can do, just like the player).
  • Tactical challenge: There is no tactical challenge, given the overly simplistic nature of the gameplay.
  • ASCII display: I deliberately used a graphical tileset, so no.
  • Dungeons: No. It’s set in a wood rather than a dungeon, and the random rather than procedural generation of the screens rule out any room-like areas.
  • Numbers: All of the numbers are hidden from the player, which was a choice I made deliberately given the very simplistic nature of the game.

Despite being incredibly simple, it scores pretty well for being a roguelike, though the ones it fails on — like complexity and modality are pretty big ones! My main gripes are definitely the lack of complexity and the braindead “AI” for the monsters. I really could have done better with those, but I’d never done pathfinding or even line-of-sight checking before. Around Wednesday night / Thursday morning, I took that as a learning opportunity and started looking into those, and managed to get a pretty decent pathfinding system in place.

…my problem was that by that point the actual 7DRL was pretty feature-complete and I had no desire to go in there and start rewriting chunks of it to take advantage of the pathfinder. This has been my biggest take-home point from the week, I think: It’s been a great project for getting me coding again, but I really hated the deadline and the feeling that it was better to rush something that worked than to plan out neatly from the beginning.

I’ve already started on a new roguelike, using some of lessons learnt from this one. Better procedural map generation using a stem and leaf model. Better objects to encapsulate game entities. Monster AI that actually has some intelligence to it.

But can I play it?

You can play it if you like! It’s super-simple, but it works (more or less). You’ll need a modern desktop browser:

Known bugs

  • Enemies sometimes overwrite background scenery as they move (I was too lazy to update it properly)
  • Can’t close the dialog box when you win or lose (just hit refresh)
  • Sometimes, I think, you can be attacked by a monster as you’re transitioning between map screens. That kind of sucks.
  • The critical path routine is brain dead. Expect the occasional dead-end map (whether or not this is a bug is debatable).

Leave a Reply

Your email address will not be published. Required fields are marked *