Last Update: 2023/01/18

Unreal & Unreal Tournament

The history

This is a little game we are creating for a Fall ‘96 debut. Unreal will be published in shareware by Epic MegaGames and distributed in retail stores worldwide by Electronic Arts. This is an immersive game that thrusts you into an alien world and leaves you with nothing to survive on except for your instincts and an arsenal of really cool weapons.

^ This is the release note in the 1995 game's tech demo help file.

Since then, Unreal grew to a masterpiece and marked FPS history as did Wolfenstein 3D, Doom and Quake before it. Unreal Tournament followed in 1999. Other versions were next until 2014, each one with new engine's generations.

A brand new community-driven development version of Unreal was even announced in 2014 but no news were released since 2017 on the blog. Shall we blame Fortnite for it's success? Maybe.

Now, many AAA commercial games use it's latest engine edition as it is maybe the "world's most open and advanced real-time 3D creation tool". That's what they said.

The aftermath

On December 14th, 2022, Epic Games announced in a post that they started to turn off online services and servers for many Unreal Engine-based games and remove games from digital storefronts.

The source and the legacy

In 2014, Tim Sweeney (Core Epic Games developer since Unreal beginnings) answered on the Community Forums that Unreal Engine 2 or 3 can not be open sourced because of depencies:

We definitely can’t open source Unreal Engine 2 or 3, because of dependencies on a large number of external closed-source middleware packages with complex licensing requirements. Open sourcing Unreal Engine 1 might be possible, but getting the source and dependencies into a releasable state would take a lot of cleanup effort that we just haven’t been able to find time for. I hope we can do it someday!

As today, only one person alive out of Epic Games is known (at least, to my knowledge) to have at hand the original source codes from both Unreal 1 and Unreal Tournament 99 after an agreement with Epic Games in 2019: Smirftsch. Smirftsch, after the UTPG group disbanded, released numerous versions that fixed many issues on both Unreal 1 and Unreal Tournament 99 keeping it alive. So: many thanks to him for his awesome work.

The {s,m}adness

But, right now, the full latest source code is still unavailable to the community. As a huge open source supporter, I think this is really sad.

So lets grab our best LAN Parties's CRTs and give the memory lane a shot!


Building Old Unreal versions from source

Numerous versions of Unreal's source code leaked over time.

You may find them on the internet, maybe on Archive.org. What ? No I did not say anything.

Summary

Unreal

Unreal Tournament

  • Unreal Tournament 99 v400 - 1999-11-30

Building Unreal 0.82

What you'll need

  • Microsoft 9x / Windows NT
    • Known to work:
      • 95 OSR 2.5 4.00.950C
      • 98 Second Edition 4.10.2222 A
      • XP Professional with SP3 version 2002
  • Microsoft Visual C++ 4.2
  • Microsoft Visual Basic 4.0
  • Unreal v82 source code
    • Look for Unreal [v0.82] [1996-00-00].7z
    • SHA256: 8263350560b61daad67ae88dbf1db54bc5bdcc6cf976b29b717352b773ef1db6
    • SRC\DOC\!README.TXT date: 1996-10-01, states version 0.83 but SRC\INC\UNBUILD.H says 0.82
    • Last SRC\DOC\TIMLOG.TXT entry date: 1996-10-01
    • Last SRC\DOC\TIMOLD.TXT entry date: 1996-09-29
    • UnrealEd RevisionVer 440
  • Unreal v83 game demo files
    • Look for Unreal_1996_10_18_83.exe
    • SHA256: cd52cfefd8fe665d730a452720b6f615057158b9f262e509ab563f2810d16858

Setup

Setup Windows as usual.

Unzip source code in C:\Unreal\.

Setup Visual C++ and reboot. Do not worry about OBDC Driver Manager failing to install on Windows XP, it is not needed.

Setup Visual Basic.

Copy C:\Unreal\SRC\TOOLS\ML.EXE to C:\MSDEV\bin\ or by adding it to your path.

Install game demo files to C:\Unreal083\.

Building and running the Game

Building the Engine and Launcher

Launch Visual C++ and open the C:\Unreal\SRC\UNREAL.MDP project workspace.

Rebuild each component by setting it's Release configuration as active using the combobox in the second toolbar, or by right-clicking it and selecting Set as default project, and then using the Build > Rebuild All menu from the main menu bar.

