| Home Page | Recent Changes | Preferences

# 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 For – Section 5 of 12 – Next Page: /How to Build Your Package

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In