NeL Ligo

Generating Large Landscapes

Although online games usually need large areas to accommodate a large number of concurrent players, the time to produce all this graphical data is limited. To speed up production, the landscape can be generated, but distinct areas still have to be different, allowing players to get their bearings, and their appearance has to be editable. The NeL Ligoscape (Ligo library) is a 3D block combination system. It allows to rapidly produce large areas for NeL 3D landscape.

Principle

The system is a 3D extension of traditional 2D isometric grid systems. In such systems, each 2D block is usually a square. The landscape designer paints a grid, using several sets of blocks (e.g. plain, plateau, swamp). Each square is assigned a random block from the chosen set. It implies the border of all blocks in a set must be compatible. When the designer chooses another set, the software select the proper join between the blocks of the two different sets from a set of transition blocks. To produce transition blocks, the simplest way is to create three basic blocks. The resulting landscape is however quite monotonous:

Using nine basic transition blocks, positioning borders at either 1/3 or 2/3 of an edge, is a well-known improvement:

Standard Block Design

In a block set, all the blocks must be geometrically compatible. The texture at the border of a block must continue at the joint border of its neighbour (the left picture below shows a wrong block border while the right one shows a correct border).

To produce a textured block, respecting the block constraints, the designer works on a pattern, seeing ghost copies of his work on adjoining blocks.

Transition Block Design

To join blocks of two distinct sets, we can't use standard blocks but must use transition blocks. The left picture below shows a wrong block border while the right one shows a correct border).

The designer has to produce nine transitions blocks for two block sets. He works on a 3D pattern.

The designer can assign each block some attributes, for example he can decide if a slope can be walked over or is a barrier. This helps generating the collisions.

Landscape Design, Using Preset Blocks

As 3D data is much more heavy and complex than 2D data, it's easier and faster to use a 2D world editor to "paint" with the blocks already designed. The designer can filter the applied blocks, selecting some attributes. For example, he may position a barrier using blocks tagged with the "barrier" attribute. To make landmarks, he can make a specialized copy of a specific block.

The NeL Ligo Library

The Ligo Library comprises two sets of classes. The first set implement primitives. (see in code/nel/include/nel/ligo and code/nel/src/ligo). A primitive is a set of properties usually associated to a geographical area (CPrimZone) and can be placed by a level designer. Primitives are stored in an XML file, the structure of which is described in a primitive class XML file.
The second set of classes is related to NeL Ligoscape. They are all located in code/nel/src/ligo. Some tools can be found in code/nel/tools/3d/ligo.