Build the engine's components in the following order:

  • Engine
  • Render
  • Editor
  • Network
  • Game
  • Windows

Move C:\Unreal\SRC\SYSTEM\UnWn.tlb to C:\Unreal\System\Unreal.tlb.

Open the C:\Unreal\SRC\UTILS.MDP project workspace.

Select the Launcher component and build it as you did for the engine's components.

Congratulations, you successfully built Unreal!

Testing the Game Engine

Copy the following game demo files from C:\Unreal083 to C:\Unreal:

  • System\Default.ini
  • System\Unreal.ini
  • System\Unreal.gfx
  • Maps\Unreal.unr
  • Music\song1.s3m
  • Help\Unreal.hlp
  • Help\Unreal.htm

Run C:\Unreal\Unreal.exe.

Congratulations, you can enjoy this Unreal version!

Building and running the Editor

Launch Visual Basic and open the C:\Unreal\EDSRC\Unrealed.vbp project file.

Build the editor executable by using the File > Make EXE file menu from the main menu bar and save it to C:\Unreal\UnrealEd.exe.

Copy the following game demo files from C:\Unreal083 to C:\Unreal:

  • Help\UnrealEd.hlp

Run C:\Unreal\UnrealEd.exe.

Congratulations, you can now edit this Unreal version game files!


Building Unreal 0.83

This is a almost the same as 0.82.

Actually, this version predates the 0.82 as in the Unreal.vbp file the RevisionVer field is set to 438 rather than 440!

It lacks:

  • The compiled Unreal classes file Classes\root.utx
  • The Visual C++ workspaces

It have minor Editor UI changes, not much to say about it...

What you'll need

  • Same OSes, DevTools and game demo files as 0.82
  • Unreal 0.83 source code
    • Look for Unreal [v0.83] [1996-10-01].7z
    • SHA256: 0cd367394d1473aaa7e658c43bbe2ef09fecf845254a28235df911a6ef29e4a0
    • SRC\DOC\!README.TXT date: 1996-10-01, states version 0.83 but SRC\INC\UNBUILD.H says 0.82
    • Last SRC\DOC\TIMLOG.TXT entry date: 1996-10-01
    • Last SRC\DOC\TIMOLD.TXT entry date: 1996-09-29
    • UnrealEd RevisionVer 438

Setup

Same as 0.82.

Building the Game

Building the Engine and Launcher

Launch Visual C++ and open the C:\Unreal\Src\Unreal.mak Makefile: In the open file prompt, select All Files (*.*) type and Makefile for the Open As option.

Then rebuild components as for the 0.82.

Open the C:\Unreal\Src\Utils.mak Makefile and build the Launcher component.

Testing the Game Engine...

Copy files as explained in the 0.82 section.

However, if you run the game now, you'll be greeted by an error:

Can't find actor classes

History:

FGlobalClasses::Associate
<- FUnrealEngine::Init
<- CUnrealWnApp::InitializeUnreal
<- CUnrealWnDlg::OnPaint
<- CUnrealWnApp::InitInstance.

This is because you need to rebuild the root.ucx package first. Continue reading to run the Game Editor to do that.

Building the Game Editor and the Root Classes package

Same as 0.82 for the Visual Basic part.

On startup the editor will read the C:\Classes\Classes.mac macro and build a minimal Root package from the classes scripts sources.

This minimal package is enough to run the demo map as it embeds most of its ressources. However, building the full Root Classes package as it is found in the 0.82 version requires all the assets sources. Even if some of them can be exported from the 0.82 C:\Unreal\Classes\root.ucx file (as textures or sound effects), you'll still miss the models' meshes, animations, textures and some other textures.

You can also find a full root classes package in the game demo files.

Now you can both run both the Game and the Editor without any issue.


Building Unreal 0.84a

