Elite Force Skin Tutorial

version 1.73
Last Updated: April 12, 2010
Tutorial created by neural-link
Special thanks to other skinners & modders on the old Raven forums (notably Kirk1701 and ToonLoon)

Tutorial Sections

This is a huge tutorial, but some of the sections you might be able to skip if you are not doing anything really advanced (such as editing the head, legs, or torso models or animation).


Tools

  • Graphics Program
  • Model Viewer
    • md3View (the EF GDK 1.2 comes with one that can view md3 and mdr files)
  • Zip Program
    • WinZip, Pakscape (for extracting and creating pk3 files)
      If you are on Windows ME/2000/XP or newer you won't need this since pk3 files are just zip files renamed
  • LithUnwrap 1.3 (last free version of LithUnwrap. It lets you create a UV Map of the 3D model so you can see where you are painting)
  • Text editor
    • Notepad++, Notepad, etc.
      Be sure NOT to use anything that puts formatting into the file such as Word, WordPad or Works

Optional Tools


PK3 File Structure

pk3 files are located in your located inside your Elite Force folder, the default location is
c:\Program Files\Raven\Star Trek Voyager Elite Force\BaseEF
It is helpful to a extract (unzip) a pk3 file (pk3 files are zip files renamed with pk3 for the extension). If you browse through the models\players2\ folder you can get an idea about how pk3 files are made.

pk3 file structure
This is how a pk3 file with 1 character will look. NOTE: a skin without bot, teamcolor, or sound support only needs the models folder, more on that later.

pk3 file structure
A pk3 file with several characters.

head skin face skin
View the models\players2\skinname folder, in it you will see several types of files, look for a file named head (make sure its a jpg or tga) or head_default or something similar, this is the skin for the head. There are normally 2 skins for every head model, the other skin is usually named face or something similar. Open these in your graphics program.

wireframe headhead skin appliedface skin applied
As you can see these files may not look like you would expect. Different regions of the image file (skin) are associated with different areas of the model.

TIP: You can use a picture of a person and modify it to fit the model correctly.
Be sure to ask before you use someone else's artwork or custom skins, even if you are just modifying it or using a portion of it. And be sure to give them some recognition for having done so in your readme file, etc.

You should have your model viewer open (be sure to refresh after you make any changes to the image and saved it). The images must be saved as a jpg or tga file. Also be sure not to change the image size (width and height). The head model is usually called head.md3.

The skins for the torso and legs are usually called torso and legs. The models for these skins are usually called upper.mdr and lower.mdr and are model files.

