Post tutorial RSS Preparing your map for publishing and distribution

This is a tutorial for getting a custom UT3 level to appear in the menu

Posted by on - Intermediate Mapping/Technical

Tutorial originally created by DGUnreal on the UTForums. Mirrored here for archival purposes.

Preparing UT3 maps for publishing and distribution.

Updated 2008-05-16 2:41pm


These are direct links to additional posts in this thread for faster access.
Cooking for PS3
Stock Map Stats
FixupRedirects Commandlet


Be sure to update your copy of Unreal Tournament 3 to the latest patch.

1. bForceMipStreaming

The initial release version of UT3 has an issue with blurry StaticMeshes in user maps. Update your UT3 to Patch 2 to remove this issue.
You should not be selecting all of your map StaticMeshes and setting the bForceMipStreaming to True. Setting bForceMipStreaming to True on all of the map content may have a negative impact as that function forces all texture mips to be loaded when the level is loaded, bypassing the dynamic mip streaming. On systems with smaller texture memory pools the result may be running out of pool space.
People who are running the initial release version and are experiencing blurry textures should just set the Texture Quality to 5. On systems with video adapters as old as ATI X800's you should see no performance loss at a Texture Quality setting of 5.

2. Re-cook

UT3 Patch 2 fixes a number of issues with user created maps. Optionally, mappers may wish to re-cook and redistribute their previous map(s) after installing the patch update. The main issues this affects is texture mip streaming and terrain lightmaps.

3. Packages

Do not use additional external packages with your map.
Place all custom content into the Map file itself. To do this, specify the map file name as the package name, eg. "DM-Mymap". After the first build and save of your map, the map name package will then show up in the Generic Browser.Although you might want to put custom content into another individual package, you shouldn't since if that package goes missing the map will not play on other people's systems.For mappers who are creating a large amount of custom content for a totally custom map and wish to keep this separate from the map file, place the custom content into only one external package file and use the name "<mapname>_Content.upk". eg. "DM-Mymap_Content.upk".Moving assets between packages can create a lot of issues as it uses 'redirects'. So you can break your map if you do this haphazardly.

4. Shader Model 2

Video cards that only support up to Shader Model 2 will have issues running the editor and playing most maps. The ATI X1000, HD2000 and HD3000 series and NVidia 7000 and 8000 series should be fine.

5. Some of the map settings presented below are not implemented in UT3 at this time. They are included here simply to cover all bases should those features be implemented by Epic in the future.

