Directory Structure

Overview
The Unreal Engine 3 directory structure was designed to allow multiple games sharing the same code to coexist side by side.

The idea is to have one centralized code base to which additional game-specific modules can be appended. In addition to the code base, other things such as tools and documentation are often shared amongst the projects. For content, the base game engine sits along side any game-specific content.

In the past the main areas of conflict have been:
 * Localization files
 * Configuration files
 * Script files
 * Log files
 * Content (maps, packages) - Shared and Game-specific
 * Binaries - Shared and Game-specific
 * Game specific extensions (e.g. for maps) and protocols
 * Lots of hard coded names and assumptions in Unreal Engine 3

Binaries
All bit independent (managed code compiled as 'Any CPU') binaries are stored here with their associated pdb files. There are also forwarding executables for the games so commandlets can be run from this folder; they run the default native version.

ActorX
The dynamic link libraries used by ActorX to export from 3D content creation packages such as Max or Maya.

FaceFXPlugins
The plug in for FaceFX for 3D content creation packages such as Max or Maya.

GFx
Tools provided by ScaleForm to assist with Flash creation for Unreal Engine 3.

InstallData
Various files used to create an installable package with UnSetup reside here, such as EULA's, icons, etc.

IPhone
Various files used for iOS development in Unreal Engine 3.

Redist
Redistribution installers to ensure that all required packages are installed on the local machine.

SpeedTreeModeler
The Speed Tree content creation package which allows you create SpeedTrees for UDK.

SwarmCache
Cache used by Swarm when compiling maps.

Win32
All x86 binaries are stored here, with their associated pdb files. The debug versions are prefixed with Debug- and the shipping versions are prefixed with ShippingPC-.

Editor
The managed dynamic link libraries for Unreal Editor.

UserCode
The dynamic link libraries created by UDK developers which is able to be called from Unrealscript.

=== Win64 === All x64 binaries are stored here, with their associated pdb files. The debug versions are prefixed with Debug- and the shipping versions are prefixed with ShippingPC-.

Editor
The managed dynamic link libraries for Unreal Editor.

Windows
The tools dynamic link libraries that allows Windows to be used with ConsoleInterface (and hence UnrealFrontend and UnrealConsole) resides here with the latest version of UE3Redist.

Development
All non content-related development is centralized in the Development directory.

Intermediate
All temporary files used to compile executables (e.g. object files) are stored here.

Src
All source code is located in the Src directory. Contained within are directories that represent the modules that make up Unreal Engine 3, as well as examples of creating game-specific modules.

Game-specific directories (e.g. UTGame)
There will be one directory for each game project, including the base Engine. For each game project, including the base Engine, there will be one or more directories that contain elements specific to that project.

Autosaves
Unreal Editor auto saved maps, package back ups and PIE maps are saved here.

Build
Any game specific files required to compile or used by the build system (such as DVD layouts).

Config
Sharing a base set of settings (render and windowing settings, base "WASD" input, ...) and other engine settings that rarely need game specific tweaking is accommodated by having a set of root configuration files reside in the Engine\Config directory. These files, with the .ini extension, are BaseEngine.ini, BaseEditor.ini, BaseGame.ini and BaseInput.ini with configuration options split accordingly.

These base configuration files are referenced by the respective per game/mod default INIs like DefaultEngine.ini, DefaultEditor.ini, DefaultGame.ini and DefaultInput.ini. Each of these INI files reside in the game specific configuration directory - "GameName"Game\Config.

On initialization, the engine tries to locate "GameName"Game\Config\"GameName"*.ini for Engine, Editor, Game and Input inis and will create a new version of the respective files based on the defaults contain in Default*.ini file's Configuration.BasedOn field, recursively searching until a root ini has been found. Upon finding the INI file, it then merge settings bottom up.

The engine has special support for merging ini files by treating lines starting with `+' or `-` differently. The default action is to replace existing keys, `+' tells the engine to append which is useful for expanding TArrays and `-` will remove a key/value pair defined in the base ini.

Content
The engine has a set of known file extensions (Core.System.Extensions, by default "u" and "upk") to satisfy resource dependencies. It recursively searches the configured paths (Core.System.Paths) defaulting to "Engine\Content" folder.

Flash
Flash development files reside here for easy importing.

Localization
The engine looks for localized text files in a configurable selection of paths (Core.System.LocalizationPaths, defaulting to "Engine\Localization"). When localizing a resource, it first looks in the currently configured language localization file. If it fails to find a localized version of that resource, it then looks for an entry in the international localization file.

Logs
Log files are created by looking at the current executable's base name (that is the executable name without the potential "DEBUG-" prefix) and prefixing it with "GameName"Game\Logs.

Movies
Encoded movies (e.g. with Bink) reside here. They are separated out of content as they can be large.

ScreenShots
All screen shots that are taken in Unreal Editor or Unreal Engine are stored here.

Script
Like regular packages, script files have the ability to reside in any subdirectory of directories configured in the Core.System.Paths array. For editing simplicity, the script compiler requires all files built in a single pass to reside in the directory specified by EditPackagesOutPath and looks at the EditPackages array for packages to compile with source found in the EditPackagesInPath folder (all in Editor.EditorEngine section).

ScriptFinalRelease
Script packages compiled with the -final_release option

Splash
All splash screen images are stored here.

Configuration file examples
Snippets from BaseEngine.ini (Engine) [URL] Protocol=unreal Name=Player Map=Index.ue3 LocalMap=Entry.upk MapExt=ue3 [Core.System] Paths=..\Engine\Content LocalizationPaths=..\Engine\Localization Extensions=upk Extensions=ue3 Extensions=u [Editor.EditorEngine] AutoSaveDir=..\Engine\Content\Maps\Autosaves EditPackagesInPath=..\Development\Src EditPackages=Core EditPackages=Engine EditPackages=Editor EditPackages=UnrealEd EditPackages=SequenceObjects EditPackages=GamePlay EditPackages=WarfareGame EditPackages=SampleNativePackage [D3DDrv.D3DRenderDevice] ShaderPath=..\Engine\Shaders

Snippets from DefaultEngine.ini (ExampleGame)

[Configuration] BasedOn=..\Engine\Config\BaseEngine.ini [Core.System] +Paths=..\ExampleGame\Content +Paths=..\ExampleGame\Script +LocalizationPaths=..\ExampleGame\Localization [Editor.EditorEngine] EditPackagesOutPath=..\ExampleGame\Script AutoSaveDir=..\ExampleGame\Content\Maps\Autosaves

Source
Directory layout