Postmortem


Last saturday, I finished my 7DRL challenge (mostly) successfully. I've realized the base concept I had in my head at the start of the jam, which was a roguelike where you craft weapons and armor from several parts, and they provide lots of different interactions and combat effects. I started this project off with engine fragments I wrote earlier in February: I had an effect system, a map system and some assorted utilities and basic game structure (the game is split into 'Scenes' which determine whats rendered and whats updated). I feel like I could've done my vision more justice if I had a full engine written up front, but fortunately I was able to emergency import some code from Hathwell and Rogue Tower during the challenge. In this post I'll give a quick overview which parts of my vision I realized, which parts I saved for later, and which parts got slightly modified.

The Did

  • You can make different tools from different materials and everything provides the appropriate bonuses when wielded. This worked much better than I expected it to. It also took me the longest, as I had to write a lot of background stuff like the Inventory UI to even get the Smelter and Anvil UIs working.
  • Movement is very Mystery Dungeon/Shiren esque, but there's no diagonal moves. I wanted to finally make a roguelike with explicit facing. Hopefully this could also set up mechanics like sneak attacks later on. It'll also make it easy to implement a shooting verb when I get to it.
  • Map Generation. I tried a new approach on this one: I needed something
    relatively simple that would still generate interesting levels. The generator places several points on the map and then always connects the closest points. 'Biomes' are also produced in this step. Then, it makes all points and corridors expand to adjacent squares according to different rules. For example, a castle would expand to all 8 neighboring tiles to create rectangular rooms. A cave would fill in some of the 4 adjacent squares (percentage chance to fill).
  • Combat. Enemies spawn to harass the player every 60th turn (if there's no enemies already around). They move at random, which means you can relatively easily give them the slip, but enemies in tight quarters or with ranged attacks can still catch you if you run. There's also 2 enemies (Cthuloids and Death Knights) that can warp close to you if you're escaping. Each enemy has a skillset, where a regular melee attack is also a skill, and enemies will be forced to use a skill anytime it's ready.
  • Mining. It's not a big highlight, but it works for its purpose. You attack a wall/ore while having an Adze equipped to break it. Ores give a constant 50 ore, which is a quarter ingot. Mining speed actually increases the chance for you to break an ore, because walls don't have a durability value.

The Leftover

  • There were going to be more materials, but there sadly wasn't enough time to implement the unique Traits and stats. In addition to that, the Trait system is a bit of an afterthought: The Trait name and description on a tool doesn't actually mean it gives any effects or stats, the effects are added seperate to the name. Ideally, the trait itself would provide the effects.
  • Originally I wanted there to be a mechanism to refresh the map to get more ores if you run out of something specific. This didn't make the cut because I ended up making the Map Generator completely seperate from the Map structure, which would've meant that I'd either have to copy the Map back into the Map Generator or duplicate the ore generation relevant code for use on a live map.
  • Realistically, I wanted two more tools for this release: an Arrow that could be shot using an implicit crossbow, and a Plate that would've doubled as a shield in the offhand slot or armor in the body slot. The Arrow didn't make it because it would've required a whole other system for ranged attacks. The Plate didn't make it, not because it would've been hard to create a new tool class or anything like that, but because the balance needed to be tightened a lot to have something playable (without being frustrating) by the end of the 7 days. For this reason, defensive effects that would traditionally go on armor instead went on the tools.
  • There was supposed to be a form of saving. Unfortunately serialization
    is complicated, and I couldn't even settle on a soft version that would save your character and your items. Ideally the map would've stayed the same, with the player reincarnating over and over but losing their items each time.

The What

Some things didn't quite go as planned and had to be adjusted to fill in for the missing stuff.

  • Smelters were supposed to puff out a cloud of burning gas everytime you smelt something, which would've damaged you some (but never killed).
  • As I mentioned above, lack of an armor item means that defensive traits went on Blade/Adze instead.
  • Some traits were changed at the last minute to make them more relevant to the game my idea evolved into.
    • Slaughtering (Terrax) was "More drops but no experience". In the absence of items and experience I changed this to be a life steal effect instead, which also neatly filled a gap for healing yourself.
    • Stiff (Karmesine) was originally gonna reduce damage taken, but was much too similar to just adding a damage rate stat change or more defense, so I changed it to build up Defense Up instead.
    • Bleeding (Status Effect from Karmesine's Sharp) was originally gonna do periodic damage. It currently does damage each time it builds up instead.
    • Poxic (Jauxum) was originally gonna turn enemies into slimes, but I wasn't keen on adding a) an instant kill effect for a low level material and b) a polymorph effect. Right now, Poxic builds up Slimed instead, which will then heal the inflictor at random.
    • Alien (Obsidiorite) just provides a random attack bonus and a random mining speed bonus, because I couldn't think of how to represent stat randomization. In the future this should probably just provide a random multiplier to all stats.
    • Softy (Basalt) originally healed only 1 HP per block broken but it was increased twice, once to 3 and then to 5, to make it more viable for healing.
  • All the enemies are last minute additions. In my opinion they all spawn in the appropriate places, which atleast ticks the "unique environments" box a little. I think Cthuloids are probably the most offensively bad enemy since they can teleport away with Dive and teleport towards you with Warp.

Get Unnamed 7DRL20

Leave a comment

Log in with itch.io to leave a comment.