Game Development Tips: Fast Level Design
Staff Writer By: Sergio Rosa (nemirc)
When working on level design, it is a good idea to keep things simple and make sure you can test the levels quickly. I've seen people making the mistake of "constructing" the levels rather than "designing" them, because they start with the idea of making the levels look as good as possible, not minding about design and gameplay in general. The problem is, this workflow makes it very difficult to make any changes, because you have to deal with way too many objects, interconnected hallways and rooms, and things like that.
To be honest, I made that mistake a couple of times and that helped me learn the massive problems that can cause.
Unity lets you create primitive objects in the 3d view (I think most major game engines have the same feature), and that is really useful because they allow you to block areas and layout levels quickly and easily. When working on a level, it can be tempting to go full production mode and make it look as good as possible, as quickly as possible, but keep in mind that, in a game, your first priority is to make it entertaining.
Notice I use the word "entertaining" rather than "fun" because not every game will fall in the category of "fun" (for example, horror games, or exploration games).
Earlier this year we were working on a project, and the 3d modeling guy wanted to know how the final game would look, so he began to work on the "final" look of the levels before we could do heavy testing of your primitive-based level. At first it was all just fine, but it wasn't until we realized we wanted to make changes that we noticed it was easier to scrap and start all over again than make changes.
The change I wanted to make was very simple: I wanted the hallway to be shorter because nothing happened as you walked by it, and it didn't build up for any sort of big event or atmosphere. The problem is that if we made it shorter, we would need to move a lot of other things, not only in that hallway, but in adjacent and connected rooms.
At the end I added a few more things to that hallway, so players could at least get one or two story elements. That made the length of the hallway useful, but that doesn't change the fact it was a "patch" to the problem rather than an actual solution. Laying out levels quickly, using primitives, is a good way to start testing your level and see what changes need to be made. For example, if you're working on a platformer, you can check if the level is fun and challenging. Keep in mind that changes can be something as simple as making a hallway shorter, because nothing happens and it can feel too long.
Right now, while that other project goes through a contest (we're trying to get the funds to develop it), I'm working on a short third person platformer (and if you behave, I will make it available through the Renderosity Marketplace :) ). The image above shows an example of a level I'm working on. For that specific part, those big cubes will later be replaced by a rotating slicing object, but right now all I need is to test the rotation speed, how fast it rotates, and the distance between edges.
At this point I don't even need to have a character, because a controllable cube or cylinder will work just fine. You can even notice the character may be too big or too small for the screen.
It is very likely you will need to make changes to a level, so it's better to make those changes when levels only have a few objects that need to be moved around. Using primitives is a good way to start a level and make sure it works, before you begin working on anything else.