Levels

Many of the packages located in the game's `CookedPCConsole` folder contain levels. Levels are collections of objects, mostly `Actor`s, that are all loaded together and represent one of the game's environments. During the deployment process these levels were "cooked", thus the level packages additionally contain all of the assets necessary for displaying the level.

## Types of Levels

Some maps are too large to load all at once. These maps have been broken up into a single persistent level and multiple streaming Levels.

Persistent levels contain the parts of the map that are always loaded. These are usually things that are visible from a distance, such as the skybox, terrain and vegetation billboards.

Streaming levels contain the more detailed elements of the map. They are loaded on-demand, usually when the player gets near a specific area. Streaming levels can be loaded manually through UnrealScript or Kismet, but they can also be loaded automatically with streaming volumes.

Packages containing persistent levels have the suffix "\_P" (e.g. `LMPlatform_P`). Streaming levels are named after the persistent level they are loaded into, with the suffix "\_S", followed by the name of the streaming level (e.g. `LMPlatform_SHalloween`).

## Loading Levels

Since the game's demise, multiple techniques have been discovered to load levels without a functioning server.

Normally the game loads the `Login_P_alt1` level on startup, but this can be changed, by editing the value of `LocalMap` in `DefaultEngine.ini`.

A new level can be loaded at runtime with the `open` command, after setting `bShowLoadingMovie` to `FALSE`. See Otherland Exploration Quickstart for more information.

The `open` command only works on persistent levels, editing the `LocalMap` value also makes it possible to load streaming levels on their own. Some levels can't be loaded without further modifications, due to a missing player start.

## Unlocking the Camera

When a level is loaded in this way, the game is normally non-functional, due to the active `GameInfo` class not being able to connect to the server. It's possible to enable the debug camera function from this state, using the following procedure:

1. Run `re ClientOnlyStartup` from the console. This should change the camera angle.
2. Press Space, until the camera changes again.
3. Run `ToggleDebugCamera`

Alternatively, it is possible to change the active `GameInfo` class by editing `DefaultGame` in `DefaultGame.ini`. With a suitable replacement, such as the one from HappyBug, this makes it possible to enable the spectator camera at startup, as well as adding other useful functions.

## Loading Streaming Levels

Once a persistent level is loaded, additional streaming levels may be loaded via the following commands.

### ToggleStreamingVolumes

This command enables the streaming volumes built into the persistent level, causing streaming levels to load when the camera enters certain areas. Streaming volumes can be visualized with the commands `show Volumes` and `show TerrainPatches`.

### StreamLevelIn

This command can manually load streaming levels that belong to the currently loaded persistent level. It can also load every streaming level at once, by using `all` for the level name. Levels can be unloaded with the `StreamLevelOut` command. These commands do not give error messages with invalid level names. They don't work at all without an alternative `GameInfo` class.

### StreamMap

This command can stream any other single level on top of the currently loaded one. It also works with levels that don't belong to the loaded persistent level, it can even load other persistent levels. Only one other level can be loaded with this command. It also seems to break the other level streaming commands.

## Maps

### 8Squared

*Each cell represents a streaming level with the format "8Squared\_SAreaXX00".*

### Fire Isle

*Cells in the green outline represent streaming levels with the format "AeroFire\_SZoneX0".*

*Cells in the red outline represent streaming levels with the format "AeroFireStart\_SZone1AX00".*

*The "AeroFire" and "AeroFireStart" maps overlap, but use different numbering for their streaming levels.*

### Water Isle

*Each cell represents a streaming map with the format "AeroWater\_SZone4XX00".*

*Cells in the yellow "AeroWaterFirewall" area also exist as levels with the format "AeroWaterFirewall\_SZone4XX00".*

*The "AeroWater" and "AeroWaterFirewall" maps overlap and use the same numbering for their streaming levels.*

*The "AeroWaterFirewall\_SZone4AV08" and "AeroWaterFirewall\_SZone4AV09" levels also contain skyboxes visible from the whole "AeroWaterFirewall" map.*

### Wood Isle

*Each cell represents a streaming level with the format "AeroWood\_SZone2XX00".*

### Mars Oasis

*Each cell represents a streaming level with the format "BattlegroundOasis01\_SXX00\_Terrain".*

### Bug World

*The green outlined area represents the unified Bug World map from the game's initial release.*

*Each cell in the yellow areas represents a streaming level from the latest version, with the format "BugWorldJungle\_SXX00\_Terrain", "BugWorldRuins\_SXX00\_Terrain" or "BugWorldResearchComplex\_SXX00\_Terrain".*

*Numbering is consistent across all Bug World maps.*

*"BugWorld\_SAG04\_Terrain" also contains various floating rock around the edge of the whole map.*

### Enchanted Forest

*Each cell represents a streaming level with the format "Challenges01\_SAreaAX00".*

### 8Squared Past

*Each cell represents a streaming level with the format "Newbie\_SAreaXX00".*

*"Newbie\_SAreaAB03" also contains a fog effect, visible across the whole map.*

### Lotus Landing

*Cells in the green outline represent streaming levels with the format "Newbie\_SAreaXX00".*

*Cells in the yellow outline represent streaming levels with the format "NewbieInst\_SAreaXX00".*

*"Newbie\_SAreaAF03" also contains a fog effect, visible across the whole map.*

*The "Newbie" and "NewbieInst" maps overlap and use the same numbering for their streaming levels.*