Directory Structure

This is a small writeup to get one somewhat familiar with the directory layout of Epic's Unreal Development Kit.

Video Version

Subject: UDK Directory Layout
Skill Level: Beginner
Run-Time: 30Min
Author: Michael Allar
Notes: This is really incredibly long and goes into more detail than it should.

Streaming:     720x480 1920x1080

Download:     Low-Res (25MB) Hi-Res (84MB)

Written Version

Subject: UDK Directory Layout
Skill Level: Beginner
Author: Michael Allar
Notes: Brief introduction to the UDK Directory Layout

If you haven't already, you need to install a fresh copy of Epic's Unreal Development Kit (UDK). Without it, you can't really build anything. :D

After you install the UDK to a directory of your choosing, you will end up with these four directories:

  • Binaries
  • Development
  • Engine
  • UTGame

Binaries

The Binaries folder of the UDK houses all of Epic's pre-compiled applications, libraries, and generally everything we will not have access to changing in the UDK. One file you will use quite often in here is Unreal_Frontend.exe, as this front-end application allows you to run your game client, server, and editor while also giving you the ability to compile your code or cook your packages without messing with dirty command-line operations or the hassle of having many shortcuts on your desktop for different purposes. The Binaries folder also comes with some 3rd party tools such as the SpeedTree Modeler along with FaceFX plugins for various 3d packages. This folder should generally never be modified in any way.

Development

The Development folder is where all of the 'technical scripty magic stuff' happens. Inside the root Development folder lies the Src folder, which houses all of your UnrealScript source files organized by script package name. Within Src you will find a number of folders, but you should not change the contents of any of them directly except for MyMod or any other folder which you will create yourself. The most notable folders here are the UTGame and UTGameContent folders, which contain all of the code used to create Epic's Unreal Tournament 3 Demo. Lots of the code in these folders will serve as a solid base of which you will derive new and improved classes from, however if you would like to derive from a class not used in UT3, you may want to check out the GameFramework folder. GameFramework contains base classes to get a game up-and-running without all of that UT3 madness getting in your way. All script files should be placed in a Classes folder within their package name folder, i.e. MyMod classes should be placed in MyModClasses.

Engine

The Engine folder, read as "Do Not Touch". The Engine folder contains all of the assets used by Unreal Engine 3 including some configuration and localization files. By modifying these files you may or may not break your project in many ways. Once again, simply do not touch.

UTGame

The UTGame folder is where all of your game's custom assets will be housed along with configuration, localization, compiled scripts, movies, and cooked content. Basically, whatever that you create that is not UnrealScript goes here. Within this folder, the most important folders are the Config, Content, and Localization folders.

  • Config - Houses all of your games config files. Within this folder, you should see two sets of .ini files: Default and UT files. The Default config files serve as the standard settings for your game and will be used to generate the UT config files which will be accessible to the end-user when they install your game. When you change a config file, you should generally change the Default file and delete the UT file so that your changes will always be made and a new UT file will be generated. If you only change your UT files, if your UT file ever gets overwritten or erased, you will lose all of the custom changes you preformed to your .ini in the past. UT .ini files serve as a means to modify settings based on the Defaults so power users can tweak your game after distribution, not to config your game for standard use.
  • Content - Houses all your content packages. If you have not removed the UT3 assets from this folder, you will see a bunch of folders named Characters, CTF_Flags, Effects, etc. that contain a series of .upk files within them. .upk files are Unreal PacKages and can contain all kinds of assets ranging from AnimTrees to SpeedTrees to PhysicsAssets for SkeletalMeshes. The folder structure in Content reflects how your packages will be displayed in the Content Browser of Unreal's Editor, but no directory structure is needed here at all. Directory structure within the Content folder is purely a means to be organized and nothing more. Also, you can never have two packages of the same name even if they are in two different directories, as Unreal ignores file paths and file extensions when loading assets because it is only interested in the package name itself. In here you will also find GlobalShaderCaches, RefShaderCaches, and sometimes LocalShaderCaches. These shader caches contain all the shaders compiled for your materials in your assets, and always have to exist for your game to appropriately assign correct materials to different instances. If you delete these files, it will take a -long- time to rebuild them.
  • Localization - Houses all your DataStore data. Within the Localization folder, there is a sub-folder named INT (meaning International, or English). Inside this folder are .INT (same as the folder name) files that contain lots of strings and things in English for our game to use. We will get into more of this later, but if you wanted to allow for French in your game, you would create a FRA folder in Localization and set up all your French strings and things there.