[an error occurred while processing this directive]
Unreal Version 224 Release Notes
Useful Information
Known Issues
- 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
General
- 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.
Video
- 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.
- Supports compressed S3TC textures (though there aren't any in Unreal 1).
OpenGL Beta Driver
- 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.
Networking
- Fixed remote administration (didn't accept password).
- Fixed administrator "Kick <playername>" crash.
- Fixed dedicated server potential crash when player limit is reached.
- Added "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. 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.
Scripting
- 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[255]"
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.
- New 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 "$").
- 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.
Installer
- 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.
- Supports mod installation.
- Supports mod uninstallation.
C++ General Changes
- 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.
- 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.
C++ Unicode Changes
- 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)
- 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.
Unreal Server Browser
- 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:
- [UBrowser.UBrowserServerList]
- MaxSimultaneousPing=5
End