| Home Page | Recent Changes

Mod Authoring/Setting Up Your Project

Now its time to set up Unreal Tournament to build your project. First things first, you need to understand how UnrealScript uses packages.

Packages are collections of game resources. The resources can be anything, Textures, sounds, music, or compiled game code. The package format is the same for all resources and multiple resource types can be mixed in a package. For the sake of sanity, Unreal Tournament splits up packages into resources. The textures directory contains packages with textures, the sounds directory contains packages with sounds and so forth. Even though these packages have different suffixes (.utx, .uax, etc) they are still the same kind of file.

You are going to be dealing with .u files, or code packages. Code packages primarily contain compiled UnrealScript, but may also contain textures and sounds that the code depends on.

UnrealScript is an object oriented language. If you aren't familiar with OOP, now is a good time to take a detour and read my guide to object oriented programming. Here is the link: http://www.orangesmoothie.org/tuts/GM-OOtutorial.html. This document is fairly old, but still a good resource.

Since UnrealScript is object oriented, you won't be editing any of the original source. This is different from Quake, where you edit the original source and then distribute a new DLL. In UnrealScript, you will subclass the classes that shipped with Unreal Tournament, modifying them to suit your needs.

So lets make a package. I'm going to refer to our test package as MyPackage but you will want to call it the name of your mod. Where I say MyPackage you'll want to replace with your own package name. Make a directory in your Unreal Tournament directory called MyPackage. Underneath this directory, make a directory called Classes. The UnrealScript compiler looks in the Classes directory for source files to build.

Now, edit UnrealTournament.ini and search for EditPackages=. You'll see a list of all the Unreal Tournament packages. Add your package to the list:

  EditPackages=Core
  EditPackages=Engine
  EditPackages=Editor
  EditPackages=UWindow
  EditPackages=Fire
  EditPackages=IpDrv
  EditPackages=UWeb
  EditPackages=UBrowser
  EditPackages=UnrealShare
  EditPackages=UnrealI
  EditPackages=UMenu
  EditPackages=IpServer
  EditPackages=Botpack
  EditPackages=UTServerAdmin
  EditPackages=UTMenu
  EditPackages=UTBrowser
  EditPackages=MyPackage

Lets take a break and figure out what all those packages are for!

Core
contains fundamental unrealscript classes. You won't need to look at the stuff in here much at all. Notice that Core, like many .u files, has a related DLL. The DLL contains the C++ part of the package.
Engine
is where things get interesting. You'll soon become very familiar with the classes in engine. It contains the core definitions of many classes that will be central to your mod. GameInfo describes basic game rules. PlayerPawn describes basic player behavior. Actor describes the basic behavior of UnrealScript objects.
Editor
contains classes relevant to the editor. You'll never need to mess with this, unless you become a totally elite hacker.
UWindow
contains the basic classes relevant to the Unreal Tournament windowing system. This is a good place to research how the system works if you want to add complex windows and menus to your mod.
Fire
contains the UnrealScript interface to the "Fire Engine." The fire engine is the code that makes all the cool water and fire effects in UT.
IpDrv
contains classes for putting a UDP or TCP interface into your mod. We use this for the IRC interface in the game, among other things.
UWeb
contains classes for remote web administration.
UBrowser
contains the core classes for the in game server browser.
UnrealShare
contains all the code from the shareware version of Unreal. Nalis galore!
UnrealI
contains all the code from the full version of Unreal. UnrealShare and UnrealI are included in UT because some UT code is based on classes in these packages. There is a LOT of content here you could use for your mod.
UMenu
contains any menus for UT that don't depend on Botpack.
IpServer
contains the GameSpy querying interface.
Botpack
is the soul of the new machine. It contains all of the game logic for Unreal Tournament. There are tons of kick ass toys to play with. This is where a lot of your research time will be spent.
UTServerAdmin
contains Unreal Tournamnt specific web admin code.
UTMenu
contains UT menus that require content from Botpack.
UTBrowser
contains browser code that requires content from Botpack.

Notice that the order matters here. This is the order in which the compiler will load the packages. TournamentGameInfo in Botpack is a GameInfo (UT), so in order for the compiler to build that code, it needs to have Engine loaded. Your mod should go at the end of the list to benefit from all the code in the previous packages.


Prev Page: /A Few Things To Watch Out ForSection 5 of 12 – Next Page: /How to Build Your Package

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In