6. After publishing a map multiple times you may not get a new .ini file on a new publish if you delete all of the map's files from the CookedPC\CustomMaps folder.
The content of an .ini file should be similar to this (replace DM-Mapname with your game type and map name, and the NumPlayers entry has been added here since it usually isn't created by default):

[DM-Mapname UTUIDataProvider_MapInfo]
NumPlayers=2 to 8 Players

Start Here

These sections are meant to be completed in the order as shown on this page. Do not skip down to other sections unless you are familiar with what you are doing. 1. Create your map. By default the map .ut3 file will be saved in the "My Documents\My Games\Unreal Tournament 3\UTGame\Unpublished\CookedPC\CustomMaps" folder. 2. Save often. An initial save of your map is required to have some of the automatic stuff happen within the editor. Be sure to name your map properly or you may run into various issues. This includes a valid game type prefix (CTF-, DM-, VCTF-, WAR-) and a valid map name. Map names should only be alphanumeric characters A-Z a-z 1-0 and - and _ with no spaces. 3. Always - always - always make backups of your map as you work. Do not rely on the AutoSave feature to always get you out of a problem.

Setting the Author and Title

1. Go to the View menu and choose World Properties. 2. In the WorldInfo group, set the "Author" property to your name or nick, set the "Title" property to the title of the map. The Title property here should be your full map title such as DM-MyMap and must be the same as what you enter into the MapName line in the .ini file. Note: These two properties are not used in the game interface at this time.

Setting the Game Type

1. Go to the View menu and choose World Properties. 2. In the WorldInfo group, set the "GameTypesSupportedOnThisMap" array to the desired game types. Note: This will usually set itself to the defaults for the DM game types.

Setting the Reverb

1. Place ReverbVolumes as required around your map. This gives the flexibility of setting room acoustics for each map area. If you plan on only having the one setting, you can modify the World properties for reverb.

Setting the PostProcessing

1. Place PostProcessVolumes as required around your map. This gives the flexibility of setting post processing for each map area. If you plan on only having the one setting, you can modify the World properties for post processing.

Setting the World KillZ

1. Go to the View menu and choose World Properties.

2. In the ZoneInfo group, set the "KillZ" property to just below the map total play area so that anything that falls out of the world accidentally will get removed right away. Note: the KillZ shows up as a red line in the editor that spans across the world in Front and Side views.

Adding the Music

1. Load the A_Music_Arrangements package found at "Unreal Tournament 3\UTGame\CookedPC\Sounds\A_Music_Arrangements.upk" . Each music arrangement object looks like a bubble texture.

2. Select the desired music arrangement for your map from the Tracks group. You can preview the music by playing the USound actors in the appropriate A_Music_* packages that will also load.

3. Go to the View menu and choose World Properties.

4. In the WorldInfo group, there should be a "UTMapInfo" or a "UTOnslaughtMapInfo" in the MyMapInfo array, this is usually automatically added when you save your map as a DM, WAR, etc. If not, add an item by clicking on the "v" button (small blue down arrow) and choose the Info type.

5. Open the MyMapInfo.UTMapInfo or UTOnslaughtMapInfo group, add the desired music arrangement object from the A_Music_Arrangements package to the "MapMusicInfo" property.

Do a full map Build

We are getting ready to publish, so everything in your map should be finished and ready to play. This includes lighting, bot support, etc. Click on the Build All button on the toolbar.

Do an initial Publish

This initial publish is just to get a copy of the map into the Published folder and to create the .ini file. You will still need to complete additional work on the original map in the Unpublished folder.

1. Click on the Publish button on the top right of the editor. A first run through will be done to create the additional required files for the map. Publishing will optimize the map for file size and load time. There should now be a <mapname>.ini and <mapname>_LOC_int.upk file in the "My Documents\My Games\Unreal Tournament 3\UTGame\Published\CookedPC\CustomMaps" folder. eg. DM-Mymap.ini and DM-Mymap_LOC_int.upk The .ini file contains information on your map, the _LOC file is a localization (region) file.

Adding the Screenshot Texture

In this section, be sure to always replace the text shown here in brackets with the actual text you will use, in other words, <mapname> means to use the actual name of your map, such as DM-Mymap.

1. Start UT3. Choose your map from the in-game menu. If it does not show up, make sure you Published the map before doing this.

2. Take a screenshot: - Set the game settings to World and Texture of 5 for best visual quality, select a resolution of at least 1024x768 or 1280x1024. - Set the Weapon Hand to Hidden in the Advanced options. - Type "showhud 0" at the console to hide the hud. - Type "ghost" at the console so you can go anywhere in the map. - Press F9 to take the screenshot. The file will be saved in "My Documents\My Games\Unreal Tournament 3\UTGame\Screenshots". - Load the screenshot in your paint software. - Adjust the brightness, contrast and intensity as desired. - Resample the screenshot to 512x256. - Save the screenshot to a .bmp or .tga file named as "map-pic-<mapname>.bmp" or "map-pic-<mapname>.tga" eg. "map-pic-dm-mymap.tga". Note that you can use an alternate name for the screenshot, such as MyScreenshot.bmp or whatever, the above is just following Epic's naming conventions. Note that you may have to edit the screenshot in photo software to raise the gamma or change the tone curve. Any near-black pixels between 0 and 32 may show as transparent in the game interface and allow the red interface background to show through, appearing as tiny red pixels all over the screenshot.

3. Import the screenshot into your map package. Do not use a separate package for this. - Start UnrealEd. - Open your unpublished map file. - Import the screenshot texture into your map, specify Package = <mapname> eg. "DM-Mymap", and Group = "MapPic", and Name = "map-pic-<mapname>" eg. "map-pic-dm-mymap". Note that you can use an alternate Group and Name, those specified above are just to maintain the same naming system as Epic's maps. - Set "CompressionNoAlpha" to True, set "CreateMaterial?" to True, set "Lighting Model" = MLM_Unlit, set "LODGroup" to TEXTUREGROUP_UI and set "RGB To Diffuse" to True. - After the texture is loaded, right-click on it in the Generic Browser and choose Texture Viewer and set the NeverStream property to True. - A new Material should be created in your map package's MapPic group. It will look like the default checkerboard texture in the Generic Browser. - Rename the material to "MAT_map-pic-<mapname>" (ie. put the MAT_ in front of the name) and right-click and edit the material, move the Texture Sample device so that the material has changed and click on the left green check button to Apply Changes. The material should now look totally black in the Generic Browser, this is because it is unlit. - Select a hidden CSG Surface somewhere in your map and apply the material. Alternately, add a simple unused StaticMesh and apply the Material to the StaticMesh Material override property. This retains a copy of the material and your screenshot texture in your map package, which would otherwise be flushed out on the next Save if it wasn't actually in use on some geometry. - Save your map.

4. Set up the ini file for the screenshot. - Edit the <mapname>.ini file that was created when you published the map. - Change the line:


to read


for example:


Basically, just replace the of the default screenshot (UI_FrontEnd_Art.GameTypes.DeathMatch) with your ( of your screenshot.
Of course use your actual map name and not "MyMap" as shown in these examples.

Note: the "<" and ">" must be surrounding the entire text string from <Images: to > with your text in between these.

5. If you have simply applied the screenshot Material to an already hidden CSG surface, then you can proceed to the next step. If you have modified the map to insert a StaticMesh or some other means of adding the screenshot Material, you may have to do a Build All first.

The MapName and FriendlyName

The MapName= line in the ini file will normally be the full name of your map such as DM-MyMap. This must be the same as what is in the map's WorldInfo.Title property or the map Description will not be displayed in-game.

The FriendlyName= line in the ini file is the map name used in the UT3 menus. This can be either the full map name such as DM-MyMap or it can be just the main name such as MyMap (without the game type prefix).

Specify the PlayerCount

1. Go to the View menu and choose World Properties.
2. In the MyMapInfo.UTMapInfo or UTOnslaughtMapInfo area, set the "RecommendedPlayersMin" and "RecommendedPlayersMax" properties. These are usually something like 8 min and 16 max but will vary depending on your map design.

Note: This method isn't implemented in the game menus at this time, so also do the following.

1. In the <mapname>.ini file add the following line "NumPlayers=<min> to <max> players".
eg. NumPlayers=2 to 16 players

Save your map.

Adding the Map Description

The map description is displayed when you pause (Esc) and choose the Map screen during a game.

1. Edit the <mapname>.ini file that was created when you published the map.
2. Change the line "Description=None" to the map description text eg. "Description=This is my l33t map!".

Note: The map WorldInfo.Title and the ini MapName= must both have the identical text, ie. DM-MyMap. If the text is different between these two, the map description will not display in the game.

Do the final Publish

1. Click on the Publish button on the top right of the editor. Publishing will optimize the map for file size and load time.

Distributing the Map

1. Create a Readme.txt file for your map that lists the map name, version, author, credits, and any comments you would like to share.
2. Create a few Screenshots of the map in .jpg format preferably between 640x480 and 1024x768 sized.
3. Zip up the Readme.txt, Screenshot .jpgs, and the .ut3 map file and its .ini and LOC_int.upk into a zip file of the map name.
4. Place it somewhere ready for download.
5. Downloaded .ut3 map files are to be copied to the "My Documents\My Games\Unreal Tournament 3\UTGame\Published\CookedPC\CustomMaps" folder in order to show up in the game menus. If this folder is not currently on your system, you can safely create it.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.