Day 7 - Flourishes and a Furious Finish


We made it to the end! I managed to finish sort-of early (about 7 hours before the deadline, which was 11pm my time), but when I woke the day after (6am) I saw that there was some kind of problem with Windows users playing my game, so I was working on a fix for that all the way up to the end of my allotted time (and slightly after). Anyway, let’s see what we managed:

Day 7

  • Derived Stats - The combat system wasn’t fully utilizing entity combat stats (ATK and DEF are derived from the STR and DEF values currently). I had to fix this twice: first time, we just weren’t using DEX at all. And then we were actually using the aggressor’s DEX instead (oops!). All done now.

  • I took a while (arguably too long) with setting up the title screen and cover image to look good (I was expecting to have an errand to run so I was doing a light task before that). There was also a lot of itch-page set up in this time, so it would be ready, without me rushing at the end. I think it looks quite good. This game has more inputs than any I’ve made before, so the control listing is inelegant, but that’s fine. I like the little block of flavor text and game description, I think it does the game justice.

  • More oaths: I tried to come up with a few extra oaths to keep things interesting, as well as the boons mattering, at least a bit. There’s a lot of untapped potential here, I just didn’t get time to express all my ideas. Possibly an extension piece, if I feel inclined.

  • I added a starter room which generates the same every time: I wanted the player a little grace period where they could get used to the controls. In my mind, it represents the basement of the temple you’re delving under. It doesn’t spawn any enemies, but it makes sure you can move, descend, and it introduces the “altar” to you so you can pray if you want.

  • At this point, I received a soundtrack from the musician friend I mentioned in my previous post, and it sounds incredible. Very happy with how that turned out. It really adds to the experience.

  • I did some tactical planning to decide what would come next and I decided that to make the game playable, I needed more items to cover a progression into the dungeon, so now there are “tiers” of equipment. I had to rebalance things too, because I decided that you should start with some equipment as well, and that changed the base assumptions of the system.

  • Next, things are set up so you’re assigned some oaths at the beginning of the game (sadly these are only seen in the log and the character viewer). There wasn’t time to explain each oath, although I like the idea of letting folks figure out what they mean on their own.

  • Since I added audio, it seemed prudent to add a mute and volume control, just in case.

  • I really wanted this game to be a complete experience for once, so in my tactical planning, I needed a boss fight and some sort of story. It was at this point that I stopped caring about code quality and went for code efficiency!

    • To make this happen, I slipped in a story system and a simple dialogue chain which can be triggered by game events.
    • Then, I had to actually design a boss battle/scenario. It hit me at this point that I have never made a boss before. Ever. In my 8-ish years of making games. I was daunted. Thankfully I had some (admittedly cliche) ideas, drawing on my experience as a Dungeon Master in D&D, and I think that the result is suitably interesting, at least on a first playthrough.
  • With the details of the boss polished up, I had one last thing I really needed to do: Weighted item distribution. For most of the development, items were placed randomly, but that meant you could receive end-game equipment at the start of the game, and also get a lot of duplicates. I wanted to prevent that. So when a generator is making a floor and it wants to place an item, it accesses a weighted probability table for that floors “gear tier”, and then rolls on it to decide what to place. This gives a ton of control over the game experience.

    • It is possible that a run will end just because you don’t receive the items you need to level up and survive. That’s fine for a 7DRL, but maybe not forever.
    • It’d be nice if the system responded a bit better to the items you’d already received as well, so that if you already have the maximum armor, it doesn’t offer it to you again.
  • I basically downed tools at this point because the game was done. I did squeeze in a small controls “help hint” display, but it’s not very comprehensive.

  • Finally, I had to contend with that engine bug. It turns out, when DOME tries to resize a window to be larger than the display can handle, Windows just makes it go fullscreen (but it doesn’t resize the renderer viewport) so you lose a bunch of the view, and you can’t quit. I managed to hack in a small fix so that if you try exceeding the display, it’ll max out at your display size, but it’s not up to my usual mergable quality right now.

  • After the jam time ended, I exposed a couple options via a config.json file so that someone could also adjust window settings themselves if needed.

Reflections

These are my pretty immediately “post-event” thoughts. I don’t know that I’ll be able to reflect fully until I’ve decompressed for a few days. We’ll see how it goes.

Process

I patterned my approach on previous attempts. A big design document got written upfront to dump my ideas into, and then a day-by-day plan.

Because of the engine rewrite, I decided to follow the Roguelike Tutorial series and apply it as a roadmap to my code. I under-estimated how long following it would take, but it did leave me with a robust base to work from for my own design, so it was worth it. And it’s in a state that I could probably pick up and use in future 7DRLs (if I remember to polish it slightly before then)

No plan escapes contact with the enemy however, so I was re-prioritising pretty often, especially as I didn’t have a lot of time during the week to make stuff happen due to personal obligations. It’s hard to plan for that, but I am happy I could carve out the time to do this.

I wish I’d dumped a few more of my ideas into the documentation: At the end I was scrambling a bit creatively because I hadn’t written down some of my more idle design thoughts. This event also posed a new challenge, as mentioned above: Boss fights.

I’ve never made a boss before, so I had to do some research and get some advice on how to approach that. Big thanks to Matt Hackett, Joe Daywalt and James A for their opinions on boss design over on the Valadria discord.

The last technique I used, and I need to use more, is harsh-timeboxing. Because I had a lot of bitty tasks to do on Day 6, I set myself short time-limits for each one, between 20 and 40 minutes depending on the task. This was good for preventing some creep in scope and time wastage. It doesn’t work for everything, but it really helped me focus.

Engine

Re-writing the bulk of my game framework Parcel immediately before the jam was both a good and a bad idea:

  • Good: I hadn’t worked on any games for a long time, and the rewrite forced me to re-install the engine patterns and design into my brain, which made development possible and smoother than it would’ve been otherwise.
  • Bad: I did end up having to rewrite a few things that I know exist in an incompatible engine, although I could also port a few bits and pieces (a lot of my engine code from previous 7DRLs is open source, so anyone can)

That said, I really like the way this framework has performed. There’s a few rough edges on the UI side, but overall it felt extensible and the system didn’t fight me very much for enhancement. Nice!

Other thoughts

I’m really proud of the output from this event. It’s a complete game. Playable from start to finish, with some sense of progression, a mild story supported within the game and at least some tactical depth. The “experience” you’d expect of a game is complete, if limited, and that’s huge.

What’s Next

Some rest, and getting back to life at large. It would be nice to come back in a few days to add to this game, but finding the motivation to do that after 7DRL has always been hard. We’ll see.

What’s Next for You?

I would’ve thought that would be obvious. It’s time to take your pledge, and descend.

Files

7DRL - Windows x64.zip 3 MB
Version 0.0.7 Mar 12, 2023
7DRL - Windows x32 3 MB
Version 0.0.7 Mar 12, 2023
7DRL - Mac OS 4 MB
Version 0.0.7 Mar 12, 2023
7DRL - Linux x64 6 MB
Version 0.0.7 Mar 12, 2023
Windows x64 3 MB
Version 0.0.7 Mar 12, 2023
Windows x32 3 MB
Version 0.0.7 Mar 12, 2023
Mac OS (x64 & ARM64) 4 MB
Version 0.0.7 Mar 12, 2023
Linux x64 6 MB
Version 0.0.7 Mar 12, 2023

Get Acolyte's Pledge

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.