Unreal Tournaments data organization structure is very different from most other game engines. Whereas in most, all the files are compressed together, in the Unreal Engine, they are compressed seperately. This tutorial aims to explain the Unreal Tournament directory structure in a bit more detail for you.
[page=Where Everything Goes]
Here's the basic directory structure for Unreal Tournament:
Now, lets explain what all these folders are for. Some may be obvious to you, same may not, so I'll explain them all.
This folder is for storing packages that have been downloaded from Unreal Tournament online game servers so you could play. These files are deleted when not used for a period of around 30 days. If a mod is downloaded from a server, you will be unable to play it offline since the file which tells UT that the mod exists, does to exist itself. No specific file types are associated with this folder.
This is the default location for ReadMe's and Guides for most mods, and also holds the startup images for when you load Unreal Tournament. It is good practice to put all your help files in here. No specific file types are associated with this folder.
This folder is an archive of all old engine logs. The log from the last game you have played is normally stored in the \System folder and is called UnrealTournament.log. No specific files types are associated with this folder.
Obviously, the Maps folder stores all the maps that UT has, and also any ones that you have downloaded should be installed into this folder. UT maps also have a naming definition that is required for the map to show in the in-game listing. The naming conventions go as follows:
- DM-NameHere - Used for Deathmatch, Team Deathmatch, and Last Man Standing.
- DOM-NameHere - Used for Domination.
- CTF-NameHere - Used for Capture the Flag.
- AS-NameHere - Used for Assault.
All map files have the file type convention of *.unr. Maps are created with the UnrealEditor.
All music tracks are held here. Music files can be of any name, and have the file type convention of *.umx. Music files are first made in a tracker program and saved to *.it before they are imported into *.umx files through the UnrealEditor.
The save folder is not normally present in UnrealTournament, but the save features of the engine can be utilized by your mod, so I have included this here anyway. Save games have the prefix *.usa (Coincidence?). I will not go into detail of how you create the save game files in game code, that is the job of a coding tutorial.
Here we start to get to the complex packages. Sound packages consist of groups of sounds that can be used for a variety of purposes. These include menu sounds, annoucers, ambient map effects, and weapon sounds. Sounds are 44Khz, 8 or 16bit Mono *.wav files before they are imported into *.uax packages through the Unreal Editor. The package will normally have many sounds, and they will be grouped.
The core of the engine, the System folder contains all game and engine code. All the engine code is stored in Dynamic Link Libraries (*.dll files), the game loader is of course a *.exe file, config files are *.ini files and can be created and used by any mod wether it is a mutator or total conversion, *.int files are files that can notify game code that something exists, they are used by mutators to inform UT that the mutator exists and so they are listed in the menu, *.log files are logs from the last game played, and finally, the most important package type for modders is the *.u package. *.u packages hold all game code. No game specific code is coded in C++. It is all coded in Unrealscript, a language for specific use of the Unreal Engine. These *.u files can also import sounds (*.wav), textures(*.pcx or *.bmp), and models (*.3d, also optionally a *.psk file for skeletal animation)(Only *.u files can have models). *.u files are compiled Unrealscript code and are generated through UCC.exe or the UnrealEditor.
Texture packages hold textures for map walls, skins for 3D models, and graphics for the Heads Up Display and menus. Textures are first *.pcx files (Indexed 256 colours), or *.bmp files. Their size must be divisable by 2. So a graphics which are the sizes 512*512, 256*256, 256*128, 32*256, are all valid sizes. 10*10, 200*200, are not valid though and will not import correctly. Texture packages normally contain a variety of textures which will be grouped according to their use in the game enviroment. Texture packages have the *.utx file name convention, and are created in the UnrealEditor.
[page=Your own Directory Structure]
If you are creating a Total Conversion, chances are you will want to organize your own directory structure, having all your textures, sounds and code in their own folders. This is possible. Also, with TC's you can have your own executable. Here are the steps to do this.
1) Creating the exe and INI files
To create the exe and INI file, copy the UnrealTournament.exe and the UnrealTournament.ini files and rename them to a name suiting your mod, in this example I will use MyMod. So now I have MyMod.exe and MyMod.ini.
2) Creating folders
In the UnrealTournament folder, create a new folder for your mod. For me, this will be MyMod. So now the directory structure will be like:
With the other folders of course. Now open up the folder you just created. Create new folders for the packages your mod includes. Your folder will now be something like this:
You can now put all the packages you have created in to their corrisponding folders.
3) Editting the INI file
Open the INI file you created previously with NotePad or any text editor. Look for
Looking down under that you will see:
PurgeCacheDays=30 SavePath=..\Save CachePath=../Cache CacheExt=.uxx Suppress=DevLoad Suppress=DevSave Suppress=DevNetTraffic Suppress=DevGarbage Suppress=DevKill Suppress=DevReplace Suppress=DevSound Suppress=DevCompile Suppress=DevBind Suppress=DevBsp Paths=../System/*.u Paths=../Maps/*.unr Paths=../Textures/*.utx Paths=../Sounds/*.uax Paths=../Music/*.umx
Now add the new paths. You musn't remove the current paths, because;
a) You will have less resources to work with.
b) You need some of the code in the current *.u packages.
After editting, it should now look like this:
PurgeCacheDays=30 SavePath=..\Save CachePath=../Cache CacheExt=.uxx Suppress=DevLoad Suppress=DevSave Suppress=DevNetTraffic Suppress=DevGarbage Suppress=DevKill Suppress=DevReplace Suppress=DevSound Suppress=DevCompile Suppress=DevBind Suppress=DevBsp Paths=../System/*.u Paths=../Maps/*.unr Paths=../Textures/*.utx Paths=../Sounds/*.uax Paths=../Music/*.umx Paths=../MyMod/Maps/*.unr Paths=../MyMod/Sounds/*.uax Paths=../MyMod/System/*.u Paths=../MyMod/Textures/*.utx
It is also possible to organize your maps by editting the UnrealTournament.ini file using this method.
I hope you learned something from this tutorial, and I will return in the future to make some new tutorials in the coding area. If there is anything that needs correcting, please inform me via a Private Message. Also, please note that this system has changed significantly for Unreal Tournament 2004 mods, since Epic Games wrote some new code for mods. You can view their document on the UT2004 system here. This article is stricly for Unreal Tournament and all Unreal Engine 1.0 based games.