Unreal Engine Redistribution
Tim Sweeney
Epic MegaGames, Inc.
http://www.epicgames.com/
Audience: Unreal Technology Licensees
Last Updated: 01/25/02
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
[email protected] 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...)
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