How to add custom packages
Download the latest version of the SDK
A crucial element in Deus Ex is conversations with characters. To set up conversations, you use one of the programs that comes with the Deus Ex SDK called ConEdit. With ConEdit, you can set up simple or complex conversations, including InfoLink messages, multiple-choice decisions, as well as giving the player new goals, transferring items to the player, and all sorts of other stuff.
To get the ball rolling, let's create a simple conversation.
NOTE: You may also want to check out Jered's excellent ConEdit tutorials here and the comprehensive set of ConEdit tutorials over at Universal Constructor. Also, be aware that much of ConEdit actually *is* documented in the ConEditDocumentation.doc file that comes with the SDK.
You will need to use your own package in order to use ConEdit. If you don't know how to do that, please follow the How to add custom packages tutorial first. Whenever you see "MyPackage" in this tutorial, just replace that with the name of your package.
The first step is to create an import file to tell the Unreal compiler which conversation files to read in. The compiler will read the ".con" files that you make in ConEdit and create a couple of special files that are needed for your conversations to work in the game.
So create a new text file called ImportConversations.uc and save it in your \DeusEx\MyPackage\Classes folder. Here's what to put in the file:
// Import conversations
#exec CONVERSATION IMPORT FILE="Conversations\Mission70.Con"
You will have a "CONVERSATION IMPORT" line for each .con file you want to import. For now, let's just start with one .con file. In this example, I'm assuming that you'll be setting up a .con file that is associated with "mission 70", but you can use any number from 16 to 97 for your missions.
Also, in this example, the .con file would be stored in the \DeusEx\MyPackage\Conversations folder. So if you want to follow this tutorial exactly, be sure to create a folder called Conversations under your MyPackage folder.
NOTE: Importing conversations into your own files was not possible with the original version of the SDK. Be sure to download and install the latest version of the SDK if you haven't already.
Fire up ConEdit. If this is the first time you've used it, it may ask you to fill in some stuff, so be sure to at least put in a Username. It's not important, just fill something in or ConEdit will yell at you later. Take the defaults for everything else.
Now create a new .con file. Just hit File -> New or the New Document button. Before you can go on, you'll need to pick at least one mission number to associate with your .con file and you'll need to fill out a value called Audio Package. For this example, scroll to Mission 70 and hit the "<-- Add" button.
Hit the Misc tab, and type in "Mission70" (with no spaces) for the Audio Package. This can actually be anything you want. This value will be appended at the end of your audio filename, so you'll eventually get a filename like MyPackageAudioMission70.u for your "audio package" with these settings.
Under the Conversation menu, select Add Conversation. Let's set up a brief conversation between the player (JC Denton) and Tracer Tong. For the Conversation Name value, type in "MeetTong" and for the Conversation Owner value, type in "TracerTong". You don't want any spaces. The Conversation Owner must exactly match the "bind name" of the character you are referring to. I'll explain bind names in more detail later, but in practice it's usually just the character's name without any spaces. Be sure to type it in correctly!
When you add a new bind name to a .con file, you'll get this:
Hit "Yes". This will add the bind name to the character drop-down lists, so you won't have to type it in again (for this .con file anyway). It's cool, because you only have to scroll through the names in your file, instead of dozens of them. ConEdit will categorize your conversations by Conversation Owner, which is pretty handy.
Don't worry about the settings in the other tabs; just take the default values. I'll cover that stuff in later tutorials.
With "MeetTong" highlighted, select Add -> Speech from the Events menu. Select TracerTong from the Actor to Speak drop-down and type in "JCDenton" for the Speaking To value. Hit "Yes" when it asks if you want to add JCDenton to the list. Make up something for Tracer Tong to say to the player, and type that in the Speech area.
Now hit the Update button. Hit the Add Event button to prepare for a response from JC. Notice how the "Actor to Speak" and "Speaking To" values have flipped? Since we're normally using this window to set up dialogue between two characters, that feature can come in handy. Make up some witty dialogue for JC's response and hit Update. The Speech Event will NOT be added to the conversation until you hit Update. Continue adding as many speech events between the two as you'd like to. When you're done, select Add -> End from the Events menu.
Hit File -> Save (or the Save button) and save your file as Mission70.con in your \DeusEx\MyPackage\Conversations folder.
Now it's time to rebuild your package. You're done with ConEdit for now, so close it if you want to. Get out of UnrealEd if you're in it. Pull up an MS-DOS command prompt and CD to your \DeusEx\System folder. Delete your package (MyPackage.u) if you've built it before and type in "ucc make". If you have your .con file in the right place and your import file set up correctly, you should now have three new files in your \DeusEx\System folder:
The first is just your normal package containing your .uc files, textures, DataCube text, meshes, etc. The second file is for recorded dialogue in MP3 format. Don't worry about that for now - I'll cover recorded audio later. The third file contains the text of the conversations.
NOTE: The next time you need to re-import your .con files, you'll only need to delete MyPackage.u - the other files will be overwritten.
Fire up UnrealEd and either make a simple map (a one room cube is fine) or pull up an existing map. If your map doesn't have a DeusExLevelInfo item, you'll need to add one now. That's available under Actor -> Info in the Class browser. There are two properties that you'll need to set. Expand the DeusExLevelInfo category, put the name of your package in the ConversationPackage value, and fill in the missionNumber. The ConversationPackage is the name of your regular package, not the MyPackageText or MyPackageAudioMission70 packages.
For this example, add a TracerTong to your map. He's available under Actor -> Pawn -> ScriptedPawn -> HumanCivilian. (scroll down to the last choice) Make sure your PlayerStart is close or you'll be doing a lot of walking.
While you've got TracerTong selected, now's a good time to mention the BindName value. This is for extra credit, but if you want, right-click on the TracerTong item in the Class Browser and select "Default TracerTong Properties". Expand the Conversation property and you'll see the BindName value is "TracerTong". This value is almost always the same as the name of the character class, but technically that's the value that matches up with what you type in ConEdit.
Run your level and go right-click on Tracer Tong. You should see one of those familiar "third person" conversations.
NOTE: If you're going to distribute your map, you'll need to include your MyPackage.u and MyPackageText.u files. Since in this example you don't have any recorded audio, you don't need to distribute the MyPackageAudioMission70.u file.
Back to main page