Unreal Engine Redistribution
Epic MegaGames, Inc.
Audience: Unreal Technology Licensees
Last Updated: 07/21/99
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,
Changes licensees need to make
- Rename your game executable to something other than Unreal.exe (of course), for example
- 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
- 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).
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 firstname.lastname@example.org
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:
- 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";
- 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...)
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
We use InstallShield for our installation. See InstallShield Corporation for info about it. It's
the least bad installation tool we've found.