Jake's blog

The new dungeon generator is finished!

The majority of the work behind dungeon layout creation is finished, and I'm very happy with the results. In the future I'll be making things more interesting by adding lots of flavor to the rooms themselves, as well as some larger dungeon flavor features.

So for anybody who is interested, here's an overview of the algorithm I used:

1. Apply a template to the dungeon. This template can be chosen specifically, selected from a set of templates, or chosen completely at random - it's up to the Area definition file. This template marks the areas of the dungeon that will be left completely blank. For example, a template file for a big whole in the middle could look like this:


Revamping dungeon generation

For a while I had been kind of unhappy on how the dungeons were looking and feeling. While the rooms themselves had some variations, the layouts of the dungeon were just boring, so I set out to find a new algorithm. Well, I found it and have been working on getting it up and running, as well as adding my own improvements to it.

Things aren't fully working at the moment, but after a bit more work on it I'll be to the point where I can provide some interesting screenshots to go along with a full description of what's going on.

I will admit that I've gotten a bit bogged down over the past couple months, but it's mostly things outside of my programming life that are affecting it. I'm still very much into the project, and hopefully I can get some larger chunks of time spent on it.

Up to speed

I feel like I'm almost up to speed with the project. I've already been able to dive in and make some progress. More importantly, though, I've filled the trac backlog with a bunch of items, got a 'release' schedule planned, and have decided that the time to post an actual alpha release and make the game a little more publicly known may be very soon.

I'm excited, I've got some drive to get to work, so hopefully the game can take off soon.

The similar role of sound

Sound is yet another example of something simple that can add a lot to gameplay, and the feel of the game in general. Roguelikes especially make use of stealth and speed as useful and viable options of playing, which is most easily made apparent when considering sound.

Sound behaves almost exactly like smell, only it happens instantly instead of spreading over time. How far the sound reaches and at what level depend entirely on the original level when it was created. The volume of the sound is spread throughout the map starting at the origin. It dissipates as it spreads. Any creatures within range of the sound are given the chance to react to it.

Sense of smell

A simple way to give monsters a little more character is to give them a sense of smell. In turn, the player deposits smells on the cells that he walks over. Smells decrease in strength as time passes and eventually fade away to nothing. Optionally, smells can spread to other cells.

I coded up and tested a number of different implementations of how smells were deposited and spread. But after lots of coding, testing, and tweaking, I realized that the benefits to gameplay weren't a reflection of how realistic the whole system was. So I ultimately decided to stick with something simple:

Input and User Commands

I just finished implementing the system for handling user input and commands, and I must say that I'm liking how it's turned out. Some of it was planned, some of it I had no choice, and some of it felt like a hack but turned out nice.

Timing, Turns, and Speed

My first thoughts on turns and game timing were directed towards a priority queue of events. A creature takes a turn, then adds itself back on the queue for a later time. I thought about leveraging the queue for other things, like when hunger starts to take a toll, poisons that wear off over time, etc. But the more I go into coding it, I started to realize that efficiently managing that queue was going to be hard. So I decided to save myself the days and days of coding and testing and opted for a simpler solution.

New development blog

As part of moving onto SourceForge, I've also leveraged Drupal and its easy features. Unfortunately, that means axing the old blog as well.

This new blog will serve the same purpose as the old one - give the latest updates on the development of RogueRunner and to serve as a central location for the 'articles' I write pertaining to the development of the game.

Syndicate content