It’s time I talk a bit about my next project.
Brace yourself. It’s very placeholdery. Graphics were ripped sloppily from Soulcaster II, and the full screen layout is too ugly to show in its entirety. But let me win you over by explaining bit about the new direction Soulcaster 3 is taking. (For starters, it’s probably not going to be called Soulcaster 3. A better title will reveal itself in the next few months.)
This blog post is part of a new effort to not develop this game completely in the dark. Remember… it’s never too early to show your game!
The first thing I’ve got to bring up is that I’m testing out procedural dungeon generation. This is totally new territory for me as a designer, and I have to say the fun of building these systems is AMAZING. The only research I did on procedural level generation was reading how Spelunky creates its layouts, and that was enough of a starting point for me to design my own system.
I have a tile editor much like the one I used to make levels for SC1 & 2 (actually, a bit more like EG2 editor, since it’s all in the game client). But instead of using it to author static rooms, I am using it to make “patterns” – small room structures that can be applied arbitrarily in a procedural room. Above, we have two different pattern definitions, used as corner decorations. And here are a couple of what I call “room splitters”:
If you’ve played Zelda, or any of the hundred other games that do this, you’ll know instantly what that island is for: teasing you with a badass-looking trinket, and leaving you with the task of finding the way to the other side.
When the game generates a custom room, it draws from both of the patterns, randomly flipping and rotating as needed to fit the layout. (The splitter island, for example, needs to line up directly with a room exit door.)
The room splitter is one of a few patterns that will be used to have the world maze “bleed” between rooms. Another example would be a diagonal split, or a shortcut where you need to go the long way first.
The maze generation is really simple so far, and looks something like this:
The silver arrows represent regular doorways. The green arrows are branches, where the room has more than one exit. The red doors are for splits, so they don’t actually offer a through path–one of the two sides of that door is going to be an island or enclosure. Think of it like the maze boundary being within one of the rooms, rather than between them.
For now, I have rooms of random sizes, with a basic grid layout, like The Binding of Isaac. This is my good starting point, to see how the traditional Soulcaster gameplay hangs together with this model. Eventually, I might experiment with arbitrary room positions, so the map layout reflects the different sizes and door positions of each room.
There’s a bunch of other new stuff, too, like AI improvements for the monsters, usable items (a more sophisticated application of the Scroll of Ruin), more complex machinery like moving gates and two-way switches, spawner aggro ranges (stealth!), and probably coolest of all: slotted inventory for the summons. (RPG mechanics being the one thing you NEVER hear about being removed from a game.)
The basic micro-game is the same as before: summon allies at strategic locations to fight off hordes of enemies. But there will be a few new metagame elements. One of my favorite experiences in pure roguelikes like Dungeon Crawl Stone Soup is the tension of risk management… how far do you push things, given the information you have? And when you get in over your head, what do you have to spend to save your life? One goal of this project is to bring this experience to the burgeoning action rogue hybrid genre.
This week’s focus: Get the maze layout and pattern merging working, so I can have a 5×5 map of rooms with real geometry, shortcuts, teaser islands, and decorations.