[Home]

Jailbreak Developer Network: Making Voice Packs


This is a tutorial on Making Voice Packs for Jailbreak 200x.

1  Recording the sounds

The first step you have to do to make a Jailbreak announcer is to record the sounds needed (see section "List of Jailbreak sounds" at the bottom of the page). How you do this is your choice, you can use a microphone and some recording software, a speech synthesizer, or just about anything with which you can record sound on your computer. You may also use a recording software of your choice; the whole palette from SndRec32 up to "Super Ultra Sound And Music Recorder 3000" will do. Just don't forget to save your files in the .wav format using the PCM codec – the one that takes up most space (but also keeps all of the sound information intact).

Once you have done that, save your files into a directory where you can retreive them quickly again.

If you are planning to use UCC for importing the sounds, make sure you create a subfolder "Jailbreak" in the directory of your choice and put the sounds in there. It is not mandatory, but it makes your sound package clear later on – and it is useful if you are packaging a classic UT2004 announcer as well (where the folder containing the announcer sounds must be named Generic for the announcer to work correctly).

2  Packaging the Sounds

2.1  The UnrealEd way

  1. Start UnrealEd.
  2. On the toolbar, click Sound Browser.
  3. In the window that pops up, choose FileImport... and locate your .wav files. Select them all and click Open.
  4. A new window appears. In the box labelled Package, type in a name for your package, for example JBVoiceZeus. Under Group, input Jailbreak. (Again, this is voluntary, but it simplifies a lot.) If you named your sounds as they should be named, you can just select OK All and wait a bit.
  5. Go to FileSave and save your package under the given filename (e.g. JBVoiceZeus.uax).
  6. Close UnrealEd and continue to the next section.

2.2  The UCC way

2.2.1  On Windows

  1. Make sure your sounds are in an easily accessible folder on your hard drive. (I opt for C:\temp\annzeus\Jailbreak, in my case.)
  2. Start the command prompt through Start(All) ProgramsAccessoriesCommand Prompt
    or by launching command.com (Windows 98/ME) or cmd.exe (Windows 2000/XP) through StartRun....
  3. Switch to your UT2004 System folder by typing cd /d path\to\UT2004\System, e.g. cd /d D:\Unreal\UT2004\System.
  4. Enter the following:

      ucc pkg import sound ..\Sounds\JBVoiceSomething SoundsDirectory

    So, for example:

      ucc pkg import sound ..\Sounds\JBVoiceZeus C:\temp\annzeus

    Omit the "Jailbreak" part, because that will be defined as the group in the package!

2.2.2  On Linux or Mac OS X

  1. Make sure your sounds are in an easily accessible folder on your hard drive. (I opt for /tmp/annzeus/Jailbreak, in my case.)
  2. Open up a terminal of your choice, be it the Mac terminal, XTerm, Konsole or whatever else.
  3. Switch to your UT2004 System folder using cd /path/to/ut2004/System, e.g. /usr/local/games/ut2004/System.
  4. Enter the following:

      ./ucc-bin pkg import sound ../Sounds/JBVoiceSomething SoundsDirectory

    So, for example:

      ./ucc-bin pkg import sound ../Sounds/JBVoiceZeus /tmp/annzeus

    Omit the "Jailbreak" part, because that will be defined as the group in the package!

    Also note that Linux users with 64-bit processors use ./ucc-bin-linux-amd64 and Mac OS X users utilise ./ucc-bin-macosx instead of ./ucc-bin, as that binary is compiled and optimised for Linux on 32-bit architecture processors!

Congratulations, you have created your sound package. Now, it is time to code a bit. (Okay, not real coding in UnrealScript, but it also involves the keyboard and a text editor – and you are telling the game what you want it to do.)

3  Writing the definitions

First, open up a text editor of your choice. I don't care if it's Notepad, Emacs, Vi, Joe, or whatnot, just make sure it is a plain text editor so that you don't get unwanted formatting. Save the file in the UT2004 System directory, naming it just after your sound package, but with the .int ending. Input this:

[Public]
Object=(Name=*SoundPackageName*,Class=Class,MetaClass=Jailbreak.JBVoice,Description="*Name of your announcer*")

[Settings]
Volume=2.0
Pause=-0.150

