Intro to Modding 1 - Tools and File Types

©2017 by .Twi – Please feel free to share!

There are many tools that you may find useful when modding Rainbow Six 3: Raven Shield.  Most are available freely.  I will list many of them, then go into further detail below.

## Tool List

* UnrealEd - This program is included for free with your Raven Shield game.  Just find your installation folder, go to the System folder, and run UnrealEd.exe.
* SDK - This is a tool I made for creating and compiling custom code for Raven Shield. It is freely available from ModDB.com.
* UTPT - Short for Unreal Tournament Package Tool, this excellent tool lets you open existing Raven Shield packages and view the source code that created them.  It is freely available from UTZone.de.
* Map Build Converter - This handy tool lets you take a file made for version 1.6 of Raven Shield, and convert it for use in the SDK or in earlier builds of Raven Shield.  It is freely available from ModDB.com.
* Image editor - Some form of advanced editor for images is best.  I personally use Photoshop, but GIMP is also a powerful editor and is available for free.  If your computer can run older software, Photoshop CS2 has been released for free by Adobe.
* 3D modelling software - If you want to create or convert models for the game, modeling software is essential.  These tutorials will assume you use 3ds Max, but Maya is also available.  Blender is a free option as well, but I have no experience with it.
* Text editor - For writing code, you will need some form of text editor that has support for syntax highlighting.  Notepad++ is a popular free option.  I personally use Crimson Editor, available free at CrimsonEditor.com.

## Introduction To UnrealEd

UnrealEd is the mapping tool included with the game, and is also your best option for getting textures, models, animations, and more into the game engine.  UnrealEd as created by Epic Games is also able to compile code, but unfortunately UBISoft removed this feature in Raven Shield so you will need my SDK (see section below) if you want to code.

When you open UnrealEd, you will be greeted by four viewports that are used for mapping, as well as columns of tools on the left.  What you should be most interested in, however, is a row of buttons along the top that open the resource browsers.

From left to right, these buttons open: the actor browser, group, music, sound, texture, mesh, prefab, static mesh, and animation browser. The most important ones for you to learn are the textures, static meshes, and animation browser.

**IMPORTANT: If you modify any of the game's default files in any of the browsers, and save the file, you will prevent yourself from joining a multiplayer game!  Make sure that you save any work to a NEW file and not overwriting a game file.  It is a good idea as well to back up any default files you may be working with.**

In the **texture browser**, you can open texture files (\*.UTX) and view their contents.  You can export the game's textures by right clicking on a texture and choosing "Export to File".  You can also import new textures by choosing File > Import.

**IMPORTANT: Textures to be imported MUST be in either 24-bit \*.BMP or 32-bit \*.TGA format.  Their dimensions must be powers of two (eg 64x64, 32x128, 512x512, etc).**

In the **static mesh browser**, you can open static mesh files (\*.USX) and view their contents.  You can change the skins (materials) on a mesh using the window in the bottom left.  You can also import new models by choosing File > Import.

**IMPORTANT: Models to be imported MUST be in ASE format.** See Exporting 3D models from 3ds Max for use in UnrealEd.

In the **animation browser**, you can view the animated meshes and their animations.  You can change the skins (materials) on a mesh using the window to the right.  You can also import new models and animations in the File menu.

**IMPORTANT: Meshes to be imported MUST be in \*.PSK format, and animations to be imported must be in \*.PSA format.**

## Introduction to the Software Development Kit (SDK)

The SDK is my tool that I created to streamline the process of writing code for Raven Shield.  Although UBISoft promised an official SDK from the very beginning of the game, they never delivered on this promise, and people interested in writing and compiling new code for the game would have to figure out the process on their own, which was a very complicated and difficult process.  Often the only resources that could be found on coding were on sketchy hack websites, intended for exploiting the multiplayer game and ruining the game experience.

Because of this, I needed to make a tool that I could use to easily compile code with minimal delay and effort, and that I could share with others to help them as well.  This SDK is sometimes referred to as "SDK2" because it is actually my second attempt at a complete tool.  The first attempt was flawed and had issues with compiling anything related to textures.

The first important resource in the SDK is the **1.56 Source Code**. This is UBISoft's official source for the game, leaked years ago to the community.  This resource is invaluable.  I highly recommend getting a tool that can quickly search inside text documents so you can use the source code fully.  I use the free Windows GREP (sadly discontinued).

The next is the **Code Environment** folder.  This folder contains any projects that you will compile, each in their own folder.  It also can contain folders to hold Raven Shield files that you may need to use in projects; for example, \*.UTX files placed into the Code Environment > Textures folder.  And it contains the System folder, which has all the needed files to compile new projects.

The SDK also contains a **Goodies** folder.  In here I put many samples of my current work back when I originally released it.  There's lots of stuff in here that is useful, including the needed data to add Iron Wrath and Athena Sword weapons to your mod.  But please keep in mind that this code I included is pretty old and not representative of the full potential of the SDK.