What you'll need

  • Same OSes, DevTools as 0.82
  • Unreal 0.84a source code
    • Look for Unreal [v0.84a] [1996-12-11].7z
    • SHA256: 4019cd5baed31b7b8f3a0d2206fa7944d475c24887932c9c93c7e060aad49518
    • SRC\DOC\!README.TXT date: 1996-12-11, states version 0.84
    • Last SRC\DOC\TIMLOG.TXT entry date: 1996-12-10
    • Last SRC\DOC\TIMOLD.TXT entry date: 1996-10-23
    • UnrealEd RevisionVer 462
  • Unreal v84 game demo files
    • Look for Unreal_1996_12_10_84a.exe
    • SHA256: a640774fb648779d19c3aa380fc9f811d9315ef5fd53b63f0e29d944ec805166
  • NetManage Chameleon NFS/X (Only if you want to build the Gatekeeper Client and Server)
    • Known to (almost) work:
      • Look for CHAMELEONNFS.iso
      • SHA256: 62df4baa80e6a5819e9bbf4a4be2be62fc4b589fef8e86c301e3f254e0c96adb

Setup

Same as 0.82, but with game demo files installed to C:\Unreal084a\.

If you want to build the Gatekeeper Client and Server, you must be on Windows 95 and have NetManage's Winsock version. You can install it with Chameleon NFS/X disc if you have a licence key. Good luck with that!

Building and testing the Game

Building the Engine and Launcher

Launch Visual C++ and open the C:\Unreal\Src\Unreal.mak Makefile: In the open file prompt, select All Files (*.*) type and Makefile for the Open As option.

In C:\Unreal\Src\Render\UnRender.cpp in the FGlobalRender::DrawWorld function, comment the GRandoms->Tick call on line 2520 by prefixing it by //.

void FGlobalRender::DrawWorld(ICamera *Camera)
  ...
  // GRandoms->Tick(Camera->Level.Descriptor->Ticks);

Then rebuild components as for the 0.82.

Open the C:\Unreal\Src\Utils.mak Makefile and build the Launcher component.

Testing the Game Engine...

Copy files as explained in the 0.82 section from the C:\Unreal084a\ folder.

Run C:\Unreal\Unreal.exe.

Building and testing the Game Editor

Same as 0.82 for the Visual Basic part.

Like 0.83, there is no Root Classes package provided with this leak.

On startup the editor will read the C:\Classes\Classes.mac macro and build a minimal Root package from the classes scripts sources.

You can also find a full root classes package in the game demo files.

The minimal package is enough to run the demo map as it embeds most of its ressources. However, building the full Root Classes package as it is found in the demo files requires all the assets sources. Even if some of them can be exported from C:\Unreal84a\Classes\root.ucx file (as textures or sound effects), you'll still miss the models' meshes, animations, textures and some other textures.

Building and testing the Gate

It seems that Epic Game decided for this release to make the source depends on a NetManage Winsock Control. This one is bundled with Chameleon NFS for Windows 95.

Obviously, this component can't be build on Windows 98 and Windows XP.

Building the Gate Server

Launch Visual Basic and open the C:\Unreal\GateSrc\Server\GateSrv.vbp project file.

Build the Gate Server executable by using the File > Make EXE file menu from the main menu bar and save it to C:\Unreal\Gate\GateSrv.exe.

Building the Gate Client

Launch Visual Basic and open the C:\Unreal\GateSrc\Server\GateCli.vbp project file.

In Tools > References, uncheck MISSING: Gatekeeper Server and add C:\Unreal\Gate\GateSrv.exe.

Edit Launch.frm properties and set Top to 100 to avoid issues on small screens.

Build the Gate Client executable by using the File > Make EXE file menu from the main menu bar and save it to C:\Unreal\GateCli\GateCli.exe.

Running the Gate

Launch C:\Unreal\Gate\GateCli.exe.


Building Unreal 0.86X

What you'll need

  • Microsoft 9x / Windows NT
    • Known to work:
      • 95 OSR 2.5 4.00.950C
      • 98 Second Edition 4.10.2222 A
      • XP Professional with SP3 version 2002
  • Microsoft Visual C++ 5.0
  • Microsoft Visual Basic 5.0
  • MASM 6.11d (from any other 0.8X source)
  • Unreal 0.86X source code
    • Look for Unreal [v0.86x] [1997-05-25].7z
    • SHA256: 2557f43cb2ca0e44ac5f53cffa8c0e20a1879b5ce74896e6bb4cd6c2aef37f4c
    • SRC\DOC\!README.TXT date: 1997-05-25, states version 0.86
    • Last SRC\DOC\TIMLOG.TXT entry date: 1997-05-24, version 0.864y
    • Last SRC\DOC\TIMOLD.TXT entry date: 1997-05-16
    • UnrealEd RevisionVer 538
  • Unreal 0.86X game demo files
    • Look for Unreal_1997_05_24_864v.exe
    • SHA256: bc75294506b9b34627a4bc39961649e4bd16a87b5623ffbcd407db95067a6f1a

