Room Tester – First Look

The latest addition to the Soulcaster 3 editor is the Room Tester. This takes a set of parameters (the room recipe) and generates a room to fit the criteria. So long as you specify the same seed, the room is always generated in the same layout given any recipe.

Here’s what the pattern editor looks like:

Recipe parameters on the left, room preview on the right
Layers and tile properties on the left, editing area on the right

This is the collection of four room split patterns. When a door is marked as a split entrance, it matches one of these with the door to prevent access to it. The + symbol represents the anchor position, where it needs to align with the door in the room. The pattern area is within the colored rectangle. The tiles marked with diagonal lines are required tiles, meaning they have to be included in the room for the pattern to be valid.

Level Analysis: Soulcaster 1

A procedural level builder needs to be able to make fun levels.

It took me a while to get the hang of what is fun to do in the Soulcaster world–when making the first Soulcaster, I probably made about 30 bad levels before I found my footing and made some good ones. In this article I will take a closer look at some of these (the good ones), to see how they are constructed, what experience they offer, and how they might be broken down to be generated procedurally.

One advantage to the pattern-based room generator currently in SC3 is that, worst case, I can just build a large collection of intact levels with some basic parameters, then stitch them together randomly to build the game world. This at least offers the craftsmanship of prefab levels, but kept fresh for each replay. I’m not setting out to make an algorithm that could generate these levels from scratch–that would take way too long. Instead, I’m looking for ways these levels could be broken down into basic elements that could be swapped out, flipped, rotated, inverted, and otherwise manipulated.

Some levels will be only slightly dynamic, while others will have lots of parameters and will be vastly different every time. I think we’ll need a good balance of both of these types to make a solid experience.

Let’s start with the simplest level, the Cellar.

cellarThis is a great example of a room that’s best left intact. It has a few waves of enemies that appear from the barrels, controlled by a combination of floor switches and natural progression by killing foes. Maybe later down the line I could find a way to add dynamic parameters, but that can be put off until alpha or later.

Ask Twitter: Placeholder art, scoring my own games, XNA, the leap to procedural

With today’s work on Soulcaster mostly being behind-the-scenes stuff involving the new slotting equipment/inventory system, I figured I didn’t have much to say on that topic today. I decided to poll my Twitter list for topic ideas, and got several I could answer lightning-round style. Here goes.

blog topic idea - vgm

On my own games, I get to pick whatever style I want, and have final approval. This does not necessarily make things any easier. Lack of constraints can be paralyzing for me, so I usually set up some artificial constraints before starting the score. On all four of my games so far, I’ve gone for something of a 90’s era redbook audio vibe. Soulcaster used Lagoon (SNES) as its main inspiration, Soulcaster II used Labyrinth (the movie), Escape Goat used Castlevania: Curse of Darkness, and Escape Goat 2 drew a bit from Bayonetta. All of the instrument sets were restricted to software versions of hardware that was available in the 80’s and 90’s.

Central Room Features Operational

I added a new type of pattern to the room generator today: the central feature. This is not anchored to a doorway or corner, but is centered in the room, and can be flipped and rotated to fit (or just for variety).

The pattern authoring and placement code is starting to get funky. It’s going to take some cleaning up, but I’m saving that for next week, since I want to just power through and get some monster spawners in there.

One thing that will need to be fixed first is the priority system for merging multiple overlapping patterns. You can see some of the issues that are created below:

sc3 testroom 1
Top right and bottom left corner decorations have blocked the path to the left and bottom exits
sc3 testroom 2
Access to TOO MANY doors here–the top door should be an inaccessible split, but the floor buffer from the central enclosure tore down the pillars.
sc3 testroom 4
Most of the rooms generated are actually okay, like this one. The gate is controlled by the floor switch on the other side, so you have to come in through the bottom to access that door.

Dungeon generation is coming along really nicely. For the first time, I have a 5×5 grid of randomly generated rooms, and about 50% of the time, the entire map is navigable.