Most important of all is the **SDK Toolbelt**.  This is a simple batch file that lets you run a bunch of different batch files I placed in the Code Environment > System folder.  You can run these by typing quick commands.  The first basic command is "help", which lists some of the other commands you can use.  "Exit" will close the SDK tool.

To compile a project, you need to set it up inside the Code Environment folder.  Create a folder with your project name.  No spaces or special characters can be in the folder name.  Inside that folder, create a new folder called "classes".  This will contain any code that you write.

Any code you write will be placed inside the classes folder.  Each file is a plain text document, saved with a \*.UC extension.  You can have as many \*.UC files as you need; each file is a new code class.  Below you can see one of my projects.  All the \*.UC files are separate code objects, placed in the Code Environment > GadgetMod > classes folder.

When you have a project properly set up, you can then compile it using the Toolbelt tool.  Type "**compile**", and when it asks, type the name of the folder you made.  In my above screenshot, to compile this project, I would type "compile" and then "GadgetMod".  The SDK will then attempt to create a new file for use in Raven Shield using the code you have made.  If there are errors in the code, the compile process may fail, =with a message about what you've done wrong.  If there are no errors, you will soon have a new \*.U file created in your main SDK folder!

Some other important commands are the "**new**", "**open**", and "**log**" commands.  "New" will automate the process of making a new project inside Code Environment, complete with classes folder and a new first class.  "Open" will open up the classes folder of whatever project you want to open.  "Log" will open up the log file containing the history of your last compile attempt.  If there are any errors you need to investigate, you can find them in the log file.

One other feature of the SDK is it includes multiple code versions.  This is an advanced feature, and in general you can leave it on the default setting (version 1.56).  You can check what version you are on by typing "version", or change versions with the commands "156", "160", or "16h".  These set your SDK to compile for version 1.56, 1.6, and 1.6 hybrid
 respectively.

The reason these different versions are included is that there are some small differences between version 1.56, which is what the SDK is generally based upon, and version 1.6, which was the latest patch released by UBISoft for the game.  If your mod is dealing with code that was changed between the two versions, you may need to use the 1.6h or 1.6 versions of the SDK to make your code work properly.  However, **in general, version 1.56 will work best for almost all projects**.  Almost anything created with the 1.56 SDK version will work just fine on the 1.6 game.  Version 1.56 and 1.6h will also properly compile code dealing with textures, which version 1.6 has trouble with.  **I highly recommend sticking with 1.56** unless you know what you are doing.

## Introduction to Unreal Tournament Package Tool (UTPT)

UTPT is an excellent tool created by Antonio Cordero Balcázar.  It allows opening Unreal \*.U, \*.UTX, \*.USX, and other types of files (including Raven Shield packages) and viewing the code, textures, and other resources inside them.  Many of these resources can be exported as well.

To get started, open UTPT, and choose **File > Open As**.  Select the file you wish to look at.  In this example, I will be opening a file called VoicesMod.usx.

When you have chosen your file to open, a new box will open with a list of games, asking you what game this file is for.  Raven Shield is in the list, but **do not choose it!**  For some reason, UTPT has difficulty if it thinks the code is from Raven Shield, and will not do a good job of understanding it.  Choose **Unreal Tournament 2003**.  UTPT will then attempt to decompile the source in your selected file.

Once the file is opened, you will see a display on your left of everything inside the package.  This could include code classes, textures, etc.  If you do not see something similar to the picture above, make sure the "**Export Tree**" tab is chosen on the bottom (cicled in red).  You can get a more compact view of everything by right clicking and choosing "**Full Collapse**" (shown).

You can now view and export textures by right clicking on them.  You can also view the source code by right clicking on a class.  Right click and choose "**View the Script**", and the source will appear in the main window.

Sometimes a creator will "strip" the source code from their work.  This can reduce file size and also attempt to prevent people from reading their source.  (UBISoft did this with all the default code files in the game.)  If that is the case, choosing "View the Script" will produce an empty page. However, you can still most likely view an approximation of what the original code was.  Instead of choosing "View the Script" in the right click menu, choose "**Decompile**", and UTPT will try to figure out what the code was.  **This method does not give you perfect code!**  However, it will help you learn and guess what the original code could have been like.  You can see below that it cannot show you the comments or exact formatting of the original source code.

"Analize Raw Object" is an advanced feature that lets you see the hex of code classes.  It can help you in conjunction with a hex editor to find and edit the right part of the file.  You will not need this feature for just about anything, so unless you know what you are doing, you can safely ignore it.

## Conclusion

I hope this overview has been helpful and that you have learned something new about some useful tools for modding.  In future tutorials, I will go into greater detail, using UnrealEd, the SDK, and more to create some cool mods.  My next planned tutorial will be on using UnrealEd to create shaders, which will allow reflective weapon skins and glowing textures.

If you have any questions, I am always happy to help.  You can usually find me to chat with on the AllR6 Discord channel, at R6Chat.com.