Search public documentation:
Level Editing is the process of designing and building the environments in which the game will take place. This process can span a broad range of disciplines and involve a whole team of people. Level designers are typically the people in charge of the level creation process, though there may also be scripters, lighters, etc. who work on the levels at different points during the design process. At its most basic level, creating levels boils down to placing items in a map inside Unreal Editor. These items may be world geometry, decorations in the form of BSP brushes, static meshes, lights, player starts, weapons, or vehicles. Which items are added when is usually defined by the particular workflow used by the level design team. For a more detailed walkthrough of creating levels in Unreal Engine 3, visit the Creating Levels page.
Defining and adhering to a solid workflow for creating levels will both keep development time to a minimum and make iteration much easier. A standard workflow for developing a level might go something like:
- Block out and path level
- Playtest flow and gameplay
- Modify layout and repeat testing
- Initial meshing pass
- Initial lighting pass
- Playtest for collision and performance issues
- Polish pass
Unreal Editor (UnrealEd) is the editing suite for Unreal Engine 3. It contains the main level editor as well as a variety of browsers, tools, and editors that are all used for different aspects of the level editing and content creation process. The level editor is contained in the main window of the application and is where maps are created by placing items in the world by way of the viewport(s). For more information on the UnrealEd interface, including all of the browsers, tools, and editors, see the UnrealEd User Guide.
The main structures in a level as well as the decorations can all be considered world geometry, refers to static, visible geometry in the level. World geometry will make up the majority of most levels as it is the main visible component of an environment. There are two types of Actors that are used to create world geometry: BSP Brushes and Static meshes. BSP BSP brushes, or more accurately constructive solid geometry (CSG), are the most basic building blocks in Unreal Engine 3. They are used to carve out or fill in volumes of space in the world. These used to be the primary method of creating world geometry in previous versions of the engine, but have been replaced by more specialized and efficient types of geometry, namely Static Meshes. BSP brushes are mainly used for blocking out levels in the early stages as they can quickly and easily be created and edited directly in the editor, allowing for easy iteration. For more information on creating and using BSP brushes, see the Using BSP Brushes page. Static Meshes A Static Mesh is a set of polygons that is drawn by the hardware of your graphics card. They are much faster, can handle many more polygons, are invulnerable to BSP holes and look better than BSP brushes. Static Meshes get their name since they are drawn as meshes that never change, so they can be cached in the video memory which leads to better efficiency and performance.
In Unreal Engine 3, there are two basic kinds of lighting: static and dynamic. Static lighting is baked into lightmaps making it very efficient performance-wise, however, lightmaps do take up memory - the higher quality the lighting, the larger the lightmaps will be. Dynamic lighting is calculated in realtime making it much more performance intensive but with a lower memory footprint since it doesn't require prebaked lightmaps. The kind of lighting you choose may vary based on the requirements of your project. Light actors are placed in the world to illuminate the environment and characters. There are several different types of lights provided in Unreal Engine 3: point light, spot light, directional light and sky light. Each of these types of lights has a common set of properties along with their own unique attributes, thus allowing for extremely flexible lighting setups. There are also several different types of shadows supported by Unreal Engine 3. These are:
- Shadow Volumes - The most general solution, these are hard-edged but fully dynamic and 100% accurate. Shadow volumes are disabled by default on consoles because they use a large amount of memory and can be extremely slow to render.
- Shadow Buffers - Also dynamic, but with nice soft edges, these are used for shadowing characters and dynamic geometry.
- Precomputed Shadows - Static lights illuminating static geometry, these affect both BSP and static meshes and can be saved out as shadow maps.
Kismet is a visual system for creating complex scripted level events and interactions within Unreal Engine 3. It works by allowing you to connect simple functional Sequence Objects together to form complex sequences. Each sequence object is a self-contained black box which performs a single purpose. The types of sequence objects available are:
- Actions - These are objects which perform some action on the Actors in your level.
- Conditions - These do not actually affect the level, but the control flow of your sequence. They make decisions on which output to fire depending on some condition.
- Events - These are objects which create an 'input' to your sequence, possibly from an Actor in the game. A common example is the Level Loaded event which fires when the level begins.
- Variables - These objects simply store information of a particular type for use by an Event, Action or Condition.
Matinee is a tool for performing animation on objects within the level by modifying the values of their properties over time. It uses keyframes and animation curves allowing a great deal of control over just how the values change over time. Each Matinee sequence can contain any number of groups which are associated with a specific Actor or group of Actors in the level. Each group can contain any number of tracks which act on various types of properties. It is very similar to a non-linear editing application commonly used in video editing. A common use of Matinee is to create moving Actors, such as lifts or doors. A special type of Actor called an InterpActor is used for these types of elements. An InterpActor is very much like a regular StaticMeshActor, but they can move and be animated with matinee. For an overview of using the Matinee tool, see the Matinee User Guide. Cinematic Sequences Matinee can also be used to create cinematic sequences either to be played during the game in realtime or to be rendered out and used as movies in-game or for promotional purposes. For details over creating cinematic sequences with the Matinee tool, see the Creating Cinematics page.
Level Streaming is a special system in Unreal Engine 3 that enables levels to be loaded and unloaded on-the-fly asynchronously during play. This makes it possible to have extremely large environments broken up into smaller sections (streaming levels) which can be loaded into a parent map (persistent map) only when they are needed, keeping them from taking up memory and from being included in occlusion queries and lighting calculations. For information on how to use level streaming, see the Level Streaming page.
Optimizing levels in order to squeeze every ounce of performance is an important skill for any level designer. The most beautiful level with amazing gameplay cannot be enjoyed if it is running at 10 fps. Profiling and optimizing requires looking for problem areas and avoiding well-known performance hogs. General guidelines and tips on things to look for when optimizing your levels can be found in the Level Profiling and Optimization section. See OptimizingLevelsForRendering and OptimizingForSplitscreen for guidelines on rendering related optimizations.