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.

Summon Equipment Menu – First Prototype

Today I worked on the equipment menu for the summons. Behold.

This will look nicer someday
This will look nicer someday
  • Each summon has a weapon, alt weapon, and charm slot
  • Weapons/alt weapons are specific to the summon (bow/arrow for Shaedu, bomb/fuel for Bloodfire, spear/shield for Aeox)
  • Charms are generic and slottable to any summon
  • Charms will be the basis for the “blessings” system, where you use an item to do something special to one of the summons. One example: a charm that turns the summon to stone, to reroute foes or create a blockade (Could it be called the Tiny Hammer?)
  • All equippable gear has the opportunity to alter the summon’s base stats and weapon stats, as well as hook into many combat events such as taking damage, damaging another creature, before attacking, or even just an immediate effect (such as a shield).

Planned features for equipment:

  • Usable charms and active items will have a charge count and recharge rate
  • Recharging will probably be based on kills during battle, but could be based on other stuff
  • Gear can be leveled up to boost general stats and unlock new effects at high levels. Leveled up charms would have more charges.
  • Multiple charm slots available (probably an upgrade)
  • Ability to infuse a charm permanently to a summon–upgade effects become permanent, frees up the charm slot–probably expensive or rare opportunity

My goal with the equipment menu is to allow for some strategy in between battles. You can’t change equipment once the fight starts, so you have to plan ahead a bit, and pick the best stuff considering the area you’re in.

Now to make some more items.

When Creatures Attack

Part of the code upgrade from Soulcaster 2 to Soulcaster 3 is the way creatures attack one another. Since we’re going to have lots of complex equipment, magic, and creatures in the game, there needs to be a flexible system that can handle a wide variety of special abilities:  Life steal, stuns, poison, regen, invulnerability, mind control… All of these things need special code, and need to be informed of the events of an attack so they can play their special role.

Exposing events for customization like this is called adding hooks.

There are two phases to any attack: targeting (finding a suitable foe) and collision (the actual hit where damage is done). Let’s look at both of these in depth to see how it handles everything behind the scenes.

In this case, our immortal archer, Shaedu, is wielding a bow with a poisoned arrow. A rat is nearby.

rat1

First Prototype – Playtesting Results

Last night, I had the opportunity to show the latest build to some friends, who are developers themselves. Now usually I take pity on any poor soul who has the misfortune of asking a developer to playtest his or her game–but I have to say how impressed I was with their restraint; all three simply offered feedback from a player’s perspective, and didn’t rework the design of the game from the ground up, like I have a tendency to do.

My friends shall remain anonymous here, since I didn’t ask permission to use their real names in this post, and these days, one can never be too cautious about this sort of thing.

The one who played the longest actually took the time to clear the entire floor of monsters (which took about 15 minutes). He said he was compelled to do this because

  1. He likes to completely clear games out of principle
  2. The rats were so repulsive he felt the need to exterminate them to extinction

It made me realize one of the things the prototype is sorely lacking: state changes on the in-game map, to show which rooms have been discovered and cleared. It also made me think a bit about rewards for clearing an entire region–maybe this is how you get the boss to appear, or maybe a special NPC (like a merchant) appears only once the realm is free of monsters. Or I could go full Captain Eo style, and have the boss turn into a friendly NPC after you break the corruption within him. (Bonk’s Adventure did this too, now that I think about it.)