[Macros]
LastMan="LastMan"
LastSecondSave="LastSecondSave"
TeamRed="(red: TeamSelf) (blue: TeamEnemy) (spectator: TeamRed)"
TeamBlue="(red: TeamEnemy) (blue: TeamSelf) (spectator: TeamBlue)"
TeamCapturedRed="$TeamRed Captured"
TeamCapturedBlue="$TeamBlue Captured"
TeamCapturedBoth="Tied"
TeamReleasedRed="$TeamRed Released"
TeamReleasedBlue="$TeamBlue Released"
ArenaWarning="ArenaWarning"
ArenaEndTimeout="ArenaEndLoser"
ArenaEndWinner="ArenaEndWinner"
ArenaEndLoser="ArenaEndLoser"
GameStart="GameStart"
GameOverWinnerRed="(red: GameOverWinner) (blue: GameOverLoser) (spectator: $TeamRed GameOverTeam)"
GameOverWinnerBlue="(red: GameOverLoser) (blue: GameOverWinner) (spectator: $TeamBlue GameOverTeam)"
AddonLlamaStart="LlamaStart"
AddonLlamaDisconnect="LlamaDisconnect"
AddonLlamaFragged="LlamaFragged"

Replace *SoundPackageName* with the name of your announcer sound package, e.g. "JBVoiceZeus". Also, replace *Name of your announcer* with a text that you want to show up in the Jailbreak HUD menu (where you configure the Jailbreak announcer, after all).

You might want to know what that Pause in the [Settings] section means. Jailbreak, instead of having to make sounds for everything, can sequentially combine files, and the Pause setting specifies how much pause to insert between the samples (or, for negative values, how much to overlap the samples – that comes in handy when using heavy reverb, for instance). The [Macros] section defines which samples to play in which order for a number of pre-defined events (or "macros"). See JBSpeechClient for more information on this topic.

That's it! Now, you can go listen to what you have been able to do!

4  List of Jailbreak sounds

Tip: you can let Jailbreak select from multiple sounds with the same content if you call them FileName_1.wav, FileName_2.wav, etc. This makes announcements less monotonous after a while.

Note: This list is made to comply with the .int file created in Section 3. You may experiment with both, but don't come crying after me if it doesn't work!

NameDescriptionExample
ArenaCancelledPlayed when the arena match is cancelled.The arena match has been cancelled.
ArenaEndLoserPlayed to the player who loses the arena match.Back to jail, loser!
ArenaEndWinnerPlayed to the player who wins the arena match.You have earned your freedom!
ArenaStartPlayed to both battling prisoners at the beginning of an arena match.Frag the enemy to gain your freedom.
ArenaWarningPlayed to all players when the countdown for an arena match starts.Prepare for arena combat.
CapturedPlayed to all players when a team has been captured completely (after TeamRed, TeamBlue, TeamEnemy or TeamSelf)....has been captured.
GameOverLoserPlayed to every player on the defeated team announcing that they lost.Your team has lost the match.
GameOverTeamPlayed to all spectators to announce which team won (after TeamRed, TeamBlue, TeamEnemy or TeamSelf)....has won the match.
GameOverWinnerPlayed to every player on the victorious team announcing that they won.You are the Jailbreak champions!
GameStartPlayed to all players when the game starts.Play!
LastManPlayed to the last player on a given team as a warning to save their team or lose.You are the last free player.
LastSecondSavePlayed to all players when the last free player is fragged just before he/she managed to release his/her teammates.Last second save!
LlamaDisconnectPlayed to all players that the cheating player (i.e. lamer, or llama) has disconnected from the server.The llama has fled.
LlamaFraggedPlayed to all players when the llama was fragged by another player.The llama has been busted!
LlamaStartPlayed to all players when a player is found to be cheating and is turned into a llama.Frag the llama!
LlamaStartSelfPlayed to the cheating player when they are turned into a llama to warn them... or to insult them.Don't be a llama!
ReleasedPlayed to all players when a team is released (after TeamRed, TeamBlue, TeamEnemy or TeamSelf)....has been released.
TeamBlueSignifies the blue team. Plays for spectators before Captured, Released and GameOverTeam.The blue team...
TeamEnemySignifies the enemy team. Plays for active players before Captured, Released and GameOverTeam.The enemy team...
TeamRedSignifies the red team. Plays for spectators before Captured, Released and GameOverTeam.The red team...
TeamSelfSignifies your own team. Plays for active players before Captured, Released and GameOverTeam.Your team...
TiedPlayed to all players when both teams are jailed, e.g. when player frags another player but falls into a lava pit shortly afterwards.Both teams captured. No score.
VengeancePlayed to the Arena Avenger when he starts.Vengeance is yours!