A quick tutorial on how to make your own skins for Unreal Tournament 3

What is a Skin?

A Skin changes the texture of a model. So if you want generic Anime character no.24569 in UT3 you have the wrong tutorial. Letīs say you want to make Clanskins and/or personal Skins then this tutorial is for you. You can make completely new characters based on the original models Epic delivered with the game.With the new character editor itīs even possible to mixmatch different bodyparts and reskin them...Reapers head on a Necris body for example.Not all bodyparts work together since some factions use different skeletons resulting in wrong placement or freaky rigging ingame but the ones that do work offer a lot of varity.

What youīll need:

How to start:

What weīre going to do now is prepare the model for skinning. To do that we need to "copy" a standard character. Open Unreal Editor, go to the Generic Browser and open a character package. Youīll have to go back to the UT3 installation folder.

Example: C:\My Games\Unreal Tournament 3\UTGame\CookedPC\Characters\

There should be a lot of .upk files...we only need the ones named like this:

These are the packages the meshes, textures and materials are stored in.

Letīs say we want to reskin Othello from the Ronin Faction.
Open CH_RTeam_Male.upk
Now scroll down in the tab at the right of the screen and select the package (itīs name should now be black not gray)

Now we need to "uncook" the package so we can start copying stuff.
Just look for the last tab named "Log" and click it.

Now copy and paste this into the textwindow at the bottom:
obj savepackage file=[filename] package=[package_to_save]

You can change [filename] to whatever you want...itīs just a temporary file.
[package_to_save] should be replaced with the name of the package you want to copy from.

In our case it would look like this:
obj savepackage file=temporaryfile package=CH_RTeam_Male

This will take a few seconds so donīt panic.

After weīve done this we have "unlocked" the original file (itīs a good idea to set the original .upk to "read only" so you donīt accidentally mess it up).
By right clicking we now have acess to "duplicate" and "rename" which is exactly what we wanted.

Preparing the package:

Now that we "uncooked" the Ronin package itīs time to create our own, for storing all files needed for our character.

Simply click File/New and a window should pop up:

Package: The name of our Package (CH_TutorialChar_Male)
Group: A group inside of our package. This is used to keep the package tidy.
Name: The name of the file we create with "Factory". Just use "temp" or something...this will be deleted later.
Factory: The kind of file we create in our new package.Every package needs to have at least one file in it or itīs getting deleted. Choose Material for starters.

You have created an empty package.
It shouldīve appeared in the list of selectable packages by now.
Save it to C:\Documents and Settings\...\My Documents\My Games\Unreal Tournament 3\UTGame\Published\CookedPC\CustomChars\
If the folder doesnīt exist, create it.

Donīt forget to save your package regularly in case Unreal Editor decides to shutdown unexpected...this can happen sometimes when duplicating files.

Copying the files:

What we need to do now is copy the character.

A character is consists of these three things:

It works like this:

Textures->Materials->Meshes

A texture is used by a material.
A material is used by a mesh.

Select the package you want to copy from again, if you click on the little + in front of the name you can see the groups of the package.
Mesh contains all bodyparts of the male Ronin faction.
Materials contains all shaders (Materials) and textures.

Start with the meshes.

You can now decide what bodyparts your character should use.
Keep in mind that youīll need a complete body:

Letīs select Othelloīs head.
Simply right click on the mesh and choose "duplicate".
Now the same window like we had when we created our new package should appear.
Just insert the name of your package into the first textfield and the mesh will be copied to your package.
Itīs wise to rename the mesh, so you donīt mix it up with the original head.

After you copied all bodyparts go back to your own package and click on meshes.
You should check the names for spelling errors and see if you got everything you wanted.

After that we copy the materials.
What we need is the shader for the body (in our case MI_CH_RTeam_MBody02_V01) and the head (MI_CH_RTeam_MHead02_V01).
V01 marks that this is the material used for deathmatch.
VBlue and VRed are marking teamcolors.
If you want your skin to have teamcolors duplicate those materials too (otherwise the V01 texture will be used in teammatches, the only thing indicating which team youīre on will be the color of your glowing bits in that case).
Rename the materials when duplicating so you donīt mix them up.

Example:

CH_TutorialChar_body_V01
CH_TutorialChar_body_VBlue
CH_TutorialChar_body_VRed
CH_TutorialChar_head

In this case only our body has teamcolors.
If you want your head to use teamcolors, duplicate the corresponding materials.

Everything in front of _V01 can be changed to whatever name you like, but _V01 is important.
Otherwise the engine will not know which materials to use for teamcolors.

Itīs time to add the textures.

So what we need to do is screengrab the textures and put them together in your image software.
As far as I know there is no way around this.
When you try to duplicate the Textures Unreal Editor will chrash.
When you try to export the textures to .tga nothing will happen.

I suggest you set the View to 50% depending on your screen resolution.
The original textures have sizes up to 2048x2048 pixels but you donīt need that because it wonīt make any visible difference ingame.

1024x1024 for the body and head should be enough.

