| 
            
             Report bugs to: unreal224@epicgames.com.
            If you're experiencing a crash, please attach a copy of your log
            file: \Unreal\System\Unreal.log to help us troubleshoot. 
            Compatibility
            The Unreal 224 patch is compatible
            with the following commercial versions of Unreal:
             
              - Unreal 200 (English): This
                comprises all boxed retail copies of Unreal in North America.
              
 - Unreal 200-209 (International):
                All boxes retail copies of Unreal in Europe, Australia, and Asia
                in English, French, Spanish, German, and Italian.
              
 - Unreal 3dfx OEM version 223
                (Bundled with 3dfx Voodoo3 boards).
 
             
            Versions of Unreal bundled with
            hardware between version 209 and 221 are not compatible with the
            patch. 
            It's safe to install 224 on top of
            previous Unreal patches.  The 224 patch replaces any old files
            that need updating. 
            224 should be compatible with all
            user-created maps, texture sets, sound files, and music files. 
            224 is not compatible with past user mods (.u files) or maps which
            rely on mods for operation; these mods will need to be recompiled,
            as described on the Epic
            Unreal Tech Page. 
            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
 
             
           |