Day 6: An Open Book


Very productive day! I’m very happy with how everything came out, although I’m not sure it’ll be enough to get to the finish. Let’s see!

Day 6

I started off with the “lexicon”, the book you can use to get information about words/translations you know. It also explains the grammar of the magical language, “Veralethi”, which you’re using.

I had a bit of fun styling it as a book, and actually letting you flip the pages back and forth. If I had time for sound effects this’d be a prime candidate. I had to grapple with some complex UI shenanigans as well as re-discovering my text-wrapping code to make all this display correctly.

I added some extra help boxes to guide you on what’s going on (the “press left-right” and title boxes), and I think it makes it look better and provides clarity. There was a bit of a design question around how I present words: Do I show them in a fixed order that fills in as you discover words, or in a linear order as you learn them, similar to writing new knowledge down in a notebook? I opted for the latter. I’m hoping that it’ll be okay. I also made it so that you can flip past your current notes to the end of the book, for fun.

With that done, I needed to set up ways for you to actually learn words. I had the system in the default state, where you know nothing, but that doesn’t work for players who don’t know where to get all their words from. To that end, I did two things: You learn three words at the beginning of the game now. These are automatically in the lexicon and you can view them easily.

In addition, you can find and acquire “books”, which will automatically teach you a new word, adding it to your lexicon.

The final major learning opportunity right now comes from enemy monsters. I implemented a simple “sorcerer” with appropriate AI so that they can run up to you and cast spells at you when able.

That AI can be greatly enhanced, but there were some interesting challenges in calculating where to “target” the spell. My game engine, like a lot of roguelike’s engines, is designed so that monsters and players operate by the same rules. This means that the enemies have to be able to cast a spell in the same way, with the same targeting rules. Getting this computation down was tricky but satisfying. It also accounts for different kinds of spells.

Finally, spells enemies cast will interact with the environment exactly the same way, which means they might launch a fireball into a patch of grass they are standing in, accidentally set themselves on fire and perish. Oops!

With time running out, I started to focus on setting up for the final game experience. I really wanted the game to start in a forest, so I created a new level generator based on cellula automata. The rules from this article provided really nice results that allowed for open areas and lots of loops. I also quickly implemented a little re-theming of colors for the forest level and I think it looks pretty now.

Next Steps

This is the final day, so everything has to go into finishing the game now. I need to make it a complete game loop, where you can descend into new levels, learn new words and eventually “finish”.

I don’t think I have time for more environmental features right now, and the set of spells is a little lacking, but it’s sufficient to prove the concept.

I’d like to add some sort of boss monster if I can, to provide a satisfying end to the story of the game, and if I can, a host of other monsters.

There’s some more mundane work to do too. The title screen is not set up and there’s vestiges of other half-baked systems that need to be polished away.

I also have to deploy the game. I acquired new hardware since last 7DRL, but I haven’t migrated to automatic release pipeline to it yet, so I shall be doing that too.

You can watch me do most of this on twitch today, or catch up with the VODs on my YouTube channel.

See you there!

Get Arcanist's Heritage

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.