| This article is a stub. You can help the Unreal Wiki by expanding it.|
What needs to be done: Add OldUnreal patches and release dates.
|The following is a meta-article, which explains a concept which usually falls out of one of the wiki's categorizations, yet it's still important to explain something.|
Here's the changelog of the different versions of Unreal.
Version 200 Edit
Release date: May 22, 1998
- This is the initial retail version first shipped to stores.
Version 209 Public Beta Edit
- 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 216 Public Beta Edit
Known issues Edit
- 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 Edit
- Kickass Creative Labs Sound Blaster Live support
- Latest Unreal OpenGL support
- More AMD K6-2 / 3DNow! optimizations
- Intellimouse support on Win95
- Improved play on low-bandwidth connections (still not the ultimate, but it's a step in the right direction).
- Better, faster GameSpy support.
- 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.
- 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)
- C style 'continue' keyword
- Java style "new" function for creating new objects
- Improved TcpLink, UdpLink support for Internet mods
- Faster loading time
- Significantly lower memory usage
- Misc UnrealEd improvements from Mark Poesch @ Legend Entertainment
- Improved "undo" support
Version 217 Public Beta Edit
- 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 218 Public Beta Edit
- 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!
- 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:
- You experience delays of 1 second or more between when you press the FIRE button and you see your shot fire.
- The message "Bandwidth Saturated, Lower Your Net Speed" appears.
- You appear to "teleport" around haphazardly, rather than move smoothly through the level.
- 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.
- 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.
- 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.
- 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.
Hardware Support Edit
- 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).
- 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).
- Fixed sound cutting out sometimes when switching fullscreen resolutions
- The "reliable" and "always" keywords are ignored for replicated variables, because the network code guarantees eventual delivery.
- 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
- New GameSpy Lite from http://www.gamespy.com/
- Now shows server game type and ping time
Version 219 Public Beta Edit
Internet Play Edit
- 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 Edit
- Fixed potential crash when players are downloading files.
LAN Play Edit
- Fixed message "Connecting to unreal://0.0.0.0/" without ever connecting.
- Fixed joining game from "find local servers menu" not connecting.
- 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.
- Fixed crash on exit.
Version 220 Public Beta Edit
Latest Hardware Drivers Edit
- DirectX 6.0 and Direct3D driver downloads.
Improvements for Gamers Edit
Multiplayer Improvements Edit
- 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 Edit
- 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..
- 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".
- "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 Edit
- 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 Edit
- 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.
- 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 Edit
- 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 Edit
- 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.
- 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.
- Added "LiftTrigger" variable to LiftCenter and LiftExit.
- Added "ExtraCost" to NavigationPoint.
- Added "bOneWayPath" to navigationpoint.
Changes and Improvements for Script Programmers Edit
Script Compiler Edit
- 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.
- 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.
- Fixed TravelPreAccept/TravelPostAccept not being called.
- 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.
- 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 Edit
- 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 Edit
- 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.
- 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.
- The scoreboard has been rewritten to take advantage of PlayerReplicationInfo. It will now obtain score information as it is replicated by each client.
- 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 Edit
- 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 Edit
- 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 GetNextInt( string 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 Edit
- 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 Edit
- 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 Edit
- 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 Edit
Localization Support Edit
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 Edit
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 Edit
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 223 Edit
Fixes and Improvements Edit
- Fixed new problem in 220 where users who had performed a partial install of Unreal (with maps kept on the CD) didn't see any maps listed in the Deathmatch/BotMatch menus.
- "FOV #" command now takes effect permanently.
- Minigun and stinger sounds are now properly replicated to all clients.
- Botmatch skill bug in 220 fixed.
- Lookspring fixed.
- Kevlar vest pickup sound and dead guy in Vortex Rikers sound fixed.
- Bubbles now float properly on clients.
- Fixed projectiles not appearing on client side because local player ran into them.
- Carcasses are now simulated for smoother death animations, and all the nali and skaarj gibs are properly replicated.
- Fixed bug where quick taps of fire button didn't register in network games.
- Slightly reduced damage multiplier in Hardcore mode (150% instead of 170%), and rocket damage radius in Classic mode is back to the old value.
- Fixed razorjack sound crash problem with 3D sound.
- Fixed problem where the editor light torches were showing up in some levels in network play.
- Fixed client prediction going through portals.
- Eliminated menu bar when playing in windowed mode.
- Fixed inability to join a network game while you are running a non-dedicated server.
- Fixed menu bar disappearing when switching from Glide to the software renderer.
- Fixed potential crash while taking screenshots on 3dfx.
- Works properly on Voodoo3. Voodoo3 support was broken in Unreal 209 through 220.
OpenGL Beta Driver Edit
- New, rewritten OpenGL driver.
- Works quite well on the Riva TNT. Important: you need the latest TNT Detonator drivers from NVidia's web site for this to work.
- Other cards are in the early testing phase now. Don't expect a lot. We can't provide support for getting Unreal OpenGL running on other cards or answer questions about them at this time.
- Fixed remote administration (didn't accept password).
- Fixed administrator
- Fixed dedicated server potential crash when player limit is reached.
userini=<inifilename>command-line parameter to set user configuration file.
- Added server-side demo recording - currently in alpha state. You can record demos in botmatch or on a dedicated or non-dedicated server. Demos can be played back from any perspective.
- The Unreal Server Browser (UBrowser) is included.
- Fixed "Unreal -make" lockup with class names over 32 characters.
- The new keyword "native" is now synonymous with "intrinsic", and the Unreal 1 scripts have been updated to reflect this.
- In network play, on the client side, static functions are always called locally and never sent across the network, regardless of the calling actor's replication statements.
- Fixed compiler logic error which caused bool variables within structs to appear to always be zero.
- Removing "abstract" keyword from a class and recompiling now works.
- Player classes with no mesh no longer hard-coded to use name "Spectator" in mesh menu. Instead, the pawn MenuName attribute is used as the string representation for all playerpawn classes.
- All strings are now dynamically sized, meaning there is no longer any limit to their length. Declaring strings with the syntax "string" is now obsolete; just use "string".
- The Chr() function converts generates a one-character string whose first character is the ASCII/Unicode value you specify. Exception: Chr(0) returns a zero-length string.
- The Asc() function returns the ASCII/Unicode character code of the first character of the string you specify, or 0 if the string is empty.
array<type>construct for defining dynamically sizable arrays. This is only implemented for configuration loading and C++ access; dynamic arrays aren't accessible by script yet.
- Fixed broken EDITACTOR console command.
- Actor class now contains MultiSkins array enabling multiple skins to be applied to meshes. Not used in any Unreal 1 classes, though. Will be exploited in Unreal Tournament.
- New string concatenation operator "@" concatenates two strings (like "$") but adds a space between them (unlike "$").
- Reduced virtual memory usage (was unreasonably high).
- Progress window is now updated as the patch installs.
- New standalone installer.
- Supports selectable groups.
- Supports partial installation.
- Does not yet support user mod installation. Probably will happen along with Unreal Tournament.
C++ General Changes Edit
- Changed "INTRINSIC" macro to "DECLARE_FUNCTION", and "AUTOREGISTER_INTRINSIC" to "IMPLEMENT_FUNCTION" (to follow the convention set by DECLARE_CLASS and IMPLEMENT_CLASS).
- Changed all occurances of "intrinsic" to "native" (moving toward the Java convention).
- Moved FBitReader, FBitWriter archives to Core.
- Improved generality of appCeilLogTwo.
- Command-line compiler is now invoked with "ucc make" rather than the old "unreal -make". This is now a non-windowed, command-line application. You can run it as an external tool through Visual C++, and direct the outputs to the results window. This is the preferred mode of operation, because the compiler now outputs error messages in Visual C++'s standard error format, enabling you to double-click on the error message in the VC++ IDE and jump right to the error.
- The compiler now generates warnings when you do things that are dangerous but non-fatal, for example using "#exec" commands to import non-existant files.
- All UnrealScript strings are now represented internally as FString structures, which manage dynamic, variable-length, infinitey-expandable strings. This impacts all auto-generated C++ headers such as EngineClasses.h.
- Static functions are always called in network play, regardless of their replication and simulatedness.
- Warning: Strings greater than approximately 400 characters won't be replicated in network play. They won't fit in packets.
- UnrealScript interpretter has been modified, improved, and optimized to handle data types which need to be dynamically constructed and destructed on the stack frame, such as dynamic strings (now) and dynamic arrays (coming later).
- Improved and generalized TMap, a template for mapping arbitrary keys to arbitrary values. Considering exposing to UnrealScript later.
- appAlloca works like the ANSI C alloca. Useful for allocating temporary memory on stack.
C++ Unicode Changes Edit
- All the C++ code now compiles under Unicode by default.
- ANSICHAR=8-bit signed ANSI character.
- UNICHAR=16-bit unsigned Unicode character.
- TCHAR=Either ANSICHAR or UNICHAR depending on compile options; currently always UNICHAR.
- All of the Visual C++ projects define UNICODE and _UNICODE.
- Since Windows 95/98 do not support most of the Windows API Unicode entry points, there are a lot of checks of the variable GUnicodeOS which is 0 when running the Unicode version of Unreal on a non-Unicode OS like Windows 95/98. There are also macros like TCHAR_CALL_OS which calll the appropriate ANSI/Unicode function depending on OS support.
- ATcpLink and AUdpLink text exchange functions use ANSI text exclusively.
UnrealScript Windowing System (UWindow) Edit
- The UWindow windowing system is included.
- The UBrowser (Unreal Server Browser) provides a good example of how to use the UWindow classes, should mod-makers be interested in the UT user interface system.
Version 224 Edit
Release date: May 3, 1999.
Known Issues Edit
- If you enable "Advanced Options / Audio / Use3DHardware" through the menus and you have a 3D sound card with Aureal A3D 2.0 drivers, you won't get any sound acceleration. A3D 2.0 (geometric environmental audio processing) support is still in development and testing, and will come later, but the temporary side effect is that 1.0 support is disabled.
- When the The Internet server browser (Multiplayer / Join Game), the frame rate is fairly slow in the software renderer and on 3dfx Voodoo1 class cards, causing mouse movement to be unusually slow.
- There are still Visual Basic runtime issues with UnrealEd, where certain combinations of system DLL's and OCX's cause UnrealEd.exe to refuse to launch, or to crash under certain conditions in response to the user interface.
- NEC PowerVR support is not functioning in this version. Please use the software renderer for now.
Fixes and Improvements Edit
- Supports compressed S3TC textures (though there aren't any in Unreal 1).
- To record a demo, type DEMOREC filename at the console. Stop recording or playback with the STOPDEMO command. DEMOPLAY filename will play back the demo.
- The Unreal Server Browser (UBrowser) is included, and is available under Join Game in the Multiplayer menu.
- Actors were previously being ticked (updated) two times between initial spawn and rendering. Now they are only ticked once.
- Improved "OBJ REFS" console command not only shows who references the specified object, but also shows the shortest reference path from the "root set" to the object, so you can see why the object isn't being garbage collected. Very useful for tracking down extraneous objects in order to reduce memory usage.
- Now supports mod installation.
- Now supports mod uninstallation.
C++ General Changes Edit
- New data compression infrastructure is under development in FCodec.h.
- New UCommandlet base class for exposing new "command line applets" through ucc.exe. UCommandlet supports both C++ classes (see FCommandletMake for example) and UnrealScript classes (see CommandletHelloWorld.uc for example). Read the comments in CommandletHelloWorld.uc for information about how to implement these.
- "ucc master" master disk builder (not yet documented).
- Localized installer/uninstaller.
- Improved and generalized "texture detail" options. When importing textures with "#exec texture import...", the new LODSET= option specifies which detail set the texture should belong to: 0=always render at its highest detail, 1=render with user's "world detail" setting, 2=render with user's "skin detail" setting.
- Meshes now support full level-of-detail rendering; see the Level of Detail Technology page for info.
- New TrueType font importing support.
- Improved and generalized UFactory/UExporter object importing and exporting; not currently being used for much, but will be a centerpiece of the upcoming UnrealEd rewrite.
- File management is now handled 100% through the GFileManager object; file reading and writing now is done through FArchive objects returned by FFileManager::CreateFileReader and FFileManager::CreateFileWriter. The old appFopen, appFclose, etc functions have been eliminated. This extends Unreal's file reading and writing in a very general way; now all operations dealing with internal and external storage use the same interface, making modules more interchangable. Going 100% with this approach could be a painful upgrade for code which is very external file-intensive, but you can always
#include <stdio.h>and use the ANSI file functions if pressed for time.
Unreal Server Browser Edit
- UBrowser filters servers into various pages based on gametype, and compatibility with 224. While the majority of servers are of older versions of Unreal, it might take 30 seconds before you see any servers listed in the 224 or gametype-specific tabs. Check the "All Servers" tab to see all servers including incompatible older versions of Unreal.
- Press your F5 key to refresh the server list, or right click and choose "Refresh".
- You can disable the Unreal server browser and use the old multiplayer menus by commenting editing your Unreal.ini and removing the semicolon at in the line which reads ";Console=Engine.Console", and adding a semicolon in the front of the line which reads "Console=UBrowser.UBrowserConsole".
- You can configure which tabs appear on the server browser (and what they contain) by editing your Unreal.ini. The [UBrowser.UBrowserMainClientWindow] section contains all the parameters which describe what appears in which tab.
- To change the number of servers which are pinged simultaneously from the default of 10, add an entry in Unreal.ini like the following:
Version 225 Edit
Known Issues Edit
- After setting Advanced Options / Audio / Use3DHardware to enable A3D or EAX support, you must exit and restart Unreal for the changes to take effect.
- To take advantage of A3D 3D sound support, you must have the latest version of A3DAPI.DLL (currently version 2.14) in your \windows\system directory for A3D support to work. The latest A3D drivers can be found at A3D's Web Site.
Fixes and Improvements Edit
- Fixed some user maps from past versions of Unreal refusing to load in new versions.
- Optimized cache management code.
- Fixed problem with software renderer playing in a window of size (0,0) under certain circumstances.
- Improved Direct3D support, optimized state changes.
- Direct3D settings are now accessible in "advanced options".
- Fixed occasional texture corruption with antialiased fonts on 3dfx.
- Creative Labs EAX support is back.
- Aureal A3D support is back.
- Restored keyboard and joystick response to their original settings.
- Server admins can disable map downloading on their servers (Advanced Options / Networking / TcpIp Network Play / AllowDownloads)
- Optimized network code.
- Network visibility traces are now faster and are performed less frequently.
- Faster variable replication.
- Lots of algorithmic optimizations in the net code.
- Fixed potential actor collision checking crash bug in network play.
- Improved intermittent variable replication problem due to incorrect replication condition evaluation caching.
- Generalized network serialization of UProperties.
- Smarter packet-size management; improves client smoothness at modem netspeeds.
- STAT NET now shows rpc/c.
- Improved vector quantization compression rate.
- New Actor.NetUpdateFrequency speeds up replication of seldom-changing actors like ZoneInfo's and PlayerReplicationInfo's.
- Fixed potential crash with switch() statements on strings.
- Fixed potential GetNextInt lockup at end of list.
- Fixed AI lockup in negative-gravity zones.
- Fixed self-extractor problem with temp directory names containing spaces.
- New SaveIni= option for saving portions of the .ini file.
C++ Changes Edit
- CreateFileReader and CreateFileWriter take bitflags parameter instead of a bunch of booleans. New capabilities.
- Fixed appCeilLogTwo bug returning incorrect results on inputs of 256^n+1.
- New "ucc conform" tool.
Version 226 Edit
Release date: July 17, 2000.
Known Issues Edit
- People having trouble starting UnrealEd (runtime errors or other trouble) should get this fix from the web: UnrealEdFix4.exe.
- Unreal's Direct3D support is only viable on high-end 3D accelerators such as the NVidia Riva TNT/TNT2, ATI Rage 128, Matrox G400, and S3 Savage4. It is slower than the software-renderer on older cards like the Intel i740, ATI Rage Pro, Riva 128.
Fixes and Improvements Edit
Direct3D support Edit
- Newly rewritten code.
- Many improvements and fixes.
- Faster texture management.
- Improved support for switching between windowed and fullscreen rendering.
- Improved dedicated server performance.
- Fixed packet id wraparound error causing client-side weapons to disappear.
- Fixed packet size overrun causing packets to be lost.
- New DISCONNECT and RECONNECT console commands.
- New server -profilestats command line option for performance monitoring.
- .EAX hardware 3D sound acceleration is back
- A3D 2.0 hardware 3D sound acceleration is back
- We now support .wav files which use the mono 4-bit-per-sample ADPCM format. Good for voice compression.
- ↑ "Unreal Version 224 released". Unreal.com (May 3, 1999). Archived from the original on October 12, 1999. Retrieved May 23, 2019.
- ↑ "Unreal 226 Patch Released". Unreal.com (July 17, 2000). Archived from the original on August 15, 2000. Retrieved May 23, 2019.
- "Obsolete Versions of Unreal". Epic Games. Archived from the original on February 20, 2002. Retrieved May 23, 2019.
- "Unreal Release Notes". Epic Games. Archived from the original on October 6, 1999. Retrieved May 23, 2019.