Obsolete Versions of Unreal
The following patches are out of date, but are provided in case anybody needs
them. Note: Each patch is complete and self-contained, so you don't need to
download more than one patch.
Unreal: Version 220 Public Beta Patch
Installation instructions
To install a patch: Download it. Run WinZip to extract the files. Exract the files
into your c:\Unreal\System directory, replacing the existing
versions of the files. If you've installed Unreal into a directory other than
c:\Unreal, then extract the files into the System subdirectory off of your
custom Unreal directory.
The first time you run the upgraded version of Unreal, you may be asked to
put your Unreal CD in the drive. This step is required because files must
be loaded off the CD during the patching process. Make sure you have your
original Unreal retail CD handy before installing the patch.
After installing the 220 patch, you will need to reconfigure your Unreal
settings such as your keyboard configuration, 3D hardware, and resolution.
However, your savegames will not be lost; savegames from previous versions will
work properly.
Warning: Patches designated as "Public Betas" have not undergone rigorous
internal testing and are for enthusiasts who are comfortable using experimental
software. After the patches have settled down into a stable new version,
an official (non-beta) release will be made.
Reporting Bugs
Report bugs to: unreal220@epicgames.com. If you're
experiencing a crash, please attach a copy of your log file:
\Unreal\System\Unreal.log to help us troubleshoot. This is not a tech
support email address; the Unreal team reads all bug reports and looks into
them, but we can't guarantee an individual response.
Download Sites
Latest Hardware Drivers
DirectX 6.0 and
Direct3D driver downloads.
Improvements for Gamers
Multiplayer Improvements
- Player movements are now compressed with a predictor-corrector scheme,
allowing for smoother movement of enemies.
- New multiplayer game styles, including Classic, Hardcore, and Turbo, can
be selected from the game options menu.
- Fixed player and spectator counts.
- Fixed becoming ghost when killed while starting to feign death.
- Spectators can now see the scoreboard.
- Spectators can cycle through other player views by pressing fire, and
return to their own view using the alt-fire button.
- Spectators can go through portals.
- Fixed support for multiple skin .int files (now can add user skins in new
utx files without breaking compatibility).
- Improved team scoreboard.
- Skin and mesh selection always remembered.
- Spectators not shown in the scoreboard.
- Skaarj player swimming and dodge roll animations played correctly.
- In team games, players properly start at appropriate playerstarts in
levels where playerstarts are marked for specific teams.
- Fixed King of the Hill gameplay bugs.
- Fixed jumpboot respawning problem.
Internet Play
- Improved bandwidth usage for temporary effects like projectiles.
- Player movements are now compressed with a predictor-corrector scheme,
allowing for smoother movement of enemies.
- Movers are simulated client-side, and players based on movers have their
location updated by the server relative to the mover position. This
allows smooth mover movement prediction on the client.
- Optional game password can be set to limit access to a server.
Clients can enter the administrator or game password from the player selection
menu.
- Fixed "little chess piece" cheat and some other security holes..
Server
- Fixed remote administration (see Server
Tips for information).
- Remote administrators can finally execute console commands on the server.
- The "AllowAdmin" setting is no longer used. To make your server
remotely manageable, just set the "AdminPassword" in "Advanced Options / Game
Settings".
Rendering
- "TIMEDEMO 1" command provides frames-per-second statistics at any time. If
started during the flyby sequence, it provides statistics for exactly one loop
of the flyby, for comparison to other systems. "TIMEDEMO 0" turns it
off. Thanks to Jack "Mek" Porter for integrating the code.
Player Controls
- bFreelook
- FOV snaps back to modified value.
- Optional mouse smoothing.
- GetWeapon console command can be used to bind any key to a specific
weapon.
- Added weapon flash effects, and option to turn them off.
- Fixed centerview problem.
Single Player
- Fixed problem where splashes didn't play on some levels.
- Fixed problem where a healing zone reduced your health to 100 if it was
above 100.
- Fixed problem where pickups like the shieldbelt were de-activated after a
level change.
- Improved the "Advanced Options" screen.
- Fixed problem with scuba gear interfering with armor.
- Crucified nali is solid.
BotMatch
- Bots have greatly improved understanding of how to use lifts, and how to
use triggered doors and lifts.
- Bots never get frozen after dying.
- Fixed bug where bots would disappear from the game.
- Bots have a better understanding of how to do the ASMD combo move and
other weapon special moves.
- Improved navigation code for swimming, jumping up onto ledges.
Coop games
- Listen server player weapons travel from level to level.
- Fixed weird movement problem in open areas on fast machines during coop
play.
- Translocator works properly in coop play, and everyone gets one.
Improvements for Level Designers
LevelInfo
- Added bHumansOnly to specify whether only "human" player pawns are allowed
in this level.
- Added bNoCheating to specify whether certain client actions, like turning
lighting off or using a non-standard console, are allowed.
ZoneInfo
- Added bNoInventory to specify whether inventory is allowed to exist in
this zone. If true, then any inventory in this zone not being carried
by a pawn is destroyed.
AI
- Added "LiftTrigger" variable to LiftCenter and LiftExit.
- Added "ExtraCost" to NavigationPoint.
- Added "bOneWayPath" to navigationpoint.
Changes and Improvements for Script Programmers
Script Compiler
- When defining a class that contains configurable variables, you can now
specify whether the configuration should be stored in Unreal.ini or User.ini:
- class MyClass expands SuperClass config(System); // Class should use
system configuration (Unreal.ini) -- the default.
- class MyClass expands SuperClass config(User); // Class should use user
configuration (User.ini).
- class MyClass expands SuperClass config(MyMod); // Class should use a
mod-specific configuration file named "MyMod.ini".
- Default "System" variables are stored in Default.ini.
- Default "User" variables are stored in the new file DefUser.ini.
- You can now refer to literal objects by by their package name, for example
texture'UnrealI.Skins.MySkin' -- this used to cause a compiler error.
Networking
- Added bNetTemporary for temporary, simulated actors like projectile:
Improves bandwidth usage. If you set bNetTemporary=true for any of your
projectiles or special-effects actors, you need to destroy the actor on the
client side, either by setting a LifeSpan, or destroying it in a simulated
function. In 219, all actors were destroyed automatically by the
server. In 220, bNetTemporary=true actors must be destroyed by the
client.
- Use bNetOptional for purely gratuitous effects that can be skipped if not
enough bandwidth is available, such as smoke puffs. bNetOptional=true
actors are only sent to the client if there is spare bandwidth; they never
suck bandwidth away from bNetOptional=false actors.
- Use bAlwaysRelevent to force an actor to always be sent to the
client. For example, we have bAlwaysRelevent=true on our
PlayerReplicationInfo actors, so they are always replicated to the
client.
- Fixed PreLogin function being passed just the ?option=value strings rather
than the full URL.
Single-player
- Fixed TravelPreAccept/TravelPostAccept not being called.
Mods
- You can now place "exec" functions in GameInfo subclasses, and Inventory
subclasses. "exec" functions are searched for in the following order,
with the first match called and the others ignored: The PlayerPawn actor
itself, then all the items in the player's inventory, then
Level.GameInfo. In addition, you can use GameInfo "exec" commands
through the Unreal server console.
- The menu lists for available game classes, player classes, bot classes,
and weapon classes are now loaded each time the menu is opened from the .int
files. To add new items to these lists, reference them in a .int file
associated with your mod.
- The GetNextInt() intrinsic function is used to read entries from the .int
files.
- Mod makers can now import Windows fonts for use in HUDs. This only works
well for true-type fonts. Use an exec command with this syntax: #exec Font
ImportTTF Name=MyFont Font="Arial" Height=12 . When the package file is
rebuilt with Unreal -make, a new font Texture'MyFont' which is 12
pixels high will be available. The font is monochrome and can be set to any
color when it is drawn on the HUD. Questions on this to jack@epicgames.com.
- You can now have a custom .ini file for your mod's configuration; see the
"Script Compiler" notes above.
Separation of player and system configuration
- The new User.ini now contains all user-specific Unreal settings such as
the keyboard and mouse configuration.
- Unreal.ini only contains system-wide options.
- Default.ini contains default values for everything in both User.ini and
Unreal.ini.
- If you're going to a LAN party and want to bring your configuration with
you, just bring User.ini.
Heads Up Display
- The HUD is now responsible for drawing its owner's weapon. A local
player's HUD RenderOverlays() function is called every tick. It calls
the RenderOverlays() function for its owner's weapon (and potentially other
actors). RenderOverlays() is called before the view flash and fog is
applied, unlike PostRender(). As a result, InvCalcView() was no longer
needed and was removed from Inventory.
Messages
- ClientMessage has been rewritten to take an optional message type and
optional message beep boolean. The message type can be used to determine
how the message is displayed on the screen. See
Engine.Console.PostRender for information.
- Engine.Console.PostRender has been moved from C++ to UnrealScript.
- The console now asks the gameinfo object to handle messages before it
displays them. A GameInfo class can employ DisplayMessages(Canvas C) to
paint messages instead of the default Console.
- There are now weapon based death messages. Weapon deathmessages are
coded strings that take the form:
%k killed %v with
the %w.
- %k is replaced with the killer's name.
- %o is replaced with the victim's name.
- %w is replaced with the killer's weapons name.
- The actual order of the % codes in the deathmessage is irrelevant.
Scoreboard
- The scoreboard has been rewritten to take advantage of
PlayerReplicationInfo. It will now obtain score information as it is
replicated by each client.
Menus
- Fixed several localization problems with menus, including support for
localized yes/no characters.
- The menus have been restructured to increase code reuse.
- New functions for fading in strings of text are available in
UnrealShortMenu.
Artificial Intelligence
- The VisNoReachPaths[] array in NavigationPoint provides a list of
NavigationPoints which are visible but not directly reachable from the current
NavigationPoint.
- The NavigationPoint function DescribeSpec() is now a useful way of getting
information about a reachspec ( which describes the conditions for movement
between two actors).
- The RouteCache[] array in Pawn provides a list of the NavigationPoints
along the best path determined by the most recent FindPathTo() or
FindPathToward() call. The first NavigationPoint is the one returned by
the function call, followed by the successive waypoints toward the goal.
Actor features
- TransientSoundRadius is a new Actor attribute which specifies the default
radius for sounds played by a given actor using PlaySound()
- ConsoleCommand() intrinsic function implemented for Actor, allowing
scripts to call console commands even when there is no local playerpawn (e.g.
a dedicated server).
- FellOutOfWorld() is a new event called by the physics if a falling actor's
location becomes invalid (outside of the level).
- intrinsic final function string[64] GetNextInt( string[64] ClassName, int
Num);
- Use bGameRelevant to specify if an actor class is always relevant for a
given game.
- When an actor becomes the ViewTarget of a player, its BecomeViewTarget()
function is called.
- The string representation of actors now includes their package prefix,
i.e. "Engine.PlayerPawn" rather than "PlayerPawn". The GetItemName()
function returns the a string with the package prefixes removed.
GameInfo features
- The localized GameInfo attribute GameName contains a human readable string
representation of the game type's name.
- The GameInfo function PlayerJumpZScaling() is used to modify the player's
jumping ability for a specific game type.
- The GameSpy protocol code now calls GameInfo GetRules() to ask for
gametype specific rules that should be sent to the querying client. This
will allow mod authors to add new fields to GameSpy. For more
information, see GetRules() and the GameSpy Open Protocol guide.
- GameInfo information that is regularly replicated to the client has been
consolidated within a GameReplicationInfo class. This class contains
information regarding the server's administrator, gamespy information, message
of the day information, and so forth. Much of this information is
configurable from Advanced Options.
Pawn features
- Pawn information that is regularly replicated to the client has been
consolidated within PlayerReplicationInfo. All bots and human players
have a related PlayerReplicationInfo class. This contains information
such as the player's name, score and so forth. All PlayerReplicationInfo
classes are bAlwaysRelevant to all clients. This means that each client
in a netgame has a subset of information regarding all players in the
game. (Used in scoreboard and enhanced HUDs.)
- The bIsHuman attribute of pawns specifies whether a pawn class should be
considered human (for game types which care about whether a pawn is human or
not).
- The localized Pawn attributes MenuName and NameArticle contain the human
readable name of the pawn type.
- The UpdateURL() function updates the current URL with the new option and
value, and optionally also updates the saved DefaultPlayer config.
- The ClientInstantFlash() can be used to cause a one frame screen flash.
- The Sniper rifle zoom has been moved to PlayerPawn. StartZoom()
begins a zoom, StopZoom() stops zooming, and EndZoom() unzooms.
- The PlayerRestartState attribute specifies the initial state for players
when they enter a level or restart after dying..
Inventory features
- The localized Inventory attributes ItemName and ItemArticle contain the
human readable name of the inventory type.
- The ProjectileClass and AltProjectileClass attributes are now
configurable.
C++ Changes And Improvements
Localization Support
I'm incrementally adding support for Unicode to the engine. The TCHAR
definition is CHAR when compiling in ANSI mode, and WORD when compiling in
Unicode mode. The TEXT("str") macro emits a string either in Unicode or
ANSI depending on the compilation mode. See UnBuild.h for various
Unicode-related definitions. Unreal doesn't yet run successfully
under Unicode yet, because the string serialization needs improving, and Windows
calls need to thunk down to ANSI on Win95/98, and UFont objects don't support
multiple pages yet. We expect full Unicode support to come together over
the coming months.
Cleanup of Core
I'm improving the portability of the code by more cleanly separating
functions with dependencies on the ANSI C library (in UnFile.cpp) and Windows
(in UnPlat.cpp).
Multiple player configurations
Separating User.ini out of Unreal.ini is the first step in evolving Unreal
towards supporting multiple player configurations. The goal is to
eventually allow storing mutiple users' settings by name.
Version 219 Public Beta
Report bugs to this email address: unreal219@epicgames.com. If you're
experiencing a crash, please attach a copy of your log file:
\Unreal\System\Unreal.log to help us troubleshoot.
Download Sites
Internet Play
- When the server switches levels, all players were thrown into the holding
cell, but don't properly rejoin the next level. Fixed.
- Entering a server as a spectator then typing "suicide" on the console
caused the spectator to be visible to players as a little tiny chess pawn.
Eliminated.
- "RMODE" command is no longer allowed during network play (potential unfair
advantage).
- Fixed object updates becoming erratic after 30+ minutes in the same level.
Internet Server
- Fixed potential crash when players are downloading files.
LAN Play
- Fixed message "Connecting to unreal://0.0.0.0/" without ever connecting.
- Fixed joining game from "find local servers menu" not connecting.
UnrealScript
- Fixed crash calling static functions.
- Added function InternetLink.IpAddrToString
- Implemented ELinkMode MODE_Binary in UdpLink, for mod authors who need to
implement binary UDP protocols.
Editor
Version 218 Public Beta
Report bugs to this email address: unreal218@epicgames.com. If you're
experiencing a crash, please attach a copy of your log file:
\Unreal\System\Unreal.log to help us troubleshoot.
Download Sites
Important tips
1. Unreal 218 is NOT network-compatible with previous versions of Unreal. You
can only connect to servers and other players running Unreal 218 or later!
2. Quality network play totally depends on Unreal knowing how much bandwidth
is available on your Internet connection. There are two ways to set your
bandwidth:
In the "Join Game" menu, select "28K Internet", "56K Internet"
or "LAN".
Or, at any time during gameplay, use the NETSPEED command. For
example, for a 28.8K connection:
- Press TAB to bring up the console
- Type the following: NETSPEED 2600
- Press ENTER
Our testing has found the following NETSPEED settings to work best:
Modem Speed |
Excellent ISP |
Good ISP |
Poor ISP |
28.8K |
NETSPEED 2600 |
NETSPEED 2400 |
NETSPEED 2100 |
33.6K |
NETSPEED 3000 |
NETSPEED 2800 |
NETSPEED 2400 |
56.6K or higher |
NETSPEED 3500 |
NETSPEED 3000 |
NETSPEED 2600 |
If you see any of the following symptoms happen repeatedly while playing
Internet Unreal, you should lower your NETSPEED setting:
A. You
experience delays of 1 second or more between when you press the FIRE button and
you see your shot fire.
B. The message "Bandwidth Saturated, Lower Your Net
Speed" appears.
C. You appear to "teleport" around haphazardly, rather than
move smoothly through the level.
D. Your PING time (displayed in STAT NET)
starts increasing, or becomes unreasonably large.
The following PING
times can be expected:
- Modem connection: 200-350.
- ISDN or cable modem connection: 100-200.
- T1 connection (not saturated): 50-150.
- LAN: 30-80.
Some modem connections are considerably worse.
Add 100-200 msec if server
is in another country.
You tend to get 30% best ping times at night than
day, because the Internet is less saturated then.
3. While playing
Internet Unreal, press TAB, type "STAT NET", and press ENTER to bring up network
statistics. You can use these statistics to diagnose problems with your
connection:
- PING: Lag caused by Internet connection, in milliseconds. Lower=Better.
- CHANNELS: Number of actors the server is sending you.
- UNORDERED: Number of out-of-order packets received. If this number is not
zero, you likely have a bad Internet connection.
- PACKET LOSS: Percentage of packets lost. The lower the number, the better
your connection. If this number is frequently above 10%, try lowering your
NETSPEED.
- PACKETS/SEC: Number of packets sent and received.
- BUNCHES/SEC: Number of actor updates sent and received.
- BYTES/SEC: Number of bytes sent and received.
- NETSPEED: Your current NETSPEED setting.
4. For gameplay to perform acceptably, administrators running dedicated
Unreal servers need to use the following settings in Advanced Options /
Networking / TCPIP Network Play / MaxTicksPerSecond:
- For Internet servers: 15 to 25
- For LAN servers: 25 to 35
The higher the number, the more frequently the server updates the game
world--resulting in smoother gameplay, but also more network traffic.
5.
While this version should improve Internet play, we have more work to do in this
area before it's perfect. There will be several more patches.
Improvements & Fixes Since 217
Hardware Support
- Improved Glide support: Voodoo2 Dual-TMU, more stable Voodoo Rush &
Banshee support.
- Thanks to Jack Mathews @ 3dfx for the engineering help!
- Updated OpenGL support.
- New Direct3D support (alpha-test).
Networking
- More detailed "STAT NET" display
- Loss-free packet sequencing and retransmission (fixes disappearing weapon
problems)
- Bitstream packet compression
- Optimized file downloading
- Now handles packet loss much more gracefully
- Fixed potential forced replication and forced RPC cheat
- Added "NETSPEED ####" command
- Added "Bandwidth Saturated" detection during gameplay
- Clamp server MaxTicksPerSecond to reasonable 15-60 range
- Fixed servers not being recognized when more than one network adapter
installed (especially a problem with network cards and dial-up adapters
conflicting).
Audio
- Fixed sound cutting out sometimes when switching fullscreen resolutions
UnrealScript
- The "reliable" and "always" keywords are ignored for replicated variables,
because the network code guarantees eventual delivery.
UnrealEd
- Fixed script recompile possibly crashing on Scout.uc
- Fixed texture not being applied when adding/subtracting brush
- Fixed "rebuild lighting" creating weird colored shadow maps on maps with
movers
- Fixed "rebuild geometry" potential for crashing
- Fixed broken .t3d map importer
- Fixed broken music and sound exporting
GameSpy
Version 217 Public Beta (Download It)
Report bugs to this email address: unreal217@epicgames.com. If you're
experiencing a crash, please attach a copy of your log file:
\Unreal\System\Unreal.log to help us troubleshoot.
- Fixed ESC in intro level crashing games in the software renderer on some
machines.
- Eliminated chance of server crashing when player limit is exceeded.
- Disabled CD check, which was causing problems for some users.
- Fixed problems with 3dfx Voodoo Rush cards under some versions of Glide.
- Fixed volumetric lighting ranbow effects on 3DNow!
Version 216 Public Beta (Download It)
Report bugs to this email address: unreal213@epicgames.com. If you're
experiencing a crash, please attach a copy of your log file:
\Unreal\System\Unreal.log to help us troubleshoot.
Known issues
- When connecting to a network game through the "Join Game" menu, you
absolutely need to select your connection speed, either "Lan", "28K Internet",
or "56K internet". If you don't select your speed, you will probably
experience erratic performance.
- While this version should improve Internet play, we have more work to do
in this area before it's perfect...there will be several more patches.
- This patch is missing the latest 3dfx Voodoo2 dual TMU support. There are
some bugs that need to be worked out there.
Hardware support
- Kickass Creative Labs Sound Blaster Live support
- Latest Unreal OpenGL support
- More AMD K6-2 / 3DNow! optimizations
- Intellimouse support on Win95
Networking
- Improved play on low-bandwidth connections (still not the ultimate, but
it's a step in the right direction).
- Better, faster GameSpy support.
General
- Shaved a couple megs off the memory usage
- Further improved the loading time
- If Unreal is already running in the background, clicking on a web browser
link now redirects the existing copy of Unreal rather than launching a new
one
Bug fixes: Server memory leak when switching levels, sporadic dynamic
lighting crash, sporadic file loading crash on low-memory machines.
Server
- New server querying interface.
- Server now runs quietly in the background by default (a tray icon)
- Network statistics display & log to help us track down performance
problems that people report
- Unreal.ini ServerActors can now have parameters sent to them, i.e. for
launching multiple master server uplinks pointing to different IP addresses.
- Far lower memory usage (over 2X less memory in typical levels)
UnrealScript
- C style 'continue' keyword
- Java style "new" function for creating new objects
- Improved TcpLink, UdpLink support for Internet mods
UnrealEd
- Faster loading time
- Significantly lower memory usage
- Misc UnrealEd improvements from Mark Poesch @ Legend Entertainment
- Improved "undo" support
Version 209 Public Beta (Download It)
- Significantly improved Internet performance on 28.8K and 56K connections.
The should fix the uber-lag problem for most players, and improve performance
on 28.8K-56K modem connections. Performance is still far from silky
smooth, but this should get most people up and running with somewhat-decent
performance. We'll be doing a lot more optimizing, playing, and tweaking
of the Internet code over the coming weeks.
- 3dfx Voodoo Rush: Now supported in beta form. Still some known problems
with resolution switching.
- Cyrix processors: Fixed Unreal crashing at startup giving an "InitEngine"
error message.
- Aureal 3D audio: Fixed sound effects repeating and skipping.
- Creative Labs SB3D audio: Now supported in beta form. 4-speaker panning
and other cool effects.
- Network play: You can now download multiple package files (.unr, .utx,
.uax, etc) when entering a server. Previously, only the .unr file could be
downloaded, then the connect attempt aborted.
- Dedicated server: The CD is no longer required in the drive to launch a
dedicated server.
- Dedicated server: The "IpDrv" package is now server-side only, so it is
not version-checked against clients.
- Dedicated server: Supports multiple UnrealServers per machine.
- Windows: Fixed not being able to click on .unr map files to launch them
from long-filename directories.
- Windows NT: Switching in and out of 3dfx mode multiple times now works.
- UnrealEd: Fixed "Full rebuild" giving bogus error message in UnrealScript
#always directive.
Version 200
- This is the initial retail version first shipped to stores.
End