Unreal Engine Redistribution

Tim Sweeney
Epic MegaGames, Inc.

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:

Changes to the Unreal.ini file:

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.