+-++-++-++-++-+ +-++-++-++-++-++-++-++-+ +-++-++-++-++-++-++-++-++-++-++-++-+ |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