NOTE: There are normally 3 models, one for each different segment, such as a head model, torso model and a leg model (md3 and mdr files are model files, but don't worry about that, as long as you can view them, thats all you need to do with them. Unless you want to modify them, but we will get into that later on).

A mdr file is a compressed collection of several md3 files. If you load an mdr in md3View and export it as md3, you'll get three separate md3 files. For example, if you export upper.mdr as an md3, you'll wind up with upper.md3, upper_1.md3, and upper_2.md3. The upper_1.md3 and upper_2.md3 are less detailed versions of upper.md3 (they have with less polygons). The game engine uses these depending on how far away the you are from a model is when you view it, for better performance. If you're close to the model, the game uses upper.md3. If you move further away, it changes to the upper_1.md3, and if you move even further away, it changes to the upper_2.md3. You don't have to make your model files mdr, they can be md3 and it will still work. So you could have all your model files as md3 and have no problems. Plus you don't have to have 3 md3 files for the torso or upper file, you can get by with just upper.md3 and lower.md3. If you have no need to modify the legs or torso, you can just leave them as mdr files. The head is always just a single md3 file.


Creating a UV Map in LithUnwrap

LithUnwrap is a great program to help you see where you are editing the skin. First you will want to convert the mdr to a md3 using md3View. Then load the md3 into LithUnwrap.

torso skin lithunwrap skin outline
As you can see it doesnt resize to the proper size of the texture, so here's what you do.

lithunwrap
Go to: File > UV Map > Save

uv map
Enter in the correct image size (width and height) of the texture. You can find out the size in your graphics program. Then save it as a image file.

skin outline skin outline with texture
Then in your graphics program you can put your UV map on a layer above the edited skin and make it semi-transparent so you can use it as a reference guide. I also recommend, having a copy of the original skin on the very bottom layer.


More File Information

TIP: The best thing to do is to look at the head models (head.md3) for each character in models\players2\skinname in your pak0.pk3 and if you have the Expansion Pack, also look in pak2.pk3. You will notice that some of the characters use a identical head, but just use a different skin. Get an idea about what shape of head you want, such as whether it is bald or has long hair, etc. All of the male StarFleet characters use the same upper.mdr and lower.mdr files, this is also true for the females, but their models are shaped different than the men. All of the StarFleet characters have a combadge attached to their chest and pips or rank buttons on their neck (NOTE: Different ranking characters have different pips, these are only different in the image file not the model itself). If you are making a StarFleet skin, you can simply copy these, since they are editable, but if you don't want them to show up you can look for a head and torso model that does not include them or make them transparent. NOTE: Only tga files will preserve transparency and you must make an alpha channel to do so. TIP: I recommend using a file format that keeps your layers intact or tga files until you are finished editing the images, then save it as a jpg, to make the filesize smaller.

Inside the models\players2\skinname folder, you will see files with the extension cfg, namely animation.cfg and groups.cfg. These files are just text files and can be opened in Notepad or whatever text editor you use. The game will use animation.cfg for deciding what gender group the bot belongs to. Inside animation.cfg, you can set the gender of the character to m (male), f (female) or n (for no gender). To save time its usually best just to copy this file from a character that uses the same torso or legs model. The file groups.cfg controls what groups the character belongs to. In the game you can set up your bots to belong to a certain group and this is what that refers to. Some of the groups are StarFleet, Romulans, Klingons, and Aliens (be sure to spell them correctly and with capitalization) . You can also make custom groups, if you want the character to belong to more than one group simply put a space between them or a carriage return (by pressing Enter or Return).

Inside the models\players2\skinname folder, you will also see files that end in skin (these files can also be opened in Notepad). They are usually named head_default, upper_default, and lower_default. These files link the image to the mesh in the model.
For example here is head_default.skin for a skin named picard

h_doctor,models/players2/picard/head.tga
h_doctorface,models/players2/picard/face.tga
h_pip,models/players2/picard/pip.tga

Notice that after players2 the skinname picard is entered, this must be the name of the skinname you decide. Depending on what models you are using, the text before models is the name of the model's mesh, again copy these from whatever head, torso or lower model you are using, and then edit them.

NOTE: No matter what image type your skin is, inside the skin file you must type the extension as tga, the game automatically looks for a tga file and if it isn't found looks for a jpg file.

Inside the upper_default.skin, it sometimes links to a image file for the hands, you can link to the same hand if you wish, or if you want to make hands different (lighter, darker, hairy, spots, scales) then you will need to make a image file for the hands and place it in your models\players2\skinname folder and link to it in the upper_default.skin file.

Your models\players2\skinname folder, must have a icon_default.jpg file (Note it must be .jpg), you can make it look however you want, but it must have a height and width of 64 pixels. If you have a custom combadge or pip you must also include it in this folder.

NOTE: If md3View doesn't open your skins and shows just white, here's what you do. Type in the full location inside your skin files and when you load the model it will load the textures correctly example:

h_janeway,C:\whatever\somefolder\models/players2/cooldude/head.tga

But remember when you are done testing and ready to put it online for others to use, rename them back to:

h_janeway,models/players2/cooldude/head.tga

pk3 structure
Some people use Winzip to make the pk3 file by making a zip file and changing the extension from zip to pk3, but I prefer to use Pakscape and move the folders into the new pk3 file.


Bot Support

Skins give your characters a new appearance and bot files give the character a personality. If you want bot support (to allow bots to be able to play as your new character) then there are several things you must do. In your scripts folder there must be a file called skinname.bot (replace skinname with what ever your skin name is of course). A bot file can be opened in Notepad or whatever text editor you are using. Here is what a bot file looks like.

{
name            TroiLavender
funname     Troi
model           troilavender
aifile  bots/troi_c.c
}

The bot will show up as TroiLavender in the Change Player Model and HC Selection screens in the game, but when she chats, and when she's in your crosshair, her name will show up as Troi, thats what the funname is for. NOTE: the model is not capitalized and contains no spaces (putting a space inbetween a folders name or image file, could result an error, if you want a space put a _ between the name, that character is known as a underscore).

Inside your botfiles\bots folder, you must have the following files, skinname_c.c, skinname_i.c, skinname_t.c, and skinname_w.c, these are C (programming language files) and can be edited in Notepad. Don't worry, you don't need to know the C programming language.

skinname_c.c is a file that contains the characteristics of the bot, replace any instances of the skin's name with the correct skinname, also be sure that the gender is correct. The file is broken up into different settings for each skill level, you can try experimenting with different numbers if you like, but don't edit the variables (the text in ALL CAPS). The following variables CANNOT have decimals in their number values:

CHARACTERISTIC_VIEW_MAXCHANGE
CHARACTERISTIC_CHAT_CPM 

skinname_i.c is a file that determines how much the bot will want to pick up certain weapons and items, it also contains the initial health/armor states. None of the numbers in this file should have a decimal.

skinname_t.c is a file that contains any text chat that the bot randomly says. For example

// Initiated when the bot exits the game
// 0 = bot name type "game_exit"
{
"Report to my ready room.";
0, " returns to the bridge";
"I, " 0, " am the greatest!";
"Dismissed";
}

Any text following the // is ignored until the beginning of the next line, these are just comments. The text in the curly brackets { } is where any text you want the bot to say is entered. Put your text enclosed around parenthesis " and end the line with a semicolon ;
Note the comment that says // 0 = bot name type "game_exit" this is just a comment letting you know how if you type 0 it will insert the bot's name.
So the line that says "I, " 0, " am the greatest!"; will end up showing up as
I, picard am the greatest!

At the beginning of the file be sure to edit it to

chat "skinname"

Of course, insert the proper skinname. Most of the skinname_t.c files are commented letting you know at what instance the command will take place.

skinname_w.c is a file determines how often they fire in a certain mode. For example:

#define W_SCAVENGER            90
#define W_QUANTUM             175
#define W_SCAVENGER_ALT        5
#define W_QUANTUM_ALT         200

This bot is very likely to fire more often with the stronger alt setting on the Scavenger weapon than the normal setting. But more than likely, this bot will fire with the Photon Burst. None of the numbers in this file should have a decimal.

NOTE: If you are converting a Quake 3 model to Elite Force, the main thing you have to change are the botfiles (the weapon names, items and powerups are different). And as mentioned earlier it doesn't matter if you use md3 or mdr files.

Here's a site that covers bots in great detail: Bot Building 101 - by Brian "Slug" McDonald


CTF (Capture the Flag) Team Color Support

If you want teamcolor support (to make the skin chooseable and load in Capture the Flag or Team Holomatch) then there are several things you must do. First off you will want to make icon_blue.jpg and icon_red.jpg (you can just modify icon_default.jpg and edit it accordingly and save it to the appropriate name). These files control the image that appears when you go through the selection of skins in the game. If you want your character to have a different color legs (pants, dress, whatever) then simply make 2 more files called legs_blue and legs_red (samething with the torso and head, although different file names, the face usually doesn't need a blue or red version, unless you want it to change it).

You must have head_blue.skin, head_red.skin, lower_red.skin, lower_blue.skin, upper_blue.skin and upper_red.skin in your models\players2\skinname folder. Make these files link to the appropriate files, if you choose only to have one skin for the torso, then all the upper_whatever.skin files must link to the same image. If you're using skinfiles that are identical to one already used by another character (for example: the male StarFleet pants) you can simply link to that, without having to add another file to your folder.


Sound Support

Sound support is optional. If you don't include any custom sounds then the game will use default sounds for your character. No one willl hear any custom sounds unless they have it installed on their own computer or if they come with your skin or another skin. You can use wav or mp3 files (mp3 files are often smaller than wav files). The following sound files must be named as such in the
sound/voice/skinname/misc folder

  • death1, death2, death3 - these are the sounds randomly played when the character dies
  • fall1, falling1 - sounds played when falling or after falling
  • gasp - sound played when coming up for air from being underwater
  • jump1 - sound played when jumping
  • pain100, pain25, pain50, pain75 - sounds played when taking damage
  • victory1, victory2, victory3 - sounds randomly played when character frags another character
  • taunt1, taunt2, taunt3, taunt4, and taunt5 (you CANNOT have more than 5 taunts, you can have less) - sounds randomly played when the taunt button is pressed.
If you want a character to share sounds with another character you can add the following line

soundpath skinname

in animation.cfg, below the line which states the sex of the character, animation.cfg is located in the models\players2\skinname folder.

You can also add a sound for when the character wins in Free For All, this must go in the sound/voice/computer/misc folder and must be named skinname_wins


Editing head.md3

It is possible to edit the head.md3 and resize it or add other features to it like horns, a helmet or whatever else you want. To do so I recommend a program called Milkshape 3D. The head.md3 has no animation to it, so you won't have to worry about that.

custom head model
As you can see this is a imperial head with a hat added to it. Once you edit the head, you'll have to generate a qc file. That file defines what textures go with what mesh. Do the following in Milkshape 3D:
Tools > Quake III Arena > Generate Control File

You may have to edit the qc file. Here's an example:

// Quake III Arena MD3 control file, generated by MilkShape 3D
//
$model "models/players2/outlaw/head.md3"
// reference frame
//$frames -1 -1
// frame 1-30
$frames 1 30
$flags 0
$numskins 0

// you can have one or no parent tag

// tags

// meshes (surfaces)
$mesh "h_oldhat"
$skin "models/players2/outlaw/hat.tga"
$flags 0

$mesh "h_outlawhead"
$skin "models/players2/outlaw/head.tga"
$flags 0

$mesh "h_outlawface"
$skin "models/players2/outlaw/face.tga"
$flags 0

The whole purpose for this is so you can export the md3 from Milkshape 3D after you edit it.


Editing upper.mdr & lower.mdr

You can now edit the upper and lower mdr files with the old Milkshape 3D plugin by theSnerd. Once you have the plugin installed properly, then in Milkshape 3D, do the following:
File > Import > Elite Force MDR

Then you can edit the model. Once you edit the model, you'll have to generate a qc file. That file defines what textures go with what mesh. Do the following in Milkshape 3D:
Tools > Quake III Arena > Generate Control File

Then you can edit that qc file. Then to export, do:
File > Export > Elite Force MD3
(NOTE: be sure NOT to pick the Quake3 MD3)

Name the md3 file either upper.md3 or lower.md3, and then pick the anm file the importer created. The anm file is created when you import the mdr, and retains the animation information. The old Milkshape 3D plugin also has information on scaling the model, inside the readme.

TIP: If you want to save your model changes, you can save the file as a ms3d file. Then load that ms3d file and tell it to use the correct anm file, the next time you open it, so you don't lose the animation when you need to export the ms3d file to md3. Keep in mind you can't make big changes doing it that way because the animation is still working with the same mesh more or less; However, if you play around you might be able to get away with a few things here and there. This is what I did when I made the Team Elite skins and how I added the backpack and new boots to the Scout.

You may also have to create tags. Tags are used to tell another model where it should be placed. There is usually a tag for the weapon, head, and torso. The Milkshape 3D website has tutorials on creating tags. I won't go into editing the models anymore than this, but I recommend viewing any Quake3 modeling tutorials out there.

NOTE: There is a NEW Milkshape 3D mdr importer and exporter!

This NEW Milkshape 3D plugin can also export mdr files which can help modders decrease their bot paks by well over 50%! I have not used it so I can't offer much more information, but I figured I would let you know about it.


Viewing Your Skins in the Game

You can use md3View to view them (which is a pain) because animated shaders won't show up properly. However thanks to Captain Max Ames, there is now a map called botchk3 that will allow you to view your skins easily. Just place it in your BaseEF folder and launch EF, then in the console (press the ~ key to bring it down) type in

/map botchk3

That will load the map. At first you will just spawn by yourself stuck in one spot. Press Esc to bring up the menu, add a bot (your bot). Then type in

/kill

that will make your character suicide, then frag the enemy bot. When he respawns he will respawn in the nonmovable area, allowing you to view him.

You can also view your bot by launching EF and typing in

/devmap whatevermapnameyouwant

Using devmap will allow you to use cheats. Thus allowing you to change the thirdperson range and angle. You can then rotate and zoom back from yourself while in thirdperson and move yourself where you want to. Download the modelview.cfg (thanks to The Bind Arena website) to have an easy way to do this and place it in your BaseEF folder. The way the modelview.cfg works is that the numbers on your numberpad will do different things. 5 on the numberpad will toggle between thirdpersonmode & firstperson modes, 4 & 6 will rotate you around, 8 & 2 will zoom in and out. You can then bind a key to take screenshots.

/bind x screenshot

(pressing x will take a screenshot) and to load the modelview.cfg config type in

/exec modelview.cfg

preview of skin in botchk3 map


Shaders

Basically shaders allows for some great effects, such as glowing, textures pulsating, etc. They aren't necessary for a skin, but if used correctly they add great effects. Here are some good links on shaders
Q3ASE
Shader Docs


Photoshop 7 and TGAs

If you are having problems with tga files and you are using Photoshop 7, this is due to the fact that there is a bug in Photoshop 7. You can update Photoshop to 7.01 from Adobe's website or you can download the targa fix from here (it has the fix for Windows and Macintosh versions).


Animation

Kenn Hoekstra formally from Ravensoft, released the orginal model animation source files for Elite Force in XSI format. I havent tried these out though.

James Monroe released the ASE Model Source Files and Carcass program that Kenn forgot to put in the other file.

"Not sure what to do with those XSI animation source files? Kenn forgot to include the ASE model source files so that we have a root model to put the animations on. Also included is Carcass, the program Raven used to create the character models. You'll need it to attach the animations to the root model and compile to MDR. Apparently it was supposed to be included with the GDK but somehow slipped thru the cracks."
description from effiles.com

The following information was posted on effiles.com's file comments by 71M

In any case, since the animations pack and this pack were supposed to be released as one, but accidently weren't, I recommend you go about as treating them as one when working with them.

As such, here is a description of each type of file that's in these packs:

----------------------------------------

.XSI - This is a file that contains a set of skeletal data for one character animation of the model. So, anything like dying and falling over, or typing on a console, each XSI file has one animation. Generally, these animations can be applied to several separate models. I proved that the hazard ones can be successfully integrated into the starfleet ones, and you will also notice that every single MP character (minus a few special cases) have the same death animations.
Aside from looking at vast amounts of numbers in Notepad, I have not managed to actually import and view the contents of any of these files in a 3D application. Neither 3DSMax, MilkShape, or the freeware version of SoftImage 3.5 (For HL2) seem to be able to access them. The main reason for this I believe is that these files are too old for those programs. The only hope I have for you opening these files, is if you can get ahold of a really old copy of SoftImage, somewhere like version 1.0 or 1.1.

----------------------------------------

.ASE - A 3DSMAX Ascii Scene Export file. This is the format the origianl Quake 3 models were exported from 3DSMAX as before they were converted to MD3. In this case, the same applies here, and every head model made (since they were by default, MD3s ingame) is in here as an ASE. Presumably, afterwards, they were converted to MD3 using q3data.

----------------------------------------

.ASK - From what I can see, this is exactly the same as an ASE, but it has a K on the end lol. The ASK files contain the static bodies of each model. Inside each one is 3 copies of the model, each one at different poly counts, and it's these that make up the model's LODs. Although when I imported them, i didn't see any skeleton, I beleive these files also contain extra data to allow the XSI animation files to be integrated into them successfully.

----------------------------------------

.CAR - These are simple text files that will easily open up in Notepad. Basically, they show Carcass what model is going to be compiled and what animations are going to be used. Carcass then takes that information, looks for those files, and then makes an MDR file out of them.

----------------------------------------

Carcass.exe - The main program behind it all.
Carcass is an MS-DOS program (meaning it has to be run through command prompt) that processes .car files and produces MDR files (The EF character model format) as a result, containing a model and a number of animations written into it. Carcass runs very similar to how q3data does, so getting the hang of it is a breeze.

----------------------------------------

Okay, also to get you started, I'll try and write up a brief tutorial on how to quickly create an MDR file using these XSI and ASK files and Carcass:

1) To make it easy on yourself, extract the animation pack, and this pack to the top of your hard drive list (usually it's just C:\)
You should end up in with a directory labeled 'StarTrek' there.
*WARNING* After extraction, the collective size of these files exceeds 1GB. Be sure you have enough space available beforehand.

2) As a demonstration, we'll be making our own copy of the crewthin model. Fire up a Command Prompt console. In my case, for Win XP, you go Start>Run and then type 'cmd' (exclude the quotes) and hit 'OK'.

3) In the black window that appears, type this:

StarTrek\bin_nt\carcass.exe StarTrek\quake\baseEF\models\players\crewthin\crewthin.car

Make sure your backslashes go in the same direction as above too or you may get an error.
What this does, is it tells it to run Carcass, and then provide carcass with a file route to a .car file which it'll then process.

4) Wait a few seconds until the processing is done (Hopefully no errors will make it terminate) and then go and check the crewthin folder.
You should have your very own, newly created copy of the crewthin model, in the exact same specifications as the one you've seen everytime you've played EF SP!!!

----------------------------------------

Okay, I think that's all I know.

Now, so far, all I've found is possible to do with these sets of files is to add new sets of animations to the default set of character models EF has (Expansion Pack included).
That may seem quite brief for such a large set of files, but I believe it's worth it. Being able to add new animations to multiple models will definately come in handy for most SP and even some MP mods.

Anyway, I hope that helped!

Good luck and Happy Modding!!

-TiM

I personally have not tried this, but it sounds great!


Additional Information

The better you know how to edit images the better your skins will turn out. Most modern graphic programs allow for things such as layers, textures, adjusting gamma, brightness hues, and so on.

Consider this tutorial as a starting point and a reference. I recommend looking at Quake3 and even Quake2 tutorials out there that go into tips on how to make metal effects, armor textures, and so on.