# Unreal Engine Redistribution

Audience: Unreal Technology Licensees
Last Updated: 07/21/99

### Who redistributes

Only authorized licensees who have signed an Unreal engine licensing agreement with Epic MegaGames may redistribute the Unreal binaries.

### What Unreal compontents to redistribute

All of the engine .exe's and .dll's required to run the game.
All of the plug-in DLL's that are applicable, such as GlideDrv.dll for 3dfx Glide support, etc.

### Changes licensees need to make

General changes:

- Rename your game executable to something other than Unreal.exe (of course), for example WheelOfTime.exe.
- Rename the config file to match your executable name, for example rename Unreal.ini to WheelOfTime.ini. The engine automatically uses the .ini file whose name matches the executable file, so you need not modify any code to reflect the new .ini name.
- Make whatever changes are needed to your game .ini file and Default.ini to reflect your game settings. Unreal.ini should (upon clean installation) always be an exact copy of Default.ini.
- Change the map file extension. Our extension is .unr. Your extension should be something else, so that if a user installs multiple Unreal engine titles on his machine, the file associations don't get screwed up, i.e. when the user double clicks on an .unr file, Unreal should run it; a .wot file should be run by Wheel of Time.

Changes to the Unreal.ini file:

- Change Registry.* to reflect your product.
- Change UdpBeacon.Port to a new Udp port number.
- Change UdpBeacon.Product to a single word that identifies your product.
- Change URL.Protocol to reflect your game. This is used in URL's such as unreal://gameserver.com/ or wheeloftime://somesite.com/.
- Change URL.ProtocolDescription.
- Change URL.MapExt to your map file extension (ours is "unr").
- Change URL.SaveExt to your savegame file extension (ours is "usa").
- Change URL.Port to a unique TCP/IP port for LAN and internet gameplay.
- Change URL.LocalMap to the map you want players to start on (ours is Unreal.unr).

###

GameSpy Configuration

In the initial Klingon Honor Guard patch there are KHG servers showing up underneath "Unreal" in GameSpy. Here are the steps Unreal licensees can take to setup their own entries in GameSpy:

First, contact David Wright (CRT) at GameSpy. His email address is wrightd@stanford.edu and his ICQ UIN is 2652565. Tell him you are interested in getting GameSpy support setup for your game. You will need to get a "Unique Game String" and a "Secret Key" from him. The Unique Game String is a string that uniquely identifies your game...for Unreal the string is "unreal". KHG's string might be "klingon". The Secret Key is a key that is used to generate validation for your game. Encrypted validation is necessary to ensure hackers can't flood the master server with fake game entries.

Once you have these two elements make the following code changes:

1. On line 50 of IpServer.UdpServerUplink change:
   HeartbeatMessage = "\\heartbeat\\"$Query.Port$"\\gamename\\unreal";
   to the same thing with your Unique Game String in the place of unreal. For example:
   HeartbeatMessage = "\\heartbeat\\"$Query.Port$"\\gamename\\klingon";
2. On line 367 of IpServer.UdpServerUplink change the GenerateSecretKey function to generate the secret key for your own game. It is highly suggested that you DO NOT release a version of your game with the secret key blatantly listed as a string constant. If you do so, the string will be visible in the string table. Alternatively, write a simple, but obfuscated function to generate the secret key. (See my GenerateSecretKey function as an example of a simple way of creating said key.) (Line numbers will vary, obviously. These are line numbers as of the 220 release of Unreal, which you guys don't have yet... *shrug*) Once you have done these changes you will be ready for GameSpy. Additional information on the GameSpy protocol can be obtained from GameSpy proper. This way each licensee will be able to have their own entries in GameSpy (less confusing to players and beneficial in many other ways...)

### Installation issues

Install all of the Unreal engine binaries to your application's directory. Our default directory is Unreal, and our setup calls for installing the executables and DLL's in the System subdirectory, which defaults to \Unreal\System. Unreal is designed so that it does not need to install any shared DLL's into the user's \Windows or \Windows\System directory, because doing so tends to create hellish version-management problems. Unreal's only external dependency that doesn't ship with all versions of Win95/WinNT is the Visual C++ runtime (MSVCRT.DLL), which we always install to the \Unreal\System directory to prevent potential version conflicts with other versions of the Visual C++ runtime in the user's \Windows\System directory.

Do not install any Unreal binaries into the user's \Windows or \Windows\System directories, as these files are frequently modified and not intended to be shared between applications.

We use InstallShield for our installation. See InstallShield Corporation for info about it. It's the least bad installation tool we've found.

### End