Look for the "Print" button on your keyboard. It will make a Screenshot of everything that is on your screen.
Now paste it into the image software of your choice and start cutting out and puzzling together the parts.
Itīs important that you keep the maps 1024x1024 or 512x512 otherwise you wonīt be able to import it later on.
I have included two prefabs you can use for that...just make sure the edges line up.
Of course you could grab the complete 2048x2048 texture...but this would require at least four screenshots and it will add a lot to the size of your package.

You can check the materials used on the meshes you just copied.

When doubleclicking a mesh you can look for the name of the material used by selecting the mesh tab and clicking Materials.
The materials in the standard packages are named similar to their textures.

It could be hidden depending on your screen resolution so try sliding it around a bit in case you canīt read the text.
This is the most annoying part but itīs not impossible so keep going.

Most of the time different meshes use the same texturesheet so that makes it a bit easier (usually a character per texturesheet, so Reapers bodyparts for example should all be on MI_CH_TwinSouls_MBody03_V01, while Othelloīs parts are on MI_CH_TwinSouls_MBody02_V01.
Keep in mind that if you want to change the normal-, specular-, or Emissivemaps youīll need to screencap those too.
You can see what kind of texture youīve selected by checking the filename:

Diffusemap - D01 - The main texture
Normalmap - N01 - Simulates higher details (you shouldnīt mess with this unless you know what youīre doing).
Specularitymap - S01 - Tells the engine how shiny the texture should be in certain areas (bright=more shiny, dark=less shiny), these can also be colored.
Emissivemap - E01 - Tells the engine what parts of a skin should glow (white=glow, black=no glow), The color of the light can be changed in the preferences of the material.

The diffusemap of Othelloīs body texture is named "T_CH_RTeam_MBody02_D01_V01_SK1" with D01 marking that youīre looking at the diffusemap.

In case you want to have teamskins the textures need to be named in a certain way.

Example:

CH_TutorialChar_body_D01_V01_SK1 for our diffusemap.
CH_TutorialChar_body_S01_V01_SK1 for our specularitymap.
CH_TutorialChar_body_D01_VBlue_SK1 for our blue team diffusemap.
CH_TutorialChar_body_S01_VBlue_SK1 for our blue team specularitymap (thatīs if you want to use another specmap, you can also use the standard one if you want).
CH_TutorialChar_body_D01_VRed_SK1 for our red team diffusemap.
CH_TutorialChar_body_S01_VRed_SK1 for our red team specularitymap

Again the name in front of _D01_V01_SK1 can be anything you want.

Skinning your meshes and importing your textures:

Everything is finally set up and now we can start the actual skinning.

After youīve extracted the textures, you need for the meshes you want to skin, you can start painting the textures in your image software..
When youīre done youīll need to save them as 24bit Targa (.tga) files so you can import them back into Unreal Editor.

Just click File/Import and youīll get a window that looks similiar to the one we get when we made our package.
You need to scroll down in the lower window and look for LODGroup.
Set it to TEXTUREGROUP_Character.
This is so the engine knows how to render the level of detail ingame.
While specularmaps and normalmaps have their own lodgroups they tend to get kind of blurry when using smaller maps, so I suggest you use TEXTUREGROUP_Character for every kind of texture.

In our case we used only standard Othello parts (excluding shoulderpads) so we should have two materials (for the head and the bodyparts).
Make that four or six depending on your teamcolors.

Setting up your materials and connecting them to your meshes:

We now tell the material to use our textures instead of the standard ones.
Double click on a material to go to itīs preferences.

Look for TextureParameterValues

This is pretty self explanatory.
Just select the texture you want to assign in the generic browser and click on the green arrow.
The Material should look like your texture now.

Now we connect the materials to the meshes in a similiar way we connected the textures to the materials.
Doubleclick a mesh and a window should pop up in which you can view your mesh.
Look for a tab called Mesh.

Just select your material and click on the green arrow.
The mesh should now sport your texture.

Since the lighting is a bit weird sometimes I prefer to rotate the mesh towards the lightsource.
Just click on RotOrigin and set "Jaw" from -90 to 45.
Donīt forget to change it back when youīre done or your character will face the wrong direction ingame.

You can show up to 4 meshes at the same time in the viewer by selecting Extra Mesh 1 - 3.
This makes skinning a bit easier, however at least one bodypart will always be missing.

Make a snappy screenshot in the viewer for a ingame portrait ( 512x512 texture ) and import it into your package.
This doesnīt need to be connected to a material because itīs just used for the character selection.

Sometimes your character can look kind of blurry, this is normal in Unreal Editor.
All you have to do is reimport your textures.

I kept the original normalmap of Othelloīs body and just did a quick recolor on the diffuse.
The head is a hackjob from a pic I found on the internet with a bit of photoshop magic...Since I reskinned the head completly I had to make a new normalmap and specmap to enhance the details of my new texture.
Usually we would generate a normal map from a highpolymodel, but since we donīt have any access to the meshes this is impossible.
A normalmap generated from an Image wonīt look as good as one generated from a highpolymesh but with a bit of work it will do.

If you have Adobe Photoshop you can use the Nvidia Normalmap filter ( nvidia Photoshop/Paint Shop Pro plugin ) it does an ok job and itīs free.
You can enhance the normal map a bit by cranking up the contrast and paintaing in some stronger shadows and highlights, giving the final normalmap more volume.
However, I recommend Crazybump ( crazybump.com ) there should be a free trialversion to download on the site.
You just load in your diffuse and let it work itīs magic.

You can use a normalmap, but you donīt have to.
If you decide your skin looks good the way it is just uncheck the "Char_Normal" box in the preferences of the material.

Save your package and thank whoever youīre worshipping because weīre almost done.

Making the character work ingame (aka coding):

Quoted from the Epic Games Forums:
First, create a new directory inside \My Documents\My Games\Unreal Tournament 3\UTGame\Published\CookedPC\CustomChars\. The directory name can be anything you want. Inside this directory, add a new file named UTCustomChar.ini. In this file, any .ini data you add will be merged into the UTCustomChar.ini in the Config directory. The format is the same as Default*.ini files, which means to add entries to an array you need to prefix them with '+'.

This is the current content of our .ini file:


[UTGame.UTCustomChar_Data]
+Parts=(Part=PART_Head,ObjectName="CH_TutorialChar.Mesh.CH_TutorialChar_head",PartID="TutA",FamilyID="TWIM")

+Parts=(Part=PART_Torso,ObjectName="CH_TutorialChar.Mesh.CH_TutorialChar_Torso",PartID="TutB",FamilyID="TWIM")

+Parts=(Part=PART_Arms,ObjectName="CH_TutorialChar.Mesh.CH_TutorialChar_Arms",PartID="TutC",FamilyID="TWIM")

+Parts=(Part=PART_Thighs,ObjectName="CH_TutorialChar.Mesh.CH_TutorialChar_Thighs",PartID="TutD",FamilyID="TWIM")

+Parts=(Part=PART_Boots,ObjectName="CH_TutorialChar.Mesh.CH_TutorialChar_Boots",PartID="TutE",FamilyID="TWIM")

Characters=(CharName="Faustus",Description="<Strings:Tutorialchar.CharLocData.Tut_Description>",CharID="TutorialChar"
,Faction="TwinSouls",PreviewImageMarkup="<Images:CH_TutorialChar.Materials.UI_Portrait_Character_TutorialChar_male>"
,CharData=(FamilyID="TWIM",HeadID="TutA",TorsoID="TutB",ShoPadID="B",bHasLeftShoPad=false,bHasRightShoPad=false,ArmsID="TutC"
,ThighsID="TutD",BootsID="TutE"),AIData=(Aggressiveness=0.6,CombatStyle=0.3,Tactics=0.3,FavoriteWeapon="UTGame.UTWeap_Stinger"))




Hereīs a template for adding your own lines:
+Parts=(Part=PART_[Insert bodypart here],ObjectName="[Insert package name here].Mesh.[Insert your bodypart name here]",PartID="[Insert unique name here]",FamilyID="[Insert faction here]")

The "Characters" part is pretty much the code you need to add if you want to define your characters bot.
Itīs also used to set up a description and your character portrait.

You can check the original UTCustomChar.ini for bodypart names like goggles, helmets etc. and faction names.
It can be found in C:\Documents and Settings\...\My Documents\My Games\Unreal Tournament 3\UTGame\Config\

Custom factions are not possible with the current UT3 Version but Epic promised to deliver that with the next patch.
This all may look a bit confusing right now but itīs actually not that hard if you know what youīre doing.

Itīs important to check every line for typoīs or the model could be missing some parts.

If you want to add a description for the character selection just add a folder named localization to
C:\Documents and Settings\...\My Documents\My Games\Unreal Tournament 3\UTGame\
And in that folder you create another one named INT
So this is what it should look like in the end:
C:\Documents and Settings\...\My Documents\My Games\Unreal Tournament 3\UTGame\Localization\INT\

This is where we will create our .int file
The .int file tells the game what to write in our description.
Just open notepad and copy the following:

[CharLocData]
Tut_Description="Thanks for downloading my tutorial. Have fun skinning!"

"Tut_Description" can be anything.
This name is merely used in the "Characters" part of our .ini file so the game loads the correct description ingame.

All that is left to do now is delete the temporary file we created in the beginning, so it canīt cause any trouble.
It should be located in your UT3 Installation folder, in Binaries.
C:\My Games\Unreal Tournament 3\Binaries\

And youīre done.

Thank you for downloading my tutorial, have fun skinning!
For further questions I suggest the Skin City Forums
(http://forums.beyondunreal.com/forumdisplay.php?f=421) or Epic Games Forums (http://utforums.epicgames.com/forumdisplay.php?f=351)

Jochen "Slaughter" Bremer (Slaughterbremer@web.de)

Download files for this tutorial

This document as .doc format with skin textures/files used in this tutorial.
The finished character in this tutorial ready to use.