Setup

Setup Windows as usual.

Unzip source code in C:\Unreal\.

Setup Visual C++ and reboot. Do not worry about OBDC Driver Manager failing to install on Windows XP, it is not needed.

Setup Visual Basic 4.0 then 5.0.

Copy Unreal\Src\Tools\ml.exe from any other 0.8X source C:\Program Files\DevStudio\VC\bin\.

Install game demo files to C:\Unreal0864v\.

Setup without Visual Basic 4.0

If you have not installed Visual Basic 4.0 previously, you need to register some Visual Basic Controls. They can be found on the Visual Basic 5 CDs.

  • Copy all files from D:\TOOLS\CONTROLS\ to C:\WINDOWS\SYSTEM\ (or C:\WINDOWS\SYSTEM32\ on Windows NT)
  • Run the following commands in a command.com prompt (or cmd.exe on Windows NT):
cd C:\WINDOWS\SYSTEM{32}
regsvr32.exe GRID32.OCX
regsvr32.exe THREED32.OCX
regsvr32.exe MSOUTL32.OCX
regedit.exe VBCTRLS.REG

Building and testing the Game

Building the Engine and Launcher

Open the C:\Unreal\Unreal.dsw workspace with Visual C++.

Rebuild each component by setting it's configuration as active using the Project > Set Active Project menu from the main menu bar.

Build the engine's components in the following order:

  • Engine
  • Render
  • Editor
  • Network
  • Game
  • Windows
Testing the Game Engine

Copy from the demo files :

  • System\Unreal.ini
  • System\Unreal.gfx
  • Maps\Unreal.unr
  • Help\Unreal.hlp

Run C:\Unreal\Unreal.exe.

Building and testing the Game Editor

Launch Visual Basic and open the C:\Unreal\EdSrc\Unrealed.vbp project file.

Build the editor executable by using the File > Make EXE file menu from the main menu bar and save it to C:\Unreal\UnrealEd.exe.

Like 0.83, there is no Root Classes package provided with this leak.

Copy the following game demo files to C:\Unreal:

  • System\Unreal.ucx
  • Help\UnrealEd.hlp

Run C:\Unreal\UnrealEd.exe.

Building and testing the Gate

Building the Gate Server

Launch Visual Basic and open the C:\Unreal\GateSrc\Server\GateSrv.vbp project file.

Build the Gate Server executable by using the File > Make EXE file menu from the main menu bar and save it to C:\Unreal\Gate\GateSrv.exe.

Building the Gate Client

Launch Visual Basic and open the C:\Unreal\GateSrc\Server\GateCli.vbp project file.

Build the Gate Client executable by using the File > Make EXE file menu from the main menu bar and save it to C:\Unreal\GateCli\GateCli.exe.

Running the Gate

Launch C:\Unreal\Gate\GateCli.exe.


Building Unreal 0.867

What you'll need

  • Same OSes, DevTools and game demo files as 0.86X
  • DirectX 5 SDK
    • Look for idx5sdk.exe
    • SHA256: 6cde9ba718866e21e8b197b599fc9193a9044b8159af8baddbefec16ae531b51
  • Unreal 0.867 source code
    • Look for Unreal [v0.867] [1997-07-25].7z
    • SHA256: 3c4707912b1beb5c5ba67a2eb137f4b6a59a4fb740386b76302ace1cd5667be2
    • SRC\DOC\!README.TXT date: 1997-07-26, states version 0.86
    • Last SRC\DOC\TIMLOG.TXT entry date: 1997-06-17, version 0.868a
    • Last SRC\DOC\TIMOLD.TXT entry date: 1997-05-16
    • UnrealEd RevisionVer 553
  • Unreal 0.867 game demo files
    • Look for Unreal_1997_06_18_867z.exe
    • SHA256: a67ed3c36597da19c324a499170db1ced24b6cc0ad187d40baa61ce4f312e217

Setup

Same as 0.86X, but with game demo files installed to C:\Unreal0867z\.

Setup DirectX 5 SDK.

Building and testing the Game

Building the Engine and Launcher

First, copy C:\Unreal\Src\Windows\Res\UnSplash2.bmp to C:\Unreal\Src\Windows\Res\UnSplash3.bmp.

Before building as 0.86X, modify the Windows project as such:

  • Click on the Project > Settings menu from the main menu bar
  • Select the Windows project
  • Select the C/C++ tab and add to the project options /I "C:\dxsdk\sdk\inc"after "..\Inc" as such:
/nologo /Zp4 /MD /W4 /WX /vd0 /GX /O1 /Ob2 /I "..\Inc" /I "C:\dxsdk\sdk\inc" /I "..\Inc\3dfx" /D "COMPILING_WINDOWS" /D "RELEASE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Fp".\Release/.pch" /Yu"StdAfx.h" /Fo".\Release/" /Fd".\Release/" /FD /QIfdiv- /c
  • Select the Link tab and replace "..\lib\ddraw.lib" by C:\dxsdk\sdk\lib\ddraw.lib"as such:
..\Lib\UnRender.lib ..\Lib\UnNet.lib ..\Lib\UnEngine.lib ..\Lib\UnEditor.lib ..\Lib\UnGame.lib ..\lib\dxguid.lib C:\dxsdk\sdk\lib\ddraw.lib winmm.lib /nologo /base:"0x16000000" /subsystem:windows /incremental:yes /pdb:"..\Lib/UnServer.pdb" /machine:I386 /out:"..\..\System\UnServer.exe" 

Then build all the components.

Testing the Game Engine

Copy files as explained in the 0.86X section from the C:\Unreal0867z\ folder.

Run C:\Unreal\Unreal.exe.

Building and testing the Game Editor

Same as 0.86X.

Building and testing the Gate

Same as 0.86X.



Building Unreal 200

What you'll need

  • Same OSes, DevTools and game demo files as 0.86X
  • DirectX 5 SDK
    • Look for idx5sdk.exe
    • SHA256: 6cde9ba718866e21e8b197b599fc9193a9044b8159af8baddbefec16ae531b51
  • Unreal 1.200 source code
    • Look for Unreal [v1.200] [1998-05-19].7z
    • SHA256: 66a3a0686c3918820d5acd48d2b7bc9a01af91926f6810f7028b6a99258b7c73
    • UnrealEd RevisionVer 722
  • Unreal 0.867 game demo files
    • Look for Unreal_1997_06_18_867z.exe
    • SHA256: a67ed3c36597da19c324a499170db1ced24b6cc0ad187d40baa61ce4f312e217

Setup

Building and testing the Game

Building the Engine and Launcher
Testing the Game Engine

Building and testing the Game Editor

Building and testing the Gate


Building Unreal Tournament 99 v400

What you'll need

Setup

Setup Windows as usual.

Unzip source code in C:\UT\.

Install game demo files to C:\TournamentDemo\.

Setup Visual Studio 6.0 with Visual C++ 6.0 and Visual Basic 6.0.

Copy Unreal\Src\Tools\ml.exe from any other 0.8X source C:\Program Files\Microsoft Visual Studio\VC98\Bin.

Setup without Visual Basic 4.0

If you have not installed Visual Basic 4.0 previously, you need to register some Visual Basic Controls. They can be found on the Visual Basic 5 CDs.

  • Copy all files from D:\TOOLS\CONTROLS\ to C:\WINDOWS\SYSTEM32\
  • Run the following commands in a cmd.exe prompt:
cd C:\WINDOWS\SYSTEM32
regsvr32.exe GRID32.OCX
regsvr32.exe THREED32.OCX
regsvr32.exe MSOUTL32.OCX
regedit.exe VBCTRLS.REG

Building and testing the Game

Building the Engine and Launcher

Open the C:\UT\Unreal.dsw workspace with Visual C++.

For each SourceSafe login prompt, click Cancel and No to avoid next prompts.

Rebuild each component by setting it's configuration as active using the Build > Set Active Configuration... menu from the main menu bar and make sure you select the Release configuration of the component.

Build the engine's components in the following order:

  • Core
  • Engine
  • Window
  • WinDrv
  • Render
  • IpDrv
  • UWeb
  • Fire
  • SoftDrv
  • Galaxy
  • Launch
  • Editor
  • UCC

The other display drivers are optional:

  • D3DDrv
  • GlideDrv
  • MeTalDrv
  • OpenGLDrv
  • SGLDrv

Launch a console with cmd.exe and compile all packages scripts:

cd C:\UT\System
ucc make
Testing the Game Engine

Copy System\Unreal.exe to System\UnrealTournament.exe.

Copy from the demo files :

  • Maps\*
  • Music\*
  • Sound\*
  • Textures\*
  • System\UnrealTournament.ini
  • System\UnrealTournament.int
  • System\User.ini

Run C:\Unreal\UnrealTournament.exe.

Does this works with the Game Of The Year edition? Guess what.

Building and testing the Game Editor

Launch Visual Basic and open the C:\UT\EdSrc\Unrealed.vbp project file.

Build the editor executable by using the File > Make EXE file menu from the main menu bar and save it to C:\UT\System\UnrealEd.exe.

Run C:\UT\System\UnrealEd.exe.

Building and testing the New Game Editor

Open the C:\UT\Unreal.dsw workspace with Visual C++.

Build the UnrealEd project.

Run C:\UT\System\NewEd.exe.


FAQ

Why build with the Release configuration profile?

Releases:

  • 0.82
  • 0.83
  • 0.84a

Based on the SRC\DOC\!README.TXT document, there are two projects configurations:

Release: Optimized version of Unreal for general development use.

Debug: Debug version of Unreal, for use in the VC++ debugger.  Note that the debug version is
too damn slow to be usable for non-debugging purposes.

We hardly ever use the debugger while working on Unreal.  The GUARD/UNGUARD mechanism we use
shows the calling history whenever a crash or critical error occurs, so we track down errors
from the release version.  It should also be noted that Visual C++'s debugger is highly unstable
and tracking down bugs in it is an interesting lesson in the Heisenberg principle.

Errors while building the Unreal Editor

Releases:

  • 0.82
  • 0.83
  • 0.84a

If you have a Can't find project or library error on the Public Server As UnrealEdServer line, it is because this is the Unreal Server that registers the OLE type library.

So run Unreal first, then try building the Editor EXE again.

Errors while running the Game or Editor

FGlobalRender::DrawWorld protection fault

Releases:

  • 0.84a

Read again the section about building the Engine and make sure you commented the offending line. Otherwise, you may get the following error:

Unreal has encountered a protection fault!

FGlobalRender::DrawWorld
<- FUnrealEngine::Draw
<- UCamera::Draw
<- FWindowsCameraManager::ResizeCameraFrameBuffer
<- FWindowsCameraManager::SetCameraBufferSize
<- WM_SIZE
<- FWindowsCameraManager::CameraWndProc
<- CameraWndProc
<- FWindowsCameraManager::OpenCameraWindow
<- UCamera::OpenWindow
<- FUnrealEngine::OpenCamera
<- FUnrealEngine::Init
<- CUnrealWnApp::InitializeUnreal
<- CUnrealWnDlg::OnPaint
<- CUnrealWnApp::InitInstance.

UNSERVER caused a general protection fault

Releases:

  • 0.86X on Windows 95, 98
UNSERVER caused a general protection fault in module <unknown> at 0000:00000941.

On solution is to set your Windows Display Properties with an High Color (16bit) color palette.

Errors while running the Gate Client

Releases:

  • 0.84a on Windows 95
Run-time error '-2135293924 (80ba001c)':

I don't know yet how to fix this error.

Releases:

  • 0.86X on Windows XP
Run-time error '-2147024894 (80070002)':
Automation error

Unreal tries to load the wrong OLE element on clicking OK when launching the dedicated server.

You can copy the missing files from the Visual Basic 5.0 setup disc as explained in the 0.86X section.

Another way to get around this error is to setup both Visual Basic 4.0 and 5.0 on your computer.


Changelog

  • 2023/01/18
    • Added Screenshots from Win98 successful builds of both the Game and Editor
    • Checked that 0.82 successfully build and run on Win95 and Win98
    • Added 0.83
  • 2023/01/19
  • 2023/01/20
  • 2023/01/21
    • Added some info to build Gatekeeper on Windows 95
  • 2023/01/22
    • Added Unreal Tournament 99 v400