Level Design

The first steps to create a basic level are described in the Game Design Tutorial that you should start with. However, not only aesthetical, but also technical issues must be considered when designing a level. They are described herein.

BSP Tree Considerations

For building an A7 BSP Map, the invisible intersecting parts of blocks are clipped off by the build process, and new edges and vertices are automatically placed at the intersections. This makes rendering faster, because the overlapping parts of blocks aren't rendered (in a Simple Map, all blocks in the view frustum are just rendered over each other). The disadvantage is that small angle differences can lead to large vertex position differences. If surfaces touch or intersect at a very small angle, inaccuracies of only 1/100 degree can move the joining edge position by several pixels, which is really visible in the level.

For this reason, don't use extremely narrow, elongated, or acute blocks for a BSP Map . Do not create blocks with edges smaller than 2 quants. Always try to design your map with as less surfaces as possible, and use as thick blocks as possible. Sometimes you can't avoid surfaces touching at small angles - but even then there's a bad way and a good way to do it. For instance, if you have a sloping road over a hill (side view):

Bad BSP design: uses long thin plates, and small angle inaccuracies in the marked joints will be visible as 'gaps' or 'steps' from above.

Good BSP design: 3 blocks with 13 surfaces instead of 5 blocks with 20, and angle inaccuracies, even if they occur, won't be visible.

The BSP tree creation will 'snap' all vertices to integer positions. This can produce problems with T-junctions - a place where two block edges form a 'T' - when the junction vertex is not at an integer position. In this case the vertex displacement to an integer position can leave a visible gap or seam between the junction and the non-displaced crossbar of the 'T'. This is a common problem in BSP tree levels. The map compiler tries to convert as much 3-way T junctions as possible to 4-way 'X' junctions that aren't a problem in that reagrd. But it can't catch all. There are two solutions: a) have no T-junctions, and/or b) have all vertices snapped to the integer grid in your level.

Lighting considerations

Static lights and shadowmaps greatly add to the atmosphere of a level. Although they are available in all Gamestudio editions and are simple to use - you only need to place lights and give them proper ranges and colors - some users manage to create a level with really bad lighting, or with no lighting at all. The three most common beginner's mistakes are:

Use static lighting carefully and you'll end up with a great looking level. You'll find a description of the light algorithms under Light Engine, and hints how to use dynamic lights for shaders under Shader Guide.

More level design hints

► latest version online