+-++-++-++-++-+ +-++-++-++-++-++-++-++-+  +-++-++-++-++-++-++-++-++-++-++-++-+
|B||r||e||t||t| |J||o||r||d||a||n||'||s|  |*||*||*||*||*||*||*||*||*||*||*||*|
+-++-++-++-++-+ +-++-++-++-++-++-++-++-+  +-++-++-++-++-++-++-++-++-++-++-++-+

 
  @@@  @@@  @@@@@@  @@@  @@@@@@@ @@@@@@@@ @@@@@@@   @@@@@@   @@@@@@@ @@@  @@@
  @@@  @@@ @@@@@@@@ @@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@  @@@
  @@!  @@@ @@!  @@@ @@! !@@      @@!      @@!  @@@ @@!  @@@ !@@      @@!  !@@
  !@!  @!@ !@!  @!@ !@! !@!      !@!      !@!  @!@ !@!  @!@ !@!      !@!  @!!
  @!@  !@! @!@  !@! !!@ !@!      @!!!:!   @!@@!@!  @!@!@!@! !@!      @!@@!@!
  !@!  !!! !@!  !!! !!! !!!      !!!!!:   !!@!!!   !!!@!!!! !!!      !!@!!!
  :!:  !!: !!:  !!! !!: :!!      !!:      !!:      !!:  !!! :!!      !!: :!!
   ::!!:!  :!:  !:! :!: :!:      :!:      :!:      :!:  !:! :!:      :!:  !:!
    ::::   ::::: ::  ::  ::: :::  :: ::::  ::      ::   :::  ::: :::  ::  :::
     :      : :  :  :    :: :: : : :: ::   :        :   : :  :: :: :  :   :::

       @@@@@@@ @@@  @@@ @@@@@@@  @@@@@@  @@@@@@@  @@@  @@@@@@  @@@
       @@@@@@@ @@@  @@@ @@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@@@@@@ @@@
         @@!   @@!  @@@   @@!   @@!  @@@ @@!  @@@ @@! @@!  @@@ @@!
         !@!   !@!  @!@   !@!   !@!  @!@ !@!  @!@ !@! !@!  @!@ !@!
         @!!   @!@  !@!   @!!   @!@  !@! @!@!!@!  !!@ @!@!@!@! @!!
         !!!   !@!  !!!   !!!   !@!  !!! !!@!@!   !!! !!!@!!!! !!!
         !!:   !!:  !!!   !!:   !!:  !!! !!: :!!  !!: !!:  !!! !!:
         :!:   :!:  !:!   :!:   :!:  !:! :!:  !:! :!: :!:  !:!  :!:
          ::   ::::: ::    ::   ::::: :: ::   :::  :: ::   :::  :: ::::
          :     : :  :     :     : :  :   :   : : :    :   : : : :: : :
                ____              __  __                       __
               / __/___   ____   / / / /___   ____ ___  ___ _ / /
              / _/ / _ \ / __/  / /_/ // _ \ / __// -_)/ _ `// /
             /_/___\___//_/     \____//_//_//_/   \__/ \_,_//_/__
            /_  __/___  __ __ ____ ___  ___ _ __ _  ___  ___  / /_
             / /  / _ \/ // // __// _ \/ _ `//  ' \/ -_)/ _ \/ __/
            /_/   \___/\_,_//_/  /_//_/\_,_//_/_/_/\__//_//_/\__/


                                Version 2.02
                            
+-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+
|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|
+-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+


i.   Legal stuff 
ii.  Version History
iii. E-mail 
iv.  Thanks
v.   What you'll need
vi.  Guidelines for recording

II. Assembling the voicepack
 A. Before you start
 B. The .uax file
 C. The script
 D. The strings, and such
 E. The .u file
 F. The .int file
 G. Editing the .ini file
 H. Testing your voicepack

+-++-+ +-++-++-++-++-+ +-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-+
|i||.| |L||e||g||a||l| |S||t||u||f||f| |*||*||*||*||*||*||*||*||*||*||*||*||*|
+-++-+ +-++-++-++-++-+ +-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-+

This may be not be reproduced under any circumstances except for personal,
private use. It may not be placed on any web site or otherwise distributed 
publicly without advance written permission. Use of this guide on any other 
web site or as a part of any public display is strictly prohibited, and a 
violation of copyright. (So I used that statement--sue me.)

The one site I give permission to host this tutorial is GameFAQs
(www.gamefaqs.com).

UPDATE 7/05/03: I have also allowed this document to be hosted on www.dlh.net.

Copyright 2003 Brett Jordan.

+-++-++-+ +-++-++-++-++-++-++-+ +-++-++-++-++-++-++-+ +-++-++-++-++-++-++-++-+
|i||i||.| |V||e||r||s||i||o||n| |H||i||s||t||o||r||y| |*||*||*||*||*||*||*||*|
+-++-++-+ +-++-++-++-++-++-++-+ +-++-++-++-++-++-++-+ +-++-++-++-++-++-++-++-+

2.02--Updated which sites can host this document. Also re-updated my e-mail
address. I begin to wonder if it's possible for me to stick with one screen
name...

2.01--Updated my e-mail address. My apologies to anyone who e-mailed me to my
old address and I didn't respond...

2.0--Changed the ASCII Art title drastically. Also changed the section
dividers from ugly-looking alternating-direction slashes to the ASCII Art
with the section titles in them as seen above this paragraph. Added "What
you'll need" and "Guidelines for recording" sections. Changed section titles
to make them less wordy. Added paragraph about .wav conversion in step A.

1.01--Removed "Using UnrealEd 2.0" from the title so it wouldn't be mistaken
as the tutorial's version number. Also added a note in step C and changed some
of its text slightly.

1.0--First version.

+-++-++-++-+ +-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+
|i||i||i||.| |E||-||m||a||i||l| |*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|
+-++-++-++-+ +-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+

My E-mail address is now xentaroadunx@aol.com. If you need help with your voice-
pack, E-mail me with the subject title "UT Voicepack Help". If you don't have
this subject title, I will consider your mail junk mail and delete it before it
is read.

+-++-++-+ +-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+
|i||v||.| |T||h||a||n||k||s| |*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|
+-++-++-+ +-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+

Infogrames, Epic Software, and Digital Extremes for making this incredible
game.

Jeff Veasey for hosting my tutorial on his site, GameFAQs(along with thousands
of other tutorials for other games.)

The authors of the other tutorials from which I learned to make a voicepack
from. (NOTE: This tutorial IS original work!)

Ftomrandom for pointing out that I forgot to mention to convert voice samples
to .wav format.

+-++-+ +-++-++-++-+ +-++-++-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-+
|v||.| |W||h||a||t| |y||o||u||'||l||l| |n||e||e||d| |*||*||*||*||*||*||*||*||*|
+-++-+ +-++-++-++-+ +-++-++-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-+

You'll need UnrealEd (it should be in the Unreal Tournament/System directory),
a medium for recording (such as a CD drive or PC microphone) and Windows Sound
Recorder if you're recording your own samples (You should have this--look under
Start/Programs/Accessories/Multimedia.), and Notepad, which, I hope, you have.
If you have Mac or Linux, then I can't really help you here.

+-++-++-+ +-++-++-++-++-++-++-++-++-++-+ +-++-++-+ +-++-++-++-++-++-++-++-++-+
|v||i||.| |G||u||i||d||e||l||i||n||e||s| |f||o||r| |r||e||c||o||r||d||i||n||g|
+-++-++-+ +-++-++-++-++-++-++-++-++-++-+ +-++-++-+ +-++-++-++-++-++-++-++-++-+
(if you're recording your own voicepack)

Make sure that the sounds you record are LOUD. VERY LOUD. Why so loud? Well,
to put it simply--you won't be able to hear it amidst the Flak Cannons. One
of the worst things you could do is have a voicepack that is inaudible. The
rule of thumb is this: It's always better to make it too loud than not loud
enough.

Don't put your mouth right on top of the microphone. This ensures choppy sounds.
You don't have to be extremely loud to record sounds--though this contradicts
what I said earlier about loudness. Nothing a little Increase Volume option
in Sound Recorder can't fix.

And remember--if something doesn't sound right the first time, just re-record
it. It may take you a couple of tries to get all the samples just right.

+-++-++-++-++-++-++-++-++-++-+ +-++-++-+ +-++-++-++-++-++-++-++-++-+ +-++-++-+
|A||S||S||E||M||B||L||I||N||G| |T||H||E| |V||O||I||C||E||P||A||C||K| |*||*||*|
+-++-++-++-++-++-++-++-++-++-+-+-++-++-+-+-++-++-++-++-++-++-++-++-+-+-++-++-++
|A||.| |B||e||f||o||r||e| |y||o||u| |s||t||a||r||t| |*||*||*||*||*||*||*||*||*|
+-++-+ +-++-++-++-++-++-+ +-++-++-+ +-++-++-++-++-+ +-++-++-++-++-++-++-++-++-+

OK, now you've got all these nice little voice samples, and you're ready to make
them into an Unreal Tournament voicepack. 

Well, the first thing you need to do is put all the samples you are going to use
in one directory. This may sound stupid, but make sure that the folders in the 
directory don't contain any spaces in their names. Yeah, it's weird, but you
have to do this, otherwise things won't work so nicely later.

Make sure all of your voice samples are converted to .wav format. Now, if you're
going to just use your voicepack for yourself, you can record the sounds at any
frequency and quality you want. However, if you plan to make your voicepack
available for download somewhere, it is best to record the sounds at 8 bit,
11,025 Hz Mono so the file size won't be quite so large. Because, there will
always be people with 56K modems, like myself. XP

That was the simple first step. Unfortunately, the other steps aren't so easy.

+-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-+
|B||.| |T||h||e| |.||u||a||x| |f||i||l||e| |*||*||*||*||*||*||*||*||*||*||*||*|
+-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-+

Once the first step is done, open up UnrealEd (if you've never used it before,
it's in the Unreal Tournament/System directory. It has a green UT icon.). Give
it a minute to load, then open up the Sound Browser. (The icon looks like a 
speaker) From here, go to the File menu (in the Sound browser) and choose 
"Import...".  Then select the folder  that your samples are in, select all the 
samples you want to import, and click OK.

NOTE: Some tutorials say that UnrealEd will screw up if you select more than 1
sample to import at once. I, personally, have had no such trouble, so go ahead
and try it. But if it doesn't work, just do it one at a time.
Also, if your sound files won't import, make sure that the directory that
they're in contains no spaces, like I said before.

Now see a little window with places where you have to type in information. Under
"Package", type a name for the package. It is best to relate the name of the
package to your voicepack's theme; so if you're creating a voicepack of Tom
Hanks, you would probably name the package "Hanks".

If you have more than 25 voice samples, I suggest grouping the samples. If you
have fewer than 25 samples, then just put them in an "All" group. If you do
group your samples, make sure to group them logically, like putting all your
Taunts into a group called "Taunt".

Name is the name of the sample. Type in something that you can identify each
sample with.

If you are not grouping your samples, select OK All. If you are, click OK until
you get to a file you want to put in a different group, then type the name of
the group you want to put the file in and resume clicking OK.

Make sure that all of your samples were loaded, then choose "File" and then
"Save..." and save the file as the same name as the package.

Now that that's done, you can move on to step C.

+-++-+ +-++-++-+ +-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-+
|C||.| |T||h||e| |s||c||r||i||p||t| |*||*||*||*||*||*||*||*||*||*||*||*||*||*|
+-++-+ +-++-++-+ +-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-+

Now you need to open up the Actor Class browser (The button looks like a pawn in
chess). Click the plus sign (+) next to "Actor", then "Info", then "VoicePack",
then "ChallengeVoicePack".

OK, this is important. If you are making a voicepack for a male, then right
click "VoiceMale" and select "New...". If you are making a voicepack for a female, 
then right-click "VoiceFemale" and select "New...", and the same applies if
you're making a Boss voicepack.

Under "Package", type the EXACT same thing you named the package in your .uax 
file. Under "Name", name it whatever you want, but I suggest the same name as the
package.

NOTE: Remember the difference between the Package name and the Voicepack name!
It helps if you name them both the same thing so there won't be any confusion.

Now you should have something that looks like this (I'm using the "Hanks"
package as an example):

//=============================================================================
// Hanks.
//=============================================================================
class Hanks expands VoiceMale;

Minimize that window.

Now go back to the Actor Class browser and follow the same path, up to
"ChallengeVoicePack". Then click the plus sign next to "VoiceBoss", "VoiceMale",
or "VoiceFemale" (Whichever suits your voicepack) and double-left-click either
item there.

Now you should see a whole bunch of text that you most likely don't understand.
That's OK, you don't need to understand a word of it. Just highlight everything
starting with:

#exec OBJ LOAD FILE=..\Sounds\Male1Voice.uax PACKAGE=Male1Voice

on down to the bottom. Then press Ctrl-C. Now, double-left-click on the name of
your package on the menu to the left of the text, click two lines below the text
there and hit Ctrl-V. Now all that text should be in your voicepack's script.

Now click on the line that says "#exec OBJ LOAD" and all that and go to where it
says "..\Sounds\Male1Voice.uax" and change where it says Male1Voice.uax (or
whatever it says) to the name of your .uax file, and the PACKAGE name to the name
of your package.

Finally, click on "Tools" at the top of the window and select "Compile Changed".
When it's done, you can exit that window.

+-++-+ +-++-++-+ +-++-++-++-++-++-++-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+
|D||.| |T||h||e| |s||t||r||i||n||g||s||,| |a||n||d| |s||u||c||h| |*||*||*||*|
+-++-+ +-++-++-+ +-++-++-++-++-++-++-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+

Now it's time for the longest step. This step will vary in length depending on
how many samples you have, and how much effort you put into it.

Go to the Actor Class browser and go all the waydown to "ChallengeVoicePack", 
then go under whichever one of the three applies to your voicepack. You should 
see your voicepack's name. Right-click it, and select "Default Properties...".

You'll see a lot of plus sigs, but you only have to worry about 
"ChallengeVoicePack". Click the plus sign next to it, and you should see a lot
of stuff come up.

OK, here's where voicepacks are made or broke. This is where you actually assign
the samples to Acknowledgements, Friendly Fire, etc. and type in the message
strings and abbreiviations.

AckAbbrev: Where you type in the abbreviations for your Acknowledgement voice
strings. The abbreviation will be shown when the in-game voice menu is brought
up (Default key: V) instead of the whole string. If the whole sample's text
string is short enough to fit in the voice menu, you can leave this blank. I
advise keeping abbreviations shorter than 20 characters.

AckSound: Where you set each Acknowledgement sound sample to be played. The
easiest way to do this is to open up the Sound browser, open your package, pick
the sample you want to use, and then go back to the Voicepack properties and
click on the slot you want that sample to be in, and then click "Use". This
automatically puts the selected sound file in the Sound browser in the slot.

AckString: This is the text that is displayed in the top-right corner of the
screen during the game when a voice sample is played. Type in all the text you
want displayed here.

AckTime: Uh...I don't know what this does. I _think_ that it sets how much of
a delay is made after an order is given to respond with an acknowledgement. But
I could very well be wrong. Just leave it alone, unless you want to find out
what it really does. If you find out, please e-mail me and tell me what it does.
Thanks in advance :)

FFireAbbrev: Type abbreviations for Friendly Fire strings.

FFireSound: Set sound samples for Friendly Fire.

FFireString: Type the text string for Friendly Fire samples.

MatureTaunt: Leave this value at 0 if a Taunt isn't, or set it to 1 if it is, a
Mature Taunt. If the value is set to 1, and the option "No Mature Taunts" is
checked in the Unreal Tournament Preferences menu, then the corresponding taunt
will not be played. Use this for voicepacks that have little swearing in them.
But if they're ALL bad, then the person shouldn't be using the voicepack if they
don't want to hear bad words. :/

NameSound: Set sound samples for the leader names (the samples played after the
computer acknowledges the team leaders such as "Red Leader, Blue Leader," etc.)
They go in this order:
0. Red leader
1. Blue leader
2. Green leader
3. Gold leader

NameTime: I don't know this one either. X(

numAcks: Set the number of Acknowledgements that this voicepack has.

numFFires: Set number of Friendly Fires.

numTaunts: Should be self-explanatory.

OrderAbbrev: Should be self-expanatory.

OrderSound: Set order sounds, but make sure that they are arranged in this
order:

0. Defend the base (Orders bots to defend the flag or objectives)
1. Hold this position (Orders bots to stay where they are and attack)
2. Assault the base (Orders bots to destroy objectives)
3. Cover me (Orders bots to follow you and provide covering fire)
4. Freelance (Bots will act depending on the point spread and game type)
*skip 5-9*
10. Take their flag (Orders bots to take the enemy's flag [CTF only])
11. Search and destroy (Orders bots to find control points[Domination only])

OrderString: Set Order text strings.

OtherAbbrev: Self-explanatory, again.

OtherSound: Set Other sounds, arranged in this order:

0. Base is uncovered (Never heard bots say it, even when no one was defending.)
1. Get our flag back (Bots won't say it)
2. I've got the flag (Bots as well as humans say this when they acquire the
enemy's flag)
3. I've got your back (Bots say this half of the time when they follow you.)
4. I'm hit (Bots say this when they take damage.)
5. Man down (Bots say this when a teammate dies.)
6. I'm under heavy attack (Bots say this when being fired upon.)
7. You got point (Bots say this the other half of the time after following you.)
8. I've got our flag (Bots say this when they're about to recover their team's
flag.)
9. I'm in position (Bots say this when they reach a position for defending.)
10. Hang in there/On my way (Bots say this when they're going to their 
position.)
11. Control point secure (Bots and humans say this when they secure a control
point in Domination.)
12. Enemy flag carrier is here (Bots [NAGGINGLY!] say this when the enemy gets
your flag.)
13. I need some backup (Bots will say this for no apparent reason, even when
they don't need any backup.)
14. Incoming/Take them down (Bots say this when the enemy team approaches their
base in large numbers.)
15. I've got your back (...again? Must be a mistake...)
16. Objective destroyed (Bots and humans say this when an objective is destroyed
in Assault mode.)
17. Medic (Bots say this when they need health. 'Course you can't do anything
about it...)

otherstring: Set Other text strings.

TauntAbbrev: Self-explanatory.

TauntSound: Again, self-explanatory.

TauntString: Do I need to say anything?

OK, when you're finished doing all that, hit the "X" at the top of the screen.
You're almost done!

+-++-+ +-++-++-+ +-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-+
|E||.| |T||h||e| |.||u| |f||i||l||e| |*||*||*||*||*||*||*||*||*||*||*||*||*||*|
+-++-+ +-++-++-+ +-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-++-++-+

This is a simple step. Go back to the Actor Class browser, and go to "View" at
the top, then "Show Packages". You should see the name of your package here.
Check the box next to it, and then go to the Save button at the top of the
screen and click it to save your .u file. Easy!

Now, close UnrealEd. You don't need it anymore!

+-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-+
|F||.| |T||h||e| |.||i||n||t| |f||i||l||e| |*||*||*||*||*||*||*||*||*||*||*||*|
+-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-+

Go to your
Unreal Tournament/System
directory, and copy a .int file and paste it in the same folder. Now open that
copy, and delete the text. Now, copy and paste this text into it:

[Public]
Object=(Name=WWWW.XXXX,Class=Class,MetaClass=BotPack.VoiceYYYY,Description="ZZZZ")

Change the "WWWW" to the name of your package, "XXXX" to the name of your 
voicepack, "YYYY" to Male, Female, or Boss, whichever pertains to your voicepack,
and "ZZZZ" to what you want the pack to be called in the game (this text appears
in the drop-down menu where you select your Voice in the Unreal Tournament Player
Setup menu.)

Now save the file (Do not use "Save as...", just "Save"!) and close it. Then
right-click on the file and select "Rename..." and change the name to the same
name that your .u file is.

Just one extremely short step left...

+-++-+ +-++-++-++-++-++-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+ +-++-++-++-+
|G||.| |E||d||i||t||i||n||g| |t||h||e| |.||i||n||i| |f||i||l||e| |*||*||*||*|
+-++-+ +-++-++-++-++-++-++-+ +-++-++-+ +-++-++-++-+ +-++-++-++-+ +-++-++-++-+

Open the UnrealTournament Configuration Settings in the
Unreal Tournament/System
directory. Then find in the file where it says

[Engine.GameEngine]

and go to the bottom of that area just before the blank line, and type in the
text:

ServerPackages=XXXX

where "XXXX" is the name of your voicepack (NOT your package!) This is necessary
to use your voicepack in an online game.

Congratulations! You're done with your voicepack!

But you wouldn't let your voicepack go without TESTING it, would you?

+-++-+ +-++-++-++-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-+ +-++-++-+
|H||.| |T||e||s||t||i||n||g| |y||o||u||r| |v||o||i||c||e||p||a||c||k| |*||*||*|
+-++-+ +-++-++-++-++-++-++-+ +-++-++-++-+ +-++-++-++-++-++-++-++-++-+ +-++-++-+

Now comes the FUN part! XD

Start up Unreal Tournament, and change your Player Setup so that your voicepack
is the voicepack you use. Start a game with bots that also have the voicepack.

Test the voicepack out in all game modes and see if all the samples are where
they should be. See if the bots say what they're supposed to when they're
supposed to.

This step can last as long as you want it to! Have fun!

+-++-++-+ +-++-+ +-++-++-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-+
|E||n||d| |o||f| |d||o||c||u||m||e||n||t| |*||*||*||*||*||*||*||*||*||*||*||*|
+-++-++-+ +-++-+ +-++-++-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-+
Copyright 2003 by Brett Jordan
February 24, 2003 7:43 P.M. CST