UDN
Search public documentation:

DirectoryLayout
日本語訳
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 Home > Unreal Engine 3 Basics > Directory layout
UE3 Home > Input / Output > Directory layout

Directory layout


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.

Additional Considerations


Useful information

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
  

See the Configuration Files page for more information.