cartoon pic of site's author
Blog  |  D&D Stuff  |  About  |  Other Places  |  rss logo

Dev Diary 3

Yarl isn't the name of my game. Yarl is short for Yet Another Roguelike.

In my head it's also called Untitled Roguelike, which is accurate and also a nod to the first Twilight Movie, whose pre-production code name was 'Untitled Sports Movie', a name I find delightful. I learned this because for a brief time I worked for a VFX company called Frantic Films who did some work on the first two Twilight films. Also: James Cameron allegedly hates baseball caps and when he'd visit a company doing work for him, staff would be reminded to not wear baseball caps that day.

I'm getting off topic. In fact, haven't even got to topic yet.

So what's new?

First up, I began playing around with generating history for my dungeon, as mentioned last time. Mostly just to play around with how to represent historical 'facts' and use them to generate dungeon features. I plan to have many types of historical events the RNG will draw from, but for now I am just randomly generating monuments to a battle that happened in the distant past. (The statues and mosaics' descriptions vary depending if the battle was lost or won, and if the ruler was beloved by his people or not)

The player finds a historic statue! The player finds a historic statue

Character creation

After that, I continued coding away, adding features and such to slowly make my game more game-like. First up: character creation. My game is going to have character classes a la bog standard D&D, but for simplicity I've decided to include lineage and career path. (There's precedent for this in one version of Basic D&D!) I'm not sure how many different classes the game will have. That'll depend largely on how much interesting differentiation between character types I can come up with. I'm starting with two warrior-types because then I don't have to think about how spellcasting and magic is going to work in my game...

Character selection screen The character selection screen

At this point I had to make decisions about how represent stats and such in code. But once the player character had stats, I could begin work on combat!

Fight!

My starting point will be 5e-esque rules (although I'm drawing more specifically on Shadowdark instead of vanilla 5e) and worry about game balance and difficulty much later in the development cycle. For now, I wanted my character to be able to walk around and fight monsters in a basic way. One way I'm varying from standard D&D is instead of rolling a d20 for your attack roll, I'm rolling two d20s and averaging them. This should make dice rolls over the course of them closer to a normal distribution instead of an even distribution you'll see from a single d20 roll. I'm also not doing critical hits and aren't sure if I'll add them in later.

In the interest of fairness, since the player could hit the monsters, the monsters needed the ability to fight back to. And sadly (sadly?) I needed to write code to handle the player being killed.

A character has been killed in my game Don't grieve this character, they're just an early alpha test

So, when I first gave monsters the ability to find the player, move toward them, and attack, they would swarm the player very quickly. My fix for that was to generate most monsters in an Idle state and then have the player's movement wake them up. Right now, what I do to alert monsters is a flood-fill with each step the character takes out to a distance of 15 squares (blocked by walls, doors, etc). 15 was an arbitrary number. But in the future I'll have character classes who are more stealthy -- maybe their footfalls only radiate out to, say, 5 squares. And magic items and spells could also reduce your noisiness. Anyhow, I have a nascent stealth system!

But then it occurred to me that I could also have the monsters make noise and alert the player. I thought this would be a nice effect since I am limiting the player's vision to range of their torchlight so:

The character hears footsteps Ooo -- spooky footsteps in the distance :o

And onward

Right now, all monsters cause 'padding footsteps' but I'll need to provide differing descriptions in my monster definitions. Dire bats, for example, aren't going to make pading footsteps. Next up, I'll add XP for defeating monsters and think about levelling up. Right now, my plan is that upon levelling up is the character will get a random new boon. A stat increase, a special ability from their class, bonus hit points, etc, etc. Some other ideas I had were similar to 5e's Feats, but I'd like those to be less random. Like, if you've been carrying around a greatsword a lot, you may get an ability that makes you better with your greatsword. Or if you've been using a shield, maybe you get shield bash. Just a few ideas. (I'm not sure if/how I want to actually track for how many turns a character has had certain gear equiped)

Once a player can level up, the next things I'll add to the game are more items like healing potions. At the moment, there's no way for the player to get HP back, which impedes testing a bit :P As part of my push toward Minimum Viable Dungeon, I'll develop up to level 5 characters and populate the dungeon down to level 5. After that I think I'll turn to the village and work on the NPCs the player will get to interact with.

There's a Game Jam for roguelike development the first week of March called the Seven Day Roguelike Challenge where you attempt to make an entire roguelike in a week. I'm not taking part because I don't have an idea I think I could complete in seven days, but I have Friday off work so I'm going to spend most of the day working on my game in solidarity.

Dana's Delve is open source under the Creative Commons CC0 1.0 Universal license and its source code is available on GitHub.