I haven’t updated the blog in a while, but don’t worry! I have been quietly plugging away at the game.

Since my last post, I’ve rounded out the spells and potions (for a total of 20 spells and 40 potions). I’ve added a revolver, shops, chests, water, noise, damage indicators, and a boatload of other features I honestly can’t even remember.

I did experience some slowdown around 7drl. In case you missed, I made a pretty crazy game about time travel called The Only Shadow That the Desert Knows. I also wrote a blog post about it (on my other blog) and it hit the #3 top post of all time on /r/roguelikedev. 😀

Nearing the finish line

To add some more transparency to the development, I’ve created a list of public milestones.

As you can see, I only have a few more things before I want to release on Steam Early Access. Mainly they have to do with polishing up the remaining parts of the UI. And of course, doing a ton of balancing and testing. If you’re interested in playtesting, let me know!

This week I’m working on conversation display.

Conversations

Right now, you can talk to any vampire or human in the game (provided you’re the same form at the time). The implementation of the dialogue has not been great though. Lines of dialogue got dumped into the message log and most people ignored it.

So I decided to make conversations more prominent and to give them that cool typewriter effect you see in old RPGs.

There are a few steps to achieving the typewriter effect.

Streaming characters

Obviously, the characters come out one at a time. That’s easy. The hard part is preventing weird line break behavior (visible in the video below). Words at the end of the line often jump to the next line as they run out of space. If only we could give words the same width even before they’re fully revealed. Luckily, that is easily achieved by displaying the yet-to-be-displayed characters as non-breaking spaces. Yup, it’s our old friend:

&nbpsp;

Note that this method is only guaranteed to work with monospaced fonts.

Beeping

I create the shortest sounds I could on Bfxr. At first I thought multiple noises would be needed, but one seemed to work the best.

When to play the beeps? One option is to play on every character, or at least every non-space character. That seems to be the approach in this video. What I did instead was only issue a beep when the ascii code of a character is odd. The end result achieves several things:

  • Reduces the rate of beeps to avoid them all bleeding together
  • Avoids beeps on whitespace for free (ascii code: 32), which makes sense
  • Gives text a rhythm that is analogous to actual speech
  • Produces deterministic patterns of beeps, so repeatedly viewing a line gives the same rhythm

The effect is pretty damn cool if I may so myself.