Level design: need advice

Started by
10 comments, last by wuut 12 years ago
Hello dear GD community.

today I need advice with my level design stuff.
I am working on a RPG-Sidescroller where the levels are generated randomly as the player proceeds deeper. For this ive wrote a simple algorithm.
But I ran into some issues with my design:

1. I generate levels, each level has a constant high, each level has a random number of doors and each level has stairs getting the player to the next level. The algorithm is too simple.
Consequence: the player is going to be bored fast. Need to make more variety.

2. Since the game will have some survival gameplay, Ive made the environment (deep tunnels, underground) dark. There will be some light sources on specific places.
(the player is running around with flashlight).
But i dont know where to place the light sources, I quess there must be some strategic places.
See pictures below.

Color codes:
black is the solid stuff
green are the rooms
red are the pathways/hallways
yellow the doors
and violet the stairs

3. The environment is planned to be hostile all the time. Monsters, traps, dark creatures from the closet.
So I was playng with the idea of having safe rooms, where you can manage your inventory, check your character stats and so on, Where no monster can enter (also maybe a save game point). What do you think of this, and where to place it?

4. Anything ive missed about survival sidescroller rpg's?
Any feature you want to have in such game?

So I need any suggestions/advice to these points.
I thank you in advance,

Joe

----------------------------------------------------------------------------------------------
Images:
1. Level Minimap:
http://imageshack.us.../templatep.png/
2. Screen cap
http://imageshack.us...0/27243828.jpg/
----------------------------------------------------------------------------------------------
Advertisement
A friend of mine spent quite some time on this, albeit his goal was fairly more complicated.
A simple trick he used: have "sets" of layout-equivalent rooms. Say you need a room which is 100 pixels wide (I'm putting it in terms of the map showed in template.png). Instead of applying always the same room style, select at random a new room. Mods can be simple (shift hue) or more involved (add a small stream of water, add a bridge, no rooms below). There can also be special rooms such as "treasure room" (chance to spawn only if room is no more than 50 pixels wide, only on map edges, no stairs, only if strong monster opposition nearby) or "lava pit" (chance to spawn if room is at least 200 pixels in length, only in lower levels).

Simply adding some graphical features might help.

Both variations might introduce gameplay events. Or perhaps not.

You'll soon find out that the variations need quite some work even for layout-equivalent rooms which in general might end generating inconsistent results. But it's a start.

Previously "Krohm"

Google "roguelike development", you will get websites specialized in the maze/dungeon/cave generation algorithms :)

Stellar Monarch (4X, turn based, released): GDN forum topic - Twitter - Facebook - YouTube

Thx Krohm and Acharis for replies.

@Khrom:
I am not really sure what you mean, but I hope I got the idea. See attachment.
Can you show some samples or give me a more detailed explanation?
thy.

@Acharis:
I spent some time googling about "progressive level generation" and "roguelike development".
The most things (sample source, concepts, ideas) I've found were designed for a top-down point of view.
But sidescroller-style is something different and I could not figure out how this would be useful for me.
thy.

Anyway, I wrote a new algorithm and need some suggestion for this.
The picture is in attachments.
The [color=#008000]green color is the space, black is solid and the small black lines between the rooms supposed to be doors (later).

Does this Level look like its playable?? (i mean for a randomly generated level)??
Is it an improvement to the latter (above)??

Thx.
You'll notice that there's no stairway connecting the 9th and 10th floors, so I will say no, that level does not look playable for that reason. However, I'm sure that could be fixed by adding in some code to ensure than when every floor is generated there is at least one set of stairs going down to the next level.

You'll notice that there's no stairway connecting the 9th and 10th floors, so I will say no, that level does not look playable for that reason. However, I'm sure that could be fixed by adding in some code to ensure than when every floor is generated there is at least one set of stairs going down to the next level.


Yes, i noticed that too (its fixed already). But thats not the point. I mean, if the there were a stair between 9th and 10th floor. Would it be a level to go through?
It certainly looks like a level and the player could walk through it. The only other thing I can think of to consider is whether or not a player has enough motivation to explore areas that he's likely to realize are dead ends once he finds the stairs. If I got to the 5th level from the top, I'd find that next set of downward stairs pretty quickly. By then I should already have an idea of what the game is about and what I'm trying to do. So as soon as I encounter those stairs I already know if I'm going down them or exploring the remaining rooms. So with the game play you have in mind, is it going to be worth my while to explore those rooms and travel back to the downward stairs or should I just go down them now so I don't waste my time? I guess the question is, does the level fit with what you have in mind for your game?
My game is based on generated levels too and I've spent some years now to get it right. As Krohm has said, use templates and addtionally different layers of "meaning".

As a layer of meaning I mean to build your level from top to bottom.

Level-Layer
At the first layer, let's call it the level-layer, you decide the general theme of a level (sci-lab, underground cave, space station).

Section-Layer
The next layer would be some kind of sections, a group of single rooms, a single area in your level. I.e. when choosing a space-station level you have a bio-lab, a mech-lab, a canteen, living section, a gym section, the command bridge etc. This layer is the base for a certain template set and monster set.

Template-Layer
Templates are finally your basic building block to create your actual level. The previous layers help you to choose consistent and meaningful sets of templates. A template can differ in size, all you need are defined links between different templates to "click" them togehter, then fill the level will some monsters.

Point-of-interest
You should add some points of interest to break up the monotony. I.e. in a bio-lab some kind of container with some alien in it. It must not have any function, but the player should stop for a short momentan to intake the scene. Addtional these points of interest help to navigate through the level by remembering these point-of-interest (ahh... there was a door near this alien)

Finally, you really can't answer the question if a level is interesting or not by just looking at the map. Try to get some alpha tester for your game to get a reasonable feedback. You, as developer, will loose quite fast the ability to measure your own game. You will find it quite boring, because you're able to beat it while sleeping and you already know each little secret.
I'm watching this thread with great interest, as random-level generation has been an interest of mine for a while. An issue I've always dealt with is sometime's its difficult to enforce a particular level is solvable. If you randomly place locked doors, keys, passageways, etc, it becomes very easy to make an unwinable scenario. I came up with this solution, but I haven't implemented it yet: generate the world 1 room at a time.

Take what Ashaman73 said, and come up with a theme and goal. Lets say the goal of this level to retrieve object X, and then exit the level a different way than you came in. Instead of generating a level with object X in it, just generate a room. The player looks around, find a door. He opens it, and it leads to another room, passageway etc. As the player moves around, the level is generating just 1 step ahead according to a few simple rules:

1. First, there's a list of objects that need to be found, along with a probability representing how hard/easy the object is to find. The game starts with Object X, and the exit on the list.

2. When the player attempts to open a door, if there are any other unexplored paths in the game (doors that have been generated but not yet opened), there is a probability this door is locked. If it's unlocked, a room behind the door is generated. If it is locked, a key to this door is added to the list of objects to be found. (or see rule 5)

3. When generating a new room, if there are objects on the list that need to be found, a dice is rolled and maybe that object is in this room, and you should place it here. Also, there is a probability you will find a random key that doesn't belong to a specific door yet.

4. When generating a new room, it may contain a random number of doors to other ajoining rooms. if there are object that still need to be found, and they are necessary to win this level, and the objects haven't been placed in this room, and the player has opened the last unexplored door, then this room MUST contain at least 1 more door other than the one you entered through.

5. When generating a door, if it is locked, and the player has previously found a random key, randomly decide if this is the right key or not.

I think that from the player's point of view, a level generated as above on-the-fly will always be solvable AND will be indistinguishable from the case where the level is generated all at once ahead of time. Also, there a few advantages to this kind of scenario, for instance a player can get a 'lucky' powerup (or unlucky punishment) that changes the probabilities, and makes it hard to win. A punished player will always find the key after exploring room after room, a rewarded player will find it very soon. It also has this extra feature: In a pre-generated world if the player looks everywhere, but for some reason completely missed the one spot the key is, he'll never find it, and will become frustrated. In a on-the-fly world, the player will eventually find it, no matter where he is looking or which direction he took in the beginning of the maze.
Really, this is just a question, but are you using Cube 2/PAS?

This topic is closed to new replies.

Advertisement