Difference between revisions of "227 release notes/v227j"

From Oldunreal-Wiki
Jump to navigation Jump to search
Line 270: Line 270:
* (03/24/21) Fixed map travelled inventory to have their bHeldItem flag set to true.
* (03/24/21) Fixed map travelled inventory to have their bHeldItem flag set to true.
* (03/24/21) Added a new BSP surface flag 'invisible occluder' which works like an anti-portal surface to simply occlude view.
* (03/24/21) Added a new BSP surface flag 'invisible occluder' which works like an anti-portal surface to simply occlude view.
* (06/13/21) Added to DynamicCorona CoronaFadeTimeScale to control how fast the corona should fade in or out when pops in and out of view.
* (06/13/21) Added TriggerCorona which is a DynamicCorona that can be triggered on or off.
* (06/13/21) Removed duplicate TriggerLight actor from UnrealShare package.
* (06/13/21) Fixed players unable to walk inside warpzones.
* (06/13/21) Added simple collision model support for any meshes.
* (06/13/21) After making various emitter static arrays into dynamic arrays, made old mods functional with them.
* (06/13/21) Fixed an error with Actor.TraceSurfInfo which ended up crashing during APawn::ProcessLanded.
* (06/13/21) Added more safety checks and optimized ActorChannel management.
* (06/13/21) Allowed Actors and Pawns to perform physics outside world geometry if event FellOutOfWorld doesn't kill them.
* (06/13/21) Fixed a specific crash that could happen during client disconnection from server if exiting code would attempt to call a RPC function.
* (06/13/21) Added more validity checks to GarbageCollector.
* (06/13/21) Fixed a crash when attempting to load corrupted meshes.
* (06/13/21) Added option to MusicEvent to disable cross-level song changes (when using sub-levels).
* (06/13/21) Ported over from network fixes from UTv469: if packet loss prevented channel from closing it will be resent, made channels open in a sequential order to prevent client->server RPC call from switching actor refs on parms incase actor happens to get destroyed inbetween.
* (06/13/21) Made ScriptWarnings dump UnrealScript call stack to log (you can suppress this with Suppress=ScriptStack).
* (06/13/21) Made default objects use name 'Default' to more easily detect errors on error stack dump during crashes.
* (06/13/21) Added Texture.SuperGlow to make texture glow with some fog overlay with bright lights (for meshes).
* (06/13/21) Added support for floating point UV texture mapping for SkeletalMeshes.
* (06/13/21) Added PhysX option for Emitter particles to make them rigid.
* (06/13/21) Added particle fade style option (to make particles change style only while fading).
* (06/13/21) Added LevelInfo.MaxPortalDepth to control how many layers warpzones/mirrors/skyboxes can draw.

=== UI ===
=== UI ===

Revision as of 20:50, 13 June 2021

Below are the patch release notes for OldUnreal Patch 227 public beta 1. The list has been graciously provided from forum thread updates compiled by NeonKnightOA.

This is not a comprehensive list of changes; due to the nature of the project schedule and the small development team, numerous small changes may have gone under the radar. The below compilation is a list of all changes that were publically listed in release threads and public changelogs, or contained in Git commit messages since the project moves to a GitHub repository.


  • (03/03/13) Some fixes for SwFMod (FModEx) audio driver:
    • Fixed ambient sounds to use game volume and not play at max volume at all time.
    • Fixed so ambient sound effects with unknown sound source (net games) to stop sound once out of hearing distance (instead of keeping the sound until mapchange).
    • Fixed consolecommands GetMusicOffset, SetMusicOffset and GetMusicLen to use correct music offset values for modules.
  • (10/29/13) Switched in OpenAL from FMod Music output to libxmp. This player is not only free and open source (GNU LESSER GENERAL PUBLIC LICENSE), but better portable and is yet actively maintained unlike most other players. It also plays some tracker files "more correctly" than old FMod3. OGG playing is now done directly via ogg vorbis (BSD-License).
  • (10/29/13) Added CrossFading ability in OpenAL when using MTRAN_Segue.
  • (05/26/15) ALAudio:
    • added AL_METERS_PER_UNIT to ALAudio to be more precise with Unreal UU's
    • removed ALAudio.u as its not needed anymore for 227 but added EFX.u which is a separate package in case one wants to use customized audio effects instead of presets. This file is also independent from ALAudio.dll, means if you use it in your maps anyone can download the package even although not using or having ALAudio.dll (it won't work then of course but doesn't do any harm either). This will allow also any mapper to make use of ALAudio in other UEngine games without having dll dependencies (builds will follow soon). Thanks to Han for that change!
    • It also contains a couple of cleanups again and a new libxmp 4.3.8 (see http://xmp.sourceforge.net/ for update details, fixes/improvements).
  • (01/06/15) Added SpeechVolume setting (ALAudio, SwFMOD, Galaxy): It sets volume of all SLOT_Talk events, to set these separately if wanted and is giving a finer control for overall sound experience. In-game, usually monster sounds use it (grunt, death sounds etc.), but also the speech of the marines known from RTNP. Should be also helpful for example in dialog sequences in custom maps & mods.
  • (12/19/20) Anth: Fixed Galaxy audio accessing outside of memory bounds when playing some sound effects.
  • (03/24/21) Anth: Fixed choppy Galaxy/ALAudio playback.


  • (02/20/13) Added a hint system to UED2.1 for in game variables, which displays the content of the comment out of uscript. Simply right mouse click on any variable in the property window will open a messagebox with the corresponding help text. Left or right mouse button will close it again.
  • (08/16/13) UED2.1: added a switch in View Menu to enable/disable the lighticon in lightcolor feature.
  • (10/29/13) Added function to create a new UnrealED.ini from DefaultUnrealED.ini if the ini is missing. Behaves the same like Unreal or User.ini, can be used also in case the ini is messed up in some way, just delete the ini and let UnrealED create a new one.
  • (01/05/14) UED2.1: added export and batchexport for SkeletalMeshes.
  • (02/06/15) UED2.1: added rmb menu cut/copy and paste (on click position) for actors.
  • (06/06/15) UED2.1:
    • Changed in "Add Special" dialog Transparent to Translucent to fit the flag and added Modulated/AlphaBlend/Environment.
  • (07/20/16) UED2.1:
    • added it to create "exe name".ini and "exe name".log, while I have to admit I always hated to have UnrealEd.exe but Editor.log anyway. So in future it's UnrealEd.log as default.
    • also added UEDINI=bla.ini ability, to add as commandline parameter (or shortcut that is), for multiple setups.
  • (08/07/17) UED2.1: Enhanced Brush Scaling and Brush Stretching to Actor Scaling and Actor Stretching.
  • (11/11/19) Added to editor texture browser a right click option to compress/decompress textures and to add/remove mipmaps.
  • (11/11/19) Fixed StaticMesh simple collision model creator properly handle correctly different coordinate spaces between the mesh and builder brush.
  • (11/11/19) Made LevelInfo.TimeSeconds never save from editor to avoid unneccessary space wasted.
  • (11/11/19) Fixed editor to reset Runaway loop counter every frame so it wont eventually always fail to run UScript code in Editor.
  • (11/11/19) Fixed editor to properly handle certain Canvas functions in render callbacks (i.e: WorldToScreen, DrawBox).
  • (11/11/19) Improved add actor ontop of a mesh actor tool.
  • (11/11/19) Improved visuals for editor path network render.
  • (11/11/19) Added right click option for builder brush to transform current shape into a dynamic zone (and added brush shape as an option for dynamic zone shape).
  • (11/11/19) Made ed mesh browser 'show bones' tool also draw bounding sphere and bounds for vertex meshes. Made 'show bone names' tool show vertex numbers for vert meshes (to help mod devs find vert indices).
  • (11/28/19) Improved editor map rebuilder progress bar be more detailed.
  • (11/28/19) Enabled map builder progress bar 'Cancel' button to abort building.
  • (11/28/19) Added multi-threading support for BSP partitioning and light raytracing.
  • (11/28/19) Fixed editor not drawing icons on ortho viewports in Direct3D and OpenGL.
  • (11/28/19) Fixed an issue which made it impossible to assign to properties any objects with weird names (such as GenFX.Flarel~6).
  • (12/16/19) Fixed a bug when where selecting movers in some old maps warps them to different location (i.e: Trench).
  • (12/16/19) Added right-click option to replace actor while keeping same modifier properties.
  • (12/16/19) Altered BSP rebuilder to bake lights to zone leafs only to visible leafs, not based on distance alone (optimizes render and improves map performance in-game).
  • (01/04/20) Made editor save viewport coordinates with the maps.
  • (06/01/20) Fixed DebugLines to draw in editor too.
  • (06/01/20) Added to MeshBrowser a menu option to export mesh import lines to clipboard (incase you tweak them in editor).
  • (06/01/20) Made properties window automatically pop-up tooltip of the property when you hover the mouse over the line for a second.
  • (06/01/20) Fixed properties window to show correctly struct member values if multiple actors are selected.
  • (06/01/20) Fixed properties window color selection preview color if Alpha value was non-zero.
  • (06/01/20) Made edit constant variables red colored in properties window and made the textlines selectable so that you can copy the value to clipboard (such as Name or Class name).
  • (06/01/20) Moved all hidden (uncategorized) properties to a "Hidden properties" category in properties window, also color coded to red.
  • (06/01/20) Added an option (enabled by default) to make rotation angles show in radii angles (0-360 range) rather then UU angles (0-2^16 range). Setting is at: UseRegularAngles=False under [Core.System].
  • (06/01/20) Added an option (disabled by default) to allow Actor properties window close itself if no actors are selected. This is located at CloseEmptyProperties=True under [Core.System].
  • (06/01/20) Optimized Editor group browser (also added a second checkbox to lock actors, in order to keep them visible but have them unselectable).
  • (06/01/20) Added a warning if you try to open a map outside of working directory.
  • (06/01/20) Fixed so that maps that have missing packages to be allowed to be partially loaded (it will still give a map load warning at first and asks Y/N if you want to load anyway).
  • (07/14/20) Updated toolbar icons.
  • (07/14/20) Fixed LE_SpotLight/LE_StaticSpot to work correctly with light rebuild with static meshes.
  • (07/14/20) Added variable TargetLevelID for Teleporter/WarpZone/Trigger/Counter to link it up with a sub-level.
  • (07/14/20) Added Editor.EdGUI_XXX classes for creating custom editor windows in UnrealScript.
  • (07/14/20) Added a portal directional arrow for WarpZoneInfo to help identify what direction the portal is currently facing at.
  • (09/21/20) Fixed snap to grid buttons at bottom bar of editor to save changes to ini.
  • (09/21/20) Also made the icon buttons have more clear graphic when grid is disabled.
  • (09/21/20) Made Texture properties window update its own resolution when source texture res was changed in real time.
  • (09/21/20) Fixed a visual bug with Actor class browser when you try to create class under a native class and it fails.
  • (09/21/20) Made BrushBuilder also accept a Texture as icon rather then BMP only.
  • (09/21/20) Added Actor.bBlockAISight which makes AI not be able to see through the actor (must have bCollideActors enabled but can be non-blocking).
  • (09/21/20) Added support for custom actors to be placed now with a Brush collision shape attached to it (Actor must have bSpecialBrushActor enabled).
  • (09/21/20) Added an in-editor event callback (EdBrushDeployed) which is called when actor was added to level with a brush.
  • (09/21/20) updated PackageFlagCommandlet to change package flag bits only instead of loading and resaving the packages.
  • (12/19/20) Updated script editor to show multiple error lines whenever it makes multiple compiler errors.
  • (12/19/20) Added editor skeletal mesh socket preview (to test mesh attachments offsets).
  • (12/19/20) Fixed an editor crash when trying to rebuild lighting of a static mesh that hasn't been rendered yet on camera.
  • (12/19/20) Fixed mouse cursor clicking inaccurancy in ortho viewports with D3D9 and OpenGL drivers.
  • (12/19/20) Added a 'Play from here' right-click menu option to editor 3D viewport.
  • (12/19/20) Added right-click menu for properties window in order to allow user to copy variables information to clipboard.
  • (12/19/20) Made UnrealEd track modified packages and ask if each one of them should be saved on exit.
  • (12/19/20) Made non-compiled script classes non-placeable in editor.
  • (12/19/20) Fixed a crash with Projectors when exporting/importing maps where projector is attached to an actor.
  • (12/19/20) Added new ShowFlags for: Static Meshes/Event lines/Projectors.
  • (12/19/20) Added new actor view mode to show actors visibility as in-game.
  • (12/19/20) Optimized Ortho viewport render.
  • (12/19/20) Fixed drag selection box snapping to nearby actor if you click on an actor when beginning to drag box.
  • (12/19/20) Updated Copy/Paste object properties in Class browser to keep proper property formatting.
  • (12/19/20) Added Tooltip for object classes to show header comments of the class you're hovering over.
  • (12/19/20) Added a minimum window size when opening properties windows.
  • (12/19/20) Fixed 2D shape editor to properly init box with grey colored lines (and not with random leftover junk from memory).
  • (03/24/21) Made font importer try to remap missing font characters with similar characters (i.e: Engine LargeFont remaps lowercase characters now to uppercase ones).
  • (03/24/21) Fixed StaticMeshes resetting their static lightmap when selecting the mesh after map load.
  • (03/24/21) Anth: Fixed surface properties tabs now switching properly the first time around.
  • (03/24/21) Anth: Fixed couple of properties windows problems and crashes.
  • (03/24/21) Added a minimum properties window size to avoid 1 pixel size properties window bug.
  • (03/24/21) Added functionality to rename asset groups too (texture/sound/mesh etc).
  • (03/24/21) Added right-click menu for sound browser.
  • (03/24/21) Added to texture/sound right-click menu an option to copy their full name to clipboard.


  • (10/28/13) Due to complaints about lighting differences in 227, especially because of the feedback from people doing some conversion from UT maps, added a new switch which enables SpecularLighting effect for all maps unless a specific new flag is set: var() bool bSpecularLight;. This means that 227 mappers would want to disable this flag to have the known and more accurate 227 lighting, but old and already ported maps have the 226/UT behavior. Maybe should have done from the begin with, because this means now more work for 227 mappers, especially for already finished maps, but this allows everyone to take the preferred method after all.
  • (11/30/13) Added triggered MaterialSequence animation.
  • (05/26/15) Added path builder information with customizable variables to LevelInfo to allow mappers building maps with different settings or for other UEngine games with UED2.1:
// Pathbuilder - these settings are for advanced pathing or usage of UED2.1 for other UEngineGames. Changing these settings can cause extremely weird behavior, Don't mess with it if you don't know what you are doing.
var(PathBuilder) config int MaxCommonRadius;//      max radius to consider in building paths, default 70
var(PathBuilder) config int MaxCommonHeight;//      max typical height for non-human intelligent creatures, default 70
var(PathBuilder) config int MinCommonHeight;//  min typical height for non-human intelligent creatures, default 40
var(PathBuilder) config int MinCommonRadius;//  min typical radius for non-human intelligent creatures, default 24
var(PathBuilder) config int CommonRadius;      //  max typical radius of intelligent creatures, default 52
var(PathBuilder) config int HumanRadius;      //  normal player pawn radius, default 18
var(PathBuilder) config int HumanHeight;    //      normal playerpawn height, default 39

//Example values

// DeusEx:


// Disneys BearBrothers

// KHG

// NERF!

// DS9:TF
#define COMMONRADIUS    22
#define HUMANRADIUS     22
#define HUMANHEIGHT     52

// Undying.
#define MAXCOMMONRADIUS 150 //max radius to consider in building paths
#define MINCOMMONHEIGHT 70 //min typical height for non-human intelligent creatures
#define MINCOMMONRADIUS 30 //min typical radius for non-human intelligent creatures
#define COMMONRADIUS    52 //max typical radius of intelligent creatures
#define HUMANRADIUS     18 //normal player pawn radius
#define HUMANHEIGHT     65 //normal playerpawn height

// WOT
#define MAXCOMMONRADIUS 30 //max radius to consider in building paths
#define MINCOMMONHEIGHT 61 //min typical height for non-human intelligent creatures
#define MINCOMMONRADIUS 30 //min typical radius for non-human intelligent creatures
#define COMMONRADIUS    30 //max typical radius of intelligent creatures
#define HUMANRADIUS     17 //normal player pawn radius
#define HUMANHEIGHT     46 //normal playerpawn height
  • (06/04/15) Added language specific path search extension, so that Unreal will search in all defined paths + language specifier. This allows for example the usage of language specific audio files or other related content (which has to be in the corresponding subfolders):
Log: Paths: ..\System\int\*.u
Log: Paths: ..\Maps\int\*.unr
Log: Paths: ..\Maps\UPak\int\*.unr
Log: Paths: ..\Textures\int\*.utx
Log: Paths: ..\Sounds\int\*.uax
Log: Paths: ..\Music\int\*.umx
Log: Paths: ..\Meshes\int\*.usm
  • (11/11/19) Added base IPv6 support.
  • (11/11/19) Added multi-threading support for memory allocator and log writer.
  • (11/11/19) Fixed a memory leak when accessing destroyed actors string values.
  • (11/11/19) Heavily improved skeletal mesh functions (and added option to specify transformation spaces with bone modifier functions). Also including support to use multiple animation sets per actor.
  • (11/28/19) Added delta compression for saved games, also made saved games files contain save information along with a screenshot preview to show on load game menu.
  • (11/28/19) Changed all objects created in-game use their class name as object name instead of unique numbered names (to conserve memory).
  • (11/28/19) Made object allocator never try to replace object with same name but different class (to fix Can't replace A with B crash).
  • (11/28/19) Changed order of code in DestroyActor code by setting bDeleteMe first before any cleanup code, to ensure no physics values are set on UnrealScript exit events, thus crashing later with GC/physics.
  • (01/16/20) Fixed StatLogFile and TimeDemo objects to properly flush and close log file if object is destroyed (level change garbage collector or game exit).
  • (01/16/20) Made engine fill out Touching array in inverse order and sort pawns to be last (legacy code support, Zora's ZM3WaterLab cannon).
  • (01/27/20) Added commands "STAT THREAD" to display number of running threads and "THREADS" to display a list and description of running threads in memory (for Unreal).
  • (01/27/20) Added Sound compression/decompression support for all audio drivers. You can compress sounds in sound browser or in UnrealScript by defining "OGG=X" (X is the quality in range of 0-11, 0 = worst, 11 = best) in #exec audio import line or then you can directly import ogg files as sounds.
  • (01/27/20) Added support for defining HD HUD textures, by either setting Texture.HDTexture or in UnrealScript add "HD=XXX" to #exec texture/font import lines. HD texture will be used if texture is being stretched out by at least +25% of its original size.
  • (06/01/20) Added IK solvers for SkeletalMeshes for easy animation blending (such as head turning, limb rotation or foot placement).
  • (06/01/20) Added support for SkeletalMesh hitboxes for individual bones (and group them to bodypart type for modders to use).
  • (06/01/20) Made it possible to enter spaces in names in properties and defaultproperties blocks.
  • (06/01/20) Added ZoneInfo.MinWalkableZ to tell physics engine how steep slopes Pawns can walk on.
  • (06/01/20) Fixed preferences window to correctly save config to ini if you add/remove dynamic array entries.
  • (06/01/20) Improved Physics PHYS_Spider to work better at finding walkable surfaces and attempt to yaw actor towards desired rotation.
  • (06/01/20) Fixed a rare AActor::BeginTouch/EndTouch crash.
  • (06/01/20) Implemented Alt+F4 hotkey to exit the game instantly.
  • (06/01/20) Improved Log window to support command history browsing (up/down arrows) also properly support selecting/replacing parts of text or insert text in middle of command.
  • (07/14/20) Added support for Sub-Levels architecture (where you can link multiple maps together into one with seamless level transition). See LevelInfo.SubLevels array.
  • (07/14/20) Added GrassDeco actor for a Source Engine style grass sprites in levels (also GrassDecoSchool for an automatic grass patch).
  • (07/14/20) Moved PawnList updating to be fully in C++ codes only.
  • (07/14/20) Added a hidden ReplicationInfo linked list which gets setup by C++ codes (for more optimial ScoreBoard code).
  • (07/14/20) Heavily optimized Navigation AI code.
  • (07/14/20) Optimized server network codes.
  • (07/14/20) Added support for custom mouse cursors in-game (directly use regular Textures), see Engine.UnrealCursor class.
  • (07/14/20) Reworked Inventory travel code to be more optimal, and added functions GameInfo.OnPrepareTravel (event notification when it should save inventory) and GameInfo.SaveTravelInventory (to save inventory) and GameInfo.DeleteTravelInventory (to manually delete inventory).
  • (09/21/20) Changed download error messages to be also printed to the HUD/console.
  • (09/21/20) Made AttachMover also attach actors on clientside (mainly to fix elevator corona on Terralift).
  • (09/21/20) Added an option to player console to enable script error printing to in-game console.
  • (09/21/20) Added Monochrome bitmap compression (mainly for single colored masked textures like fonts).
  • (09/21/20) Fixed various bugs with demorecording (added support for older 224-225 demos, added HUD features, fixed demo scoreboard etc).
  • (09/21/20) Made it also possible to pause demo playback (also made it skip pauses during demo playback).
  • (09/21/20) Fixed a rare crash with trying to call SetOwner onto an invalid actor or causing an infinite owner chain (Actor A owns B which owns A etc).
  • (09/21/20) Compressed int replication a bit more when replicating low values.
  • (09/21/20) Disable initial garbage collection when booting up the game (waste of time).
  • (09/21/20) Made it impossible to try to load package 'nul' to prevent malicious loading crashes.
  • (09/21/20) Made commands 'Start' and 'Open' always delay mapchange until end of tick to prevent 'Admin' command from crashing the server when using it (i.e: Admin Open). Also made said commands pass in as Level.ServerTravel event when called on server to allow clients properly to reconnect to new map.
  • (09/21/20) Added Volumes support from UnrealEngine 2+ (which can be used to create brush shape collision shapes or triggers to levels).
  • (09/21/20) Made LadderTrigger a Volume instead, also various fixes to ladder:
    • Player properly hops off the ladder now at top.
    • Added a flag to allow player to strafe on ladder (you must have bDirectional enabled).
    • Added a flag to enable/disable directional ladder which makes you drop off the ladder if you look away from it (must also have bDirectional enabled).
    • Pressing jump key while holding backwards now makes you now jump off ladder backwards.
    • Added a value to control climbing speed on the ladder.
  • (09/21/20) Added INI file option 'LangPath' which can be used to specify director of language files (like .int).
  • (09/21/20) Added a variable to SkyZoneInfo which allows you to make sky move in relative to player camera position.
  • (09/21/20) Added support for static light static mesh movers.
  • (12/19/20) Made package loader remove references to deleted actors.
  • (12/19/20) Added last camera coordinates to crash history message whenever game crashes.
  • (12/19/20) Fixed a client-side download manager crash when connection was caneled or aborted during downloading.
  • (12/19/20) Added ClientMover actor for a client-side background looping movers (which doesn't interact with gameplay in any way).
  • (12/19/20) Added TransporterVolume which can be used to transport all actors touching that volume to a relative offset in another place in level. Similar to Transporter but with better control.
  • (12/19/20) Disabled Password logging by default game modes.
  • (12/19/20) Fixed INI file writer failing if trying to write really long ini lines.
  • (12/19/20) Added support for object archetype references (in order to save delta modified EditInLine objects).
  • (12/19/20) Added movement interpolation between actors network updates.
  • (12/19/20) Added PhysX physics support (with Physics=PHYS_RigidBody and PhysicsData reference in actor).
  • (12/19/20) Added a Pawn PhysicsAnimation object which can be used to give pawns automatic physics based animations.
  • (12/19/20) Fixed SecurityData to properly sanitize player names with special characters.
  • (12/19/20) Made 'GETPING' consolecommand also functional client-side.
  • (12/19/20) Fixed Quat Rotator conversion errors.
  • (12/19/20) Heavily optimized Garbage collector.
  • (12/19/20) Fixed GameInfo server travel to not send out game options to clients in server that is traveling.
  • (03/24/21) Fixed an emitter crash with particle combiners.
  • (03/24/21) Fixed emitter crash with SetMaxParticles function.
  • (03/24/21) Replaced various emitter static arrays with dynamic arrays (NOTE: Mods making direct references to these will need to be recompiled).
  • (03/24/21) Added log supression for DevPhysics in default ini.
  • (03/24/21) Anth: Reduced game deltaseconds clamping to allow game run in higher FPS without speeding up the game.
  • (03/24/21) Made package loader load meshes as any mesh type (regular Mesh can now load as LodMesh/SkeletalMesh/StaticMesh etc...).
  • (03/24/21) Fixed map travelled inventory to have their bHeldItem flag set to true.
  • (03/24/21) Added a new BSP surface flag 'invisible occluder' which works like an anti-portal surface to simply occlude view.
  • (06/13/21) Added to DynamicCorona CoronaFadeTimeScale to control how fast the corona should fade in or out when pops in and out of view.
  • (06/13/21) Added TriggerCorona which is a DynamicCorona that can be triggered on or off.
  • (06/13/21) Removed duplicate TriggerLight actor from UnrealShare package.
  • (06/13/21) Fixed players unable to walk inside warpzones.
  • (06/13/21) Added simple collision model support for any meshes.
  • (06/13/21) After making various emitter static arrays into dynamic arrays, made old mods functional with them.
  • (06/13/21) Fixed an error with Actor.TraceSurfInfo which ended up crashing during APawn::ProcessLanded.
  • (06/13/21) Added more safety checks and optimized ActorChannel management.
  • (06/13/21) Allowed Actors and Pawns to perform physics outside world geometry if event FellOutOfWorld doesn't kill them.
  • (06/13/21) Fixed a specific crash that could happen during client disconnection from server if exiting code would attempt to call a RPC function.
  • (06/13/21) Added more validity checks to GarbageCollector.
  • (06/13/21) Fixed a crash when attempting to load corrupted meshes.
  • (06/13/21) Added option to MusicEvent to disable cross-level song changes (when using sub-levels).
  • (06/13/21) Ported over from network fixes from UTv469: if packet loss prevented channel from closing it will be resent, made channels open in a sequential order to prevent client->server RPC call from switching actor refs on parms incase actor happens to get destroyed inbetween.
  • (06/13/21) Made ScriptWarnings dump UnrealScript call stack to log (you can suppress this with Suppress=ScriptStack).
  • (06/13/21) Made default objects use name 'Default' to more easily detect errors on error stack dump during crashes.
  • (06/13/21) Added Texture.SuperGlow to make texture glow with some fog overlay with bright lights (for meshes).
  • (06/13/21) Added support for floating point UV texture mapping for SkeletalMeshes.
  • (06/13/21) Added PhysX option for Emitter particles to make them rigid.
  • (06/13/21) Added particle fade style option (to make particles change style only while fading).
  • (06/13/21) Added LevelInfo.MaxPortalDepth to control how many layers warpzones/mirrors/skyboxes can draw.


  • (04/06/14) Added "stat video" command to enable DrawStats(Frame) in RenDev.
  • (04/06/14) New changes in UMenu:
    • Preferences -> Video:
      • Changed video driver selection shows all installed drivers now (select one and press "Restart").
      • Added checkbox for fullscreen/window mode.
      • Added checkbox for trilinear buffering.
      • Added checkbox for precaching.
    • Preferences -> Audio:
      • Changed audio driver selection shows all installed drivers now (select one and press "Restart").
    • Preferences -> Game Settings:
      • Added language selection for the main localization of the game (select one and press "Restart").
    • Load/Save Menu:
      • Fixed localization support.
  • (06/13/14) New feature: Localized Subtitles. Full localized subtitles in mission pack "Return to Na Pali" intro & cutscenes.
  • (01/09/15) Added checkboxes in "HUD" tab to view cutscenes in cinematic style with/without subtitles.
  • (05/27/15) UMenu:
    • Botmatch/Multiplayer:
      • Reorganized the entries in the game type combobox in botmatch and new network game dialog.
      • Added settings and rules tab for coop game type.
    • Preferences -> HUD:
      • Added subtitles fontsize combobox.
  • (05/27/15) Classic Menu:
    • Added all new difficulty settings.
    • Added coop settings in botmatch/multiplayer menu.
    • Added subtitles settings to video menu.
  • (09/21/20) Made log window (through SHOWLOG or dedicated server window) use a separate editbox for inputting commands.


  • (11/28/19) Made pawns network their location relative to their mover base (only between 227j clients and servers).
  • (11/28/19) Made heavy pawns that crush smaller pawns not bounce off the small pawn, but instead fall through (only if it gibs the victim).
  • (11/28/19) Made save game menu support unlimited slots.
  • (01/16/20) Added option to LevelInfo/bEnhancedIcePhysics, that will fix walking speed on ice.
  • (01/16/20) Fixed playerpawn viewbob to cap view bobbing if player is moving at very high speeds.
  • (01/16/20) Fixed ZoneVelocity behave like in Unreal v 230+ versions, with an exception if ZoneVelocity.Z is non-zero it will null out zone gravity (legacy map support, Zora's ZM3WaterBridge lava jump).
  • (09/21/20) Fixed ParentBlob to be able to obtain new enemy once old enemy is dead or has disappeared out of sight.
  • (12/19/20) Improved TexModifiers (TexRotator/Scaler/Oscallitor) to modify U/V map instead of stretching out pixels with itself (rotation/scaling is not for BSP textures).
  • (12/19/20) Made some decos, inventory and fragments orient to floor direction when landing.
  • (12/19/20) Made package loader keep loading packages even if a single package was missing to throw full list of missing packages when finished trying.
  • (12/19/20) Added SkeletalMesh/LodMesh load-time error checking in case of broken mesh.
  • (12/19/20) Fixed Movers with StopOnEncroach to network stopped movement to 227j clients.
  • (12/19/20) Fixed Movers with ContantLoop state to properly handle Stop/ReturnOnEncroach types.
  • (12/19/20) Fixed orientation errors when passing through WarpZones with different orientations (gimbal lock error).
  • (12/19/20) Futher optimized SkeletalMesh render code.
  • (12/19/20) Fixed an inaccurancy error with footstep sound tracing.


  • (07/20/16) Added XOpenGL OpenGL3 / OpenGL4 renderer. Note: You need to have at least an OpenGL 3.3 capable card to use this renderer!
  • (07/20/16) added Exp and Exp2 fog mode as new DistanceFog equation modes. (See here: https://msdn.microsoft.com/en-us/library/windows/desktop/bb324452%28v=vs.85%29.a )
  • (11/28/19) Optimized mesh/lodmesh/skeletalmesh render (by precaching surface normals and simplifying some operations).
  • (11/28/19) Fixed Software render to draw projectors and trail emitters.
  • (11/28/19) Changed Software render to draw alpha blended textures as masked (masking invisible parts).
  • (11/28/19) Slightly optimized decals and projectors render code.
  • (12/16/19) Fixed Sprite/Mesh emitters sprite animation mode to function correctly (loop/play once/reverse animation).
  • (12/16/19) Heavily optimized lighting render, also fixed static meshes (or any other bShadowCast actors) to cast shadows over dynamic actors.
  • (12/16/19) Added PortalModifier object which can be assigned to Texture (to be applied when drawing portal through it), ZoneInfo (to be applied when camera is inside it), or PlayerPawn (for mod override), which can be used to replace several rendering factors, such as disable lighting/fog/modify distance fog or replace textures etc. (see Object > PortalModifier).
  • (12/16/19) Fixed Direct3D9 flickering with BSP and distance fog.
  • (01/16/20) Added support for hardware clipping planes to D3D9 and OpenGL.
  • (01/16/20) Made mesh wireframe color to match ActorRenderColor (if non-zero) in game.
  • (01/27/20) Made actors that pass through zones with different zone ambient light, fade between the zone light colors rather then instantly swap them.
  • (01/27/20) Made mesh actors that have their origin inside level geometry to not turn unlit and still accept lighting from nearby light sources.
  • (01/27/20) Added option to upscale HUD (HUD.HudScaler) to make canvas draw HUD as it were in low res but still keep high in-game resolution.
  • (06/01/20) Fixed coronas and sprites to fade out from distance fog.
  • (06/01/20) Optimized render by disabling surface sorting when not needed.
  • (06/01/20) Fixed a bug where skybox would turn into a HOM when viewed through a mirror reflection.
  • (06/01/20) Made windows mouse pointer usable in-game on fullscreen mode (mainly for UMenu).
  • (06/01/20) Added support for DynamicCorona to have directional light ray texture (which is only visible from the sides of the corona).
  • (07/14/20) Optimized RenderIterator code (for Emitters etc).
  • (07/14/20) Added custom LensFlares option for DynamicCoronas.
  • (07/14/20) Implemented DT_VerticalSprite and DT_RopeSprite DrawTypes.
  • (07/14/20) Fixed TrailEmitter to work with ColorTimeScale.
  • (12/19/20) Fixed ZoneInfo.Min/MaxLightcount to be functional again.
  • (12/19/20) Added ZoneInfo.LightSharpnessFactor/LightNormalMinAng variables to modify lighting method of meshes inside that zone.
  • (12/19/20) Added support for animloop blending between 2 looping animations.
  • (12/19/20) Made LightMap render code to use C++ style memory management and also reduce LightMap framerate in case of high BSP lightmap count on screen.
  • (12/19/20) Fixed static lightmap movers to properly grab lighting at the BrushTraceKey location.
  • (12/19/20) Added VisibilityRadius culling support for Decals and Projectors (also made object shadows fade-out as its about to get culled).
  • (03/24/21) XOpenGL/Smirf: Removed SyncToDraw option and implemented various other bugfixes and optimizations.
  • (03/24/21) Fixed a bug where meshes or sprites could not be drawn if their render bounding box were parallel to nearby BSP splitting plane.
  • (03/24/21) Krull: Fixed Armor mesh missing bottom polygons and adjusted several LOD meshes to have less agressive LOD.
  • (03/24/21) Krull: Added various HD icons for when you use hi-res HUD mode.
  • (03/24/21) Made Canvas.DrawText support alpha blended font textures.
  • (03/24/21) Added a time-based light flicker for LightType Strobe and Flicker so they can be slowed down by TimeDilation too.


  • (03/24/21) Added PhysX physics support (simple rigidbodies and joints).
  • (03/24/21) Added new actor Physics mode PHYS_RigidBody.
  • (03/24/21) Added Engine.PhysicsEngine ini setting to chose which physics engine to use (defaults to PhysX).
  • (03/24/21)


  • (12/09/12) Added a new native function to PlayerPawn to get current client version: native final function int GetClientVersion();.
  • (12/09/12) Added a new PlayerInterpolating state to PlayerPawn to be used on 227 clients when entering "PlayerPath" on SpecialEvent, it allows for online smooth interpolation movement.
  • (06/07/13) Added some new features:
    • Variable keyword EditInLine lets you create new objects of desired metaclass and edit its variables in properties window, looks like this: www.klankaos.com/downloads/Properties.jpg
    • Variable keyword AutoDestruct will destroy and cleanup the object instantly from memory when actor is destroyed. This way you can store additional data on objects for actors and have it released from memory as actor dies.
    • Any object or class variables have a dropdown box to select from a reference in memory (in properties window).
    • Added new function for ScriptedTexture: DrawPortal, it uses software render device to draw a portal from any point in level on a texture (and works really fast).
    • Added PostTouch/PendingTouch functionality from UT as-well.
  • (10/03/14) Added new compiler directive for UnrealScript, a C++ style variable evaluator: <bool statement> ? <value if true> : <value if false>. So you can write for example: KillerName = Killer!=None ? Killer.MenuName : "Someone";. However, this will make your mod unloadable in pre-227 clients, crashing with unknown token error.
  • (02/08/15) Changed PerObjectConfig support to output format like in UnrealEngine 2+:
    [SomeClass ClassName]
    Config values...

    It will convert old config entries it finds in old to new format to prevent problems with ini updates. This should also prevent some possible abuse with using PerObjectConfig to overwrite some other config.
  • (02/08/15) Added 2 new native functions:
    • native static final function ClearConfig();
      Removes the PerObjectConfig ini entry for the object.
    • native static final function array<string> GetPerObjectNames( string ININame, optional string ObjectClass, optional int MaxResults /*unlimited if unspecified*/ );
      Finds all specified PerObjectConfig ini entries from an ini file.
  • (06/22/15) Added missing color operators:
// Color operators
native(549) static final operator(20)  color - ( color A, color B );
native(550) static final operator(16) color *  ( float A, color B );
native(551) static final operator(20) color + ( color A, color B );
native(552) static final operator(16) color * ( color A, float B );
  • (08/10/15) Added autoloading of UFactories and UExporters based on int entries to UCC. This way you can extend the capabilities of the batchexport commandlet, like adding an *.3ds file exporter for Meshes. I used this in Deus Ex to add the capability to export Text packages using batchexport.
  • (08/10/15) New native functions native(273) final function StopSoundSlot( ESoundSlot Slot ); and native(274) final function StopAllSoundSlots();. These functions stop the specified or all sound slots for an Actor. These functions are network transparent, but unlike PlaySound() use a reliable network replication pattern and do no distance checks. They share the same behaviour regarding simulated functions and invokation on network clients as PlaySound() does. This includes that you need to run those inside a simulated function when PlaySound() for that slot was called inside a simulated function (note that the server can invoke playback of a sound inside the same slot as the client for an given actor and they will both be played at the same time, so sound slots are not mutually exclusive in this situation!). In order to avoid problems in netplay you should ensure that there is a slight amount of time between PlaySound() and StopSoundSlot()/StopAllSoundSlots() call, so both will likely be execute in order on the network client (note that the same argument applies to multiple PlaySound() calls for the same channel, so this is no new issue introduce by these functions).
  • (08/15/15) Merged in some commandlets out of HTK:
    • AudioPackageCommandlet: Brought from Unreal II, it's an automated sound package generator. If you specify a directory with .wav files in it, this commandlet will build an .uax file with those Wave file imported.
    • MusicPackagesCommandlet: Batchconverts a directory full of music source files into a directory full of umx files.
    • ReduceTexturesCommandlet: Moves the compressed textures to the slot of the uncompressed ones, so you can have pure s3tc packages.
    • SaveEmbeddedCommandlet: Extracts embedded objects from a package.
    • ListObjectsCommandlet: Lists the Objects inside a package.
    • DumpTextureInfoCommandlet: Prints out a detailed info about textures inside a package.
  • (10/26/15) Added VClampMode=VClamp and UClampMode=UClamp texture import parameters, to be able to set ClampMode at compile time, for example: #exec TEXTURE IMPORT NAME=Bg11 FILE=Textures\Bg-11.pcx GROUP="Icons" MIPS=OFF VClampMode=VClamp UClampMode=UClamp.
  • (10/28/15) Editor.EditorEngine now optionally uses ini:Engine.Engine.EditorRender/ini:Engine.Engine.EditorViewportManager settings instead of ini:Engine.Engine.Render/ini:Engine.Engine.ViewportManager settings if those are specified in the ini file.
  • (03/15/16) Added from DeusEx the idea for var(Frob) bool bIsFrobable; (to manipulate or adjust, to tweak this actor over Frob() interface.) which is placed in actor, with the additions, in Pawn, as new helper functions for mods, of:
    • var() float MaxFrobDistance;
      Max distance frob checks are being done.
    • var transient Actor FrobTarget
    • function HighlightCenterObject()
      Checks to see if an object can be frobbed, if so, then highlight it.
    • function bool IsFrobbable( Actor Actor )
    • In order to make this work, these new functions have been added to actor:
// Fixed and extended version of TraceTexture() which also returns
// the Texture hit (Hint: There are Sound properties on Texture).
// Extended version of TraceActors which returns additional Texture info on Mover / LevelInfo hit.
native(1760) final iterator function TraceTextures
	Class<Actor> BaseClass,
	out Actor    HitActor,
	out Texture  Texture,
	out Name     TextureName,
	out Name     TextureGroup,
	out int      TextureFlags,
	out Vector   HitLocation,
	out Vector   HitNormal,
	Vector       TraceEnd,
	optional Vector TraceStart,
	optional Vector TraceExtent
// First Hit variant of TraceTextures.
// (The same as Trace is to TraceActors)
native(1761) final function Actor TraceSingleTexture
	Class<Actor> BaseClass,
	out Texture  Texture,
	out Name     TextureName,
	out Name     TextureGroup,
	out int      TextureFlags,
	out Vector   HitLocation,
	out Vector   HitNormal,
	Vector       TraceEnd,
	optional Vector TraceStart,
	optional bool bTraceActors,
	optional Vector TraceExtent
  • (07/20/16) Changes/additions to the following functions:
    • native(237) static final function int Asc ( string S, optional int Pos );
      Determines if a string Str starts with other string SubStr.
    • native(392) static final function bool StartsWith(coerce string Str, coerce string SubStr, optional bool bCaseInsensitive);
  • (08/10/17) Added missing import parameter BUMPTEX= and BUMP= (like DETAILTEX= or DETAIL=) for textures.
  • (11/11/19) Added support for 'skip' parameters to regular native functions (not just operators second parameter).
  • (11/11/19) Made "replace to" parm in "ReplaceStr" skippable, meaning it wont get evaluated if there are no replacements found.
  • (11/11/19) Fixed ternary operators (<condition> ? <value if true> : <value if false>) to support l-values (and fixed a compiler bug with them).
  • (11/11/19) Added "typecast" compiler keyword (can be used to hard cast any value to any type), for example: int i = typecast<int>(Class) will grab pointer value of 'Class'. Using this feture is compatible with any Unreal version.
  • (11/11/19) Added struct constructor function: plane p = construct<plane>(2,0,1,0) or plane p = construct<plane>(X=2,Z=1) (both methods works), which is faster then manually assigning each struct value in script but slower then using vect or rot constants.
  • (11/11/19) Fixed FindObject so that if searched object contains a dot in the name, it will seek for it as a full object name instead of any object with matching name.
  • (11/11/19) Added Actor.FindSpot native function that seeks for empty space for a box extent space (same way as bCollideWhenPlacing works).
  • (11/11/19) Improved Engine FindSpot to find free spot better and more efficiently.
  • (11/11/19) Fixed PointCheck to only check at blocking actors.
  • (11/11/19) Added Actor.bNetInitialRotation to make server network Actor rotation along with initial spawn information.
  • (11/11/19) Added function Actor.OnDrawActor to be called if bCustomDrawActor is true.
  • (11/11/19) Added function Actor.ReplicationEnded to notify when a bNoDelete actor channel has been closed (Actor.PostNetBeginPlay will be called when re-opened again).
  • (11/11/19) Fixed Actor.PostNetBeginPlay not getting called on bStatic or bNoDelete actors.
  • (11/11/19) Changed 'if' conditions to compile as coerce parms to easily allow cast them into bool comparisions.
  • (11/11/19) Changed bool operators to also take coerce parameters.
  • (11/11/19) Fixed a compiler bug where when it would compile a sub expression it would automatically truncate float into int, as example: int i = (1.f/10.f)*100.f would compile as int(int(1.f/10.f)*100.f), thus resulting in value 0.
  • (11/11/19) Fixed ConsoleCommands to properly handle multi-parameter exec functions, if using multiple string parameters then they will be split by spaces, unless they are enclosed with quotation marks or apostrophes.
  • (11/11/19) Made return value from exec function return to ConsoleCommand output.
  • (11/11/19) Made if first parameter of exec function is "PlayerPawn Caller", then that will be set to the PlayerPawn executing the command (or None if ran on any other Actor).
  • (11/11/19) Made ExecFunctionStr work same way as ConsoleCommand with parameters.
  • (11/11/19) Added functions to LevelInfo: static native final function PlayerPawn GetLocalPlayerPawn() / static native final function LevelInfo GetLevelInfo() - To easily find active PlayerPawn and Level in the game.
  • (11/11/19) Added variables to LevelInfo: RealTimeSeconds (actual TimeSeconds unmodified by TimeDilation), NetTimeSeconds (network synced between server and client TimeSeconds, only for 227j clients and when LevelInfo.bNetworkTimeSeconds is true), LastDeltaTime (current frame DeltaTime), LastRealDeltaTime (current frame DeltaTime unmodified by TimeDilation).
  • (11/11/19) Added Actor.bTickRealTime to allow Actor tick by real DeltaTime unmodified by TimeDilation.
  • (11/11/19) Fixed Texture trace to support trace with collision extent.
  • (11/11/19) Added function Pawn.WalkTextureChange which is called if LevelInfo.bCheckWalkSurfaces is true.
  • (11/11/19) Removed redundant functions Actor.SpawnAct and Actor.NativeExec.
  • (11/11/19) Added parms to Actor.Spawn: SpawnInstigator/SpawnTemplate/bNoCollisionFail from prevous SpawnAct function.
  • (11/11/19) Added new parm to Actor.SetTimer: CallbackObject: To call the timer function on any external object.
  • (11/11/19) Made defaultproperties importer detect if same variable is imported multiple times (and throw compiler warnings).
  • (11/11/19) Added feature to allow defaultproperties with numeric values contain math evaluations in them, ex: Health=Nali.Health*2 or SomeFlag=(1 << 3)
  • (11/11/19) Added support for simple preprocessed maths in script code (encompassed with {}), as example: Health+={Nali.Health/2}, which will compile as Health+=20;
  • (11/11/19) Changed GameRules.ModifyThreat to take third parm as enum instead of byte.
  • (11/11/19) Added Actor.RenderPass to set manual render order.
  • (11/11/19) Made ScriptCompiler avoid saving references to super function unless you explicitly call Super in your code.
  • (11/11/19) Added a new parm to Canvas.SetTile3DOffset, bWorldOffset, to allow easily draw canvas stuff anywhere in world space.
  • (11/11/19) Added variables Canvas.Mirror (to detect if current draw is inside mirror reflection) and Canvas.Recursion (to detect portal depth of current canvas call).
  • (11/11/19) Added new parm to Canvas.DrawTile, vector WorldPosition, to make it draw the tile as a sprite in level.
  • (11/28/19) Added Actor.CollisionGroups and Actor.CollisionFlag which can be used to let modders set custom collision rules.
  • (11/28/19) Added function bool Actor.IsBlockedBy( Actor Other ) to check if another actor can block that actor.
  • (11/28/19) Added Pawn.bShovePawns (and Pawn.ShoveCollisionRadius to specify internal radius) which if enabled, allows pawns to push back other pawns (kinda like Team Fortress style) depending on their mass differences.
  • (11/28/19) Added function GameInfo.AllSavedGames to grab a list of all savegame slots used along with their information.
  • (11/28/19) Exposed Object ObjectIndex to unrealscript and added function Object.FindObjectIndex to find an object by its index.
  • (11/28/19) Changed Object.FindObject return in same metaclass type as specified in first parm, same way as 'Spawn'.
  • (12/16/19) Added UnrealScript function hooks, to redirect function calls/override code (check out Object > ScriptHook).
  • (12/16/19) Added event AppShutdown() to notify ALL objects when game is about to exit (not crash).
  • (01/04/20) Added support for map properties (map<typeA,typeB> MapValue) aswell as accessors to it:
    • out typeB MapValue[typeA]
      Simple read value by key value, creates new key if not found.
    • bool MapValue.Has(typeA, optional out typeB)
      Check if has (and optional grab key value).
    • bool MapValue.Remove(typeA)
      Remove a key from the map.
    • MapValue.Empty()
      Empty map.
  • (01/04/20) Added dynamic array call macros (it will compile as Array_Size/Array_Insert/Array_Remove calls):
    • int Array.Size()
      Grab array size.
    • int Array.SetSize(new size)
      Change array size and return new array size.
    • int Array.Empty()
      Empty array and return new array size.
    • bool Array.Insert(index,count)
      Insert new entires at offset of array (return true if succeed).
    • bool Array.Remove(index,count)
      Remove entires at offset of array (return true if succeed).
  • (01/04/20) Added Map and Dynamic array iterators: foreach Map(out typeA, out typeB) or foreach Array(out valuetype).
  • (01/04/20) Fixed script compiler to prevent modifing constant dynamic arrays.
  • (01/04/20) Made Object.GetParentClass a static function and parameter to be optional (if parameter is not set it will return current class parent).
  • (01/04/20) Changed Object.GetDefaultObject return in same metaclass type as input class parm (same way as Actor.Spawn does).
  • (01/04/20) Added 'SizeOf(Object class)' compiler directive to return bytes of size of an object class.
  • (01/04/20) Added support for declaring 'private' functions.
  • (01/04/20) Added Object > LogHandler object to allow UScript to sniff and block log lines.
  • (01/16/20) Added a vector2d definition (for canvas drawings).
  • (01/16/20) Corrected some script warning log types to be actually ScriptWarning instead of Warning or Error.
  • (01/16/20) Added functions to canvas for free polygon drawing, draw rotated textures and to push or remove custom clipping planes.
  • (01/16/20) Fixed a ScriptWarning with Counter and counter messages if there is no Event Instigator.
  • (01/16/20) Added variable Pawn/WalkingPct which will control walking speed of players.
  • (01/27/20) Added functions to Canvas:
    • SetZTest( ERenderZTest ZTest ) = Change hardware render Z-testing.
    • PushCanvasScale( float Scale, optional bool bAbsolute ) = Push canvas scaling value.
    • PopCanvasScale() = Pop canvas scaling.
  • (01/27/20) Added Canvas.FontScale to change scale of upcoming DrawText/TextSize calls.
  • (01/27/20) Fixed Canvas.StrLen to support unlimited text size.
  • (01/27/20) Fixed Canvas.TextSize to ignore color codes.
  • (06/01/20) Added actor function: function bool HasMeshHitBoxes() to quickly check if actor uses SkeletalMesh with HitBoxes (to make Trace check against HitBoxes instead of collision cylinder, set Actor.bTraceHitBoxes=true, to check which HitBox bodypart type was hit by the trace, check Actor.LastHitBox.
  • (06/01/20) Added a new parameter for DrawDebugLine function for making them permanent in level (or until you call ClearDebugLines): static function ClearDebugLines().
  • (06/01/20) Fixed #exec directives to support unlimited characters length for the command.
  • (06/01/20) Added Pawn.bNoPhysicsRotation to free Pawn from physics based rotations.
  • (06/01/20) Optimized some of UnrealScript code by moving some of base Actor code to C++ codes (TriggerEvent/HurtRadius).
  • (06/01/20) Added function to Pawn: iterator function AllInventory to allow for fast and safe iteration of Pawn inventory chain.
  • (06/01/20) Fixed Y/N questions in UCC.exe to not skip second Y/N question if multiple ones comes after each other.
  • (06/01/20) Added an event to Object: event OnPropertyChange( name Property, name ParentProperty ) to notify of a property change in the object (called from properties window, SetPropertyText or SET consolecommand), also called in editor.
  • (06/01/20) Added to LevelInfo: array<Object> CleanupDestroyedNotify to make custom objects receive cleanup destroyed notifications (to change destroyed actors to None in order to avoid crashes, player console is added by default to this array upon map load).
  • (06/01/20) Made defaultproperties importer throw a warning if you reference to an object that wasn't found.
  • (07/14/20) Added new dynamic array operators: Add/AddUnique/Find/RemoveValue.
  • (07/14/20) Made Object.FindObject function same way as ObjectProperty text importer (accept format like Nali'NyLeve.Nali1').
  • (07/14/20) Added new parm for Object.StringToName to set it to only find name entry, which makes it return None if that name entry is not registered yet.
  • (07/14/20) Added function LevelInfo.GetSelectedObject to get selected object by type in UnrealEd.
  • (07/14/20) Optimized AllActors to use PawnList or ReplicationInfo list codes whenever possible.
  • (07/14/20) Added variable Actor.bCrossLevelNetwork, for which when combined with bAlwaysRelevant, allows engine to network actors from one sub-level to another.
  • (07/14/20) Added function Actor.SendToLevel to send an actor to another sub-level.
  • (07/14/20) Added new parm to Actor.TriggerEvent/UnTriggerEvent to allow you to send it to a specific sub-level.
  • (07/14/20) Added new parm to AllActors iterator to search for actors in all sub-levels too.
  • (07/14/20) Added LevelInfo.bShouldStasisLevel/bShouldChangeMusicTrack where bShouldStasisLevel controls if a sub-level should go to a paused state if no players are active in it and bShouldChangeMusicTrack controls if player entering the level should start hearing that levels Song.
  • (07/14/20) Added variable Actor.NetUpdateTime which is next RealTimeSeconds server should update that actor to client.
  • (07/14/20) Added new property type 'Button' for showing a simple button in object properties window.
  • (07/14/20) Added new operator Vector~=Vector for approx vector comparison (allows for a ~0.0001 floating point error, now used by WarpZoneInfo for better approx comparison of coordinates).
  • (09/21/20) Expanded Inventory travel code to also support travel other actors such as GameInfo and Mutators.
  • (09/21/20) Added Actor.bOnlyOwnerRelevant to force actors to only network to Owner player.
  • (09/21/20) Improved AnimationNotify object to be more useful and functional.
  • (09/21/20) Added Array.Sort operator which is an easier access version of SortArray function call.
  • (09/21/20) Added OwnerChanged event callback which is called on both client and serverside when actor owner was changed or lost.
  • (09/21/20) Made Owner change to none when it was destroyed.
  • (09/21/20) Added new 'Any' property type which can be used to store an arbitary property value.
  • (09/21/20) Added Actor.UserData (map<name,any>) to store custom mod data with an actor.
  • (09/21/20) Added 'nowarn' variable type to tell compiler to not print name conflict warnings during compilation.
  • (09/21/20) Added 'protected' variable type which functions as const modifier but allows you to modify value within same class itself.
  • (09/21/20) Added 'noexport' support for UnrealScript constants to prevent it from being exported to c++ header file.
  • (09/21/20) Added function Engine.GetEngine to grab current engine reference in UnrealScript.
  • (09/21/20) Added new parm to SetTimer to pass in data to timer callback function ('any' data).
  • (09/21/20) Added Actor.bForceNetUpdate to instantly force server to replicate that actor next tick.
  • (09/21/20) Added new parm to RadiusActors iterator to only check from Collision Hash.
  • (09/21/20) Added new parm TraceFlags to Trace functions to allow you to define what actors to trace after.
  • (12/19/20) Added CodePath variable to Unreal.ini to specify custom source code path for when compiling UnrealScript packages.
  • (12/19/20) Reworked UnrealScript compiler to properly continue compiling whenever possible if it encounters errors.
  • (12/19/20) Added RotAng constant which takes real angles as rotator values (i.e: rotang(360,180,0) is same as rot(65536,32768,0)).
  • (12/19/20) Added support for string/name constant literals (i.e: "Some\nThings\xFF" or 'Hello\tWorld!').
  • (12/19/20) Fixed another error with terniary operators (WARNING: this breaks binary compatibility with codes built on previous 227 builds that used terniary operators).
  • (12/19/20) Added IntProperty variants 'DWORD' and 'UINT' to make it export to cpp as different property type.
  • (12/19/20) CacoFF: Added Outer object parm for AllObjects iterator, also if you use a Struct as Outer you can iterate struct properties.
  • (12/19/20) Added event RanInto for when an encroacher pushed an actor away.
  • (12/19/20) Added NoDuplicate variable modifier to make it not create a clone of EditInLine object when new object is in different package.
  • (12/19/20) Added NoEdSave variable modifier to tell editor to never save this variable.
  • (03/24/21) Added support to call super function in a class pointer (i.e: PlayerOwner.Super(Pawn).TakeDamage(...)).
  • (03/24/21) Added 'NoDuplicate' variable modifier to tell editor to never clone that editinline object to newly instanced object.


  • (11/29/14) WebAdmin improvements:
    • Updated webadmin interface, now it is partially native codes based, new native features include:
      • Image/binary file web response.
      • Binary file downloading from client.
      • Better support for huge data handling.
      • Advanced options property listing.
    • And new web pages:
      • File upload (for simple mod uploading).
      • Advanced options.
      • Web admin accounts manager.
    • Misc features/improvements:
      • Fixed problem where sometimes messaging spectator wouldn't spawn, thus didn't allow for viewing chat log.
      • Added webadmin privilege levels for accounts (0-minimum, 255-maximum privileges).
      • Added DoS connection detection (to block off users that rapidly try to connect to webadmin with different passwords).
  • (12/16/19) Fixed UCC.exe Server commandlet to accept command input.
  • (03/24/21) Fixed WarlordRockets spawning smoke and SeekingRockets spawning decals on servers.
  • (03/24/21) Made clients verify cache files GUID version before using them.
  • (03/24/21) Added server command: UVerifyClient <ID> to manually verify a single or all clients packages with HASH values to verify they are in network sync.
  • (03/24/21) Fixed GameInfo to not send game options to clients when switching levels.


  • (12/04/12) Altered many of Engine classes to use TouchingActors iterator instead of the Touching list array for better results and fewer bugs.
  • (11/11/19) Optimized Real crouching code.
  • (11/11/19) Optimized serverside networking code.
  • (11/11/19) Made vectors better compressed over network between 227j+ clients only.
  • (11/11/19) Made all meshes animations lookup use a mapped hash value instead of an array lookup for a huge performance boost in animation lookup code.
  • (11/11/19) Made Actor shadows use multi-threading for rendering it.
  • (11/11/19) Optimized and improved dynamic zones.
  • (11/11/19) Added a projector feature (Projector.bBuildStaticMap) to make it generate pre-rendered model for BSP and bStatic StaticMeshes for a huge performance boost with MapProjectors.

Bug Fixes

  • (11/11/19) Fixed server to remember what variables has been networked when a bNoDelete actor becomes network irrelevant and then relevant again.
  • (11/11/19) Fixed a security flaw with networking which clients could abuse to leak memory on server.
  • (11/11/19) Fixed a division by zero error with BigRock.
  • (11/11/19) Improved stability with decals and projectors on save/load games.
  • (11/11/19) Fixed a bug with TcpLink and UdpLink which would make it shut down socket twice upon destroy (thus throwing a windows warning).
  • (11/11/19) Fixed SunlightCoronas from shining through static meshes (and optimized it).
  • (11/11/19) Fixed weather emitter particles to also hit static meshes.

New in-game features

  • (02/20/13) Added NoRunAway option into Unreal.ini [Core.System] to enable old crash behavior with RunAwayLimit, to help modders in developing and debugging.
  • (03/03/13) New commands:
    • CacheRip <package>: Rips a specific package
    • CacheRipAll: Rips all packages from the server you are currently in.
    • CacheRipMap: Rips current map and dependencies. In order to avoid confusion, it just grabs the info from the server and uses it to rip the stuff from local cache directory. No server overhead is produced.
      Note that determining the file extension correctly is only working on 227 servers, older servers don't provide the information needed. This way only maps can be identified, any other file will get the extension .u - which will work for Unreal but the disadvantage of that is obvious.
  • (07/20/16) added a new option ContinuousKeyEvents as a client setting to enable old behavior to continue running when typing
  • (07/20/16) New supported prefixes for URL sharing via game chat:
    • mailto: (new)
    • http://
    • https://
    • ftp:// (new)
    • www.
    • ftp. (new)
    • unreal:// (new)
  • (11/11/19) Added flag to level info for SupportsCrouchJumping, which will enable crouch-jumping.
  • (11/11/19) Added FAKELAG <ping> consolecommand for server to fabricate lag (for debugging).
  • (11/11/19) Made HTTP downloading clients notify server of their download progress (for UnrealScript to catch serverside).
  • (11/11/19) Fixed LevelInfo.bCheckWalkSurfaces to work. It will make Texture.Friction scale Pawns walking friction (if you use Friction 10, it will function as a ladder texture, similar to Half-Life).

Unsorted improvements

  • (02/19/15) In order to fix some old crappy problems and missing abilities in Linux, added SDL2Drv and SDL2Launch for Linux. In order to do that all old SDL stuff becomes deprecated and won't make it into 227j: SDLDrv, SDLLaunch, SDLGLDrv, SDLSoftDrv. That's nothing to worry about though, since these have been kept mostly as reference and have no features which could be compared to OpenGLDrv, which can be used in any Linux distro with at least Mesa. Details can be found here: http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1424370983/0#0
    • In the stats page changed the order from V / U to U / V
  • (08/07/17) Linux:
    • Updated Linux SDL to SDL2Drv.
    • Added SDL2 store window position
    • Added Linux ARM port.

Unsorted Bug fixes

  • (11/12/12) Fixed: "Reconnect" didn't work correctly anymore. At least nothing critical although annoying.
  • (12/04/12) Fixed: Fixed a bug with FluidSurfaceInfo where it had wrong shading on larger resolution.
  • (12/09/12) Fixed: Made player footsteps cause wave ripplets on FluidSurfaceInfo as you walk in it.
  • (12/09/12) Reworked all of the code on ProceduralMesh so now it's fully functional and bug-free.
  • (12/09/12) Changed so InterpolationPoint.GameSpeedModifier does not modify Level.TimeDilation in a multiplayer game environment.
  • (12/27/12) Changed CloudZone to avoid crashes with monsterspawners not avoiding to spawn monsters there.
  • (12/27/12) Changed Pawn a bit to improve performance with blood effects.
  • (12/31/12) Fixed Linux segmentation fault when using ScriptedTextures in packages like UTWeapons.
  • (02/10/13) Fixed: AI can see through movers on dedicated servers.
  • (02/10/13) Fixed: Coronas being blocked by BlockAll (ignores bHidden).
  • (02/20/13) Fixed: Meshes on StaticMeshes rendering issue (such as Superhealth packs on StaticMesh ground)
  • (02/20/13) Reverted ScriptedPawn script change (function timer) to old version because of unwanted side effects
  • (03/12/13) Fixed: realcrouch could cause falling through movers.
  • (03/12/13) Fixed: spawnnotify not editable in properties window.
  • (03/29/13) Fixed Linux: relaunch command.
  • (03/29/13) Updated codebase to work with GCC 4.7.2.
  • (03/29/13) Fixed some small memory heap problems in Linux build.
  • (03/29/13) Changed optimization to Core2 for Linux client and server performance (Windows doesn't benefit much from it). This resulted in up to + ~30% FPS gain on some systems. There was no point to keep anymore Pentium3, since even Core2 is a really old system already today, considering Core2 is the oldest CPU supported in Linux.
  • (05/17/13) Cleaned up OpenAL to work better with OpenALSoft in Linux, changed some bad coding, improved EFX error handling. Maybe will fix some of the problems in windows people experienced with non CreativeLabs cards as well.
  • (05/23/13) Fixed (or rather updated) CPU detection code for Windows.
  • (05/23/13) Updated internals for C++ mods and maybe internal updates of something in 227. Like in previous versions, each CPU feature can be disabled via commandline during startup with "NO....", f.e. "NOMMX":
  • (08/16/13) Added yet another catch for execPlaySound / execClientHearSound crash issues.
  • (08/16/13) Fixed: bullet holes don't work on flat surfaces.
  • (08/16/13) Fixed: blood drip rotating wrong when standing still.
  • (08/17/13) Fixed: disappearing Slith carcass bug (slith carcass in corrosive zones, such as slimezone).
  • (10/29/13) UED2.1: fixed default save directory in MusicBrowser.
  • (11/01/13) Fixed: (Non Elite) Mercenary can fire while being invulnerable.
  • (11/30/13) UED2.1: Fixed filter function at the bottom of the texture browser
  • (11/30/13) UED2.1: Fixed building of very large and complex spheres (which did work yet in UED 2.0 due to compiler reasons, but crashed in 2.1)
  • (12/01/13) Fixed so "GoodCollision" movers don't clip through player if large enough and moves fast enough into player. Also changed so if you are inside the mover you can leave from it without it blocking you.
  • (12/03/13) Fixed: AmbushPoints won't work when building map because "taken" variable was set.
  • (12/03/13) Fixed: ScriptedPawn issue: missing animation in state Hunting.
  • (12/03/13) Fixed: UPak.SpinnerProjectile issue: missing explosion sound in Coop.
  • (12/03/13) Fixed: UPak.Predator issue: biters can't bite.
  • (12/03/13) Fixed: Function Engine.Pawn.MoveToward does not work correctly when the parameter NewTarget refers to an Actor whose bDeleteMe == True.
  • (12/03/13) Fixed: UPak.SpaceMarines, when a SpaceMarine leaves a spawn point on level Crashsite2 prematurely, bad things may happen: he may have blue aura, wrong fatness and mass or be completely invisible, his weapon may have wrong fatness too.
  • (12/08/13) Fixed: Linux "gethostbyname failed" error message to return correct error code. Fixing that allowed us to find out that the stalls in the serverbrowser which some people are experiencing in Linux, are caused by gethostbyname not being able to resolve the local hostname on some systems and distros. A possible solution is adding the local hostname to /etc/hosts, this fixes this problem entirely. The new error message allows anyone now to identify the issue.
  • (01/06/14) Fixed: t_skaarj2 and t_skaarj3 hidden in umenu.
  • (01/06/14) UED2.1: Fixed crash when pressing enter in MeshProperties->Textures.
  • (01/06/14) UED2.1: Fixed delete of unused Meshes.
  • (01/07/14) Fixed: Memory leak in dynamic array handling, improvements (DynArrayElement/Array_Insert/Array_Remove)
  • (01/16/14) Fixed: AActor::performPhysics crash issue.
  • (01/28/14) Fixed: Deleting Array entries (such as ServerPackages) from within advanced options getting ignored.
  • (04/06/14) Fixed: "stat light" to show the number of existing dynamic and static lights in a level.
  • (04/06/14) Fixed some potential server security issue.
  • (05/22/14) Fixed some timer issue for windows version, depending on appSeconds(), which causes mostly a problem for servers in relation with MaxTickRate. It seems that only a few systems are affected by this problem (maybe depending on hardware/bios). This bug is existing in all versions before, including 224,225 and 226.
  • (06/29/14) Fixed: very rare TraverseFrom server crash.
  • (06/29/14) Fixed: realCrouch caused falling through static meshes.
  • (10/03/14) Fixed: Improved AI pathfinding even more by storing previous anchor path. So this should reduce the chance of having bots run back and forth between 2 pathnodes on a slope.
  • (10/10/14) Fixed: softdrv rendering bug where meshes were "visible through" bsp.
  • (11/30/14) Fixed a wrong socket error message in execReadText and execReadBinary, fixed some message spam bug in ExportText
  • (01/01/15) Fixed crash when using ?push parameter with switchlevel or servertravel and having shadows enabled.
  • (01/01/15) Fixed: RandomSpreadVector function.
  • (03/09/15) Fixed: Improved ALAudio looping wav code. Thanks Shivaxi for pointing it out!
  • (03/09/15) Added a catch for crippled meshes could crash renderer (d3d9/opengl) when using hwclipping.
  • (05/26/15) Fixed: upak predators may crash or freeze the game (thanks dots).
  • (07/20/15) Fixed: ViewFlash set in delayed (f.e. with amplifier or underwater fog) - this ancient bug was discovered by Shivaxi and debugged by Han - thanks friends!
  • (08/25/15) Fixed: ProjectorDecals not working on movers.
  • (07/20/16) UnrealEd Fixed: When duplicating emitters do particles not spawn on the duplicate when in Realtime Preview mode.
    Copying an emitter from a zone with distance fog crashes the editor in Realtime Preview mode. To recreate this: Duplicate an emitter (in my case a SpriteEmitter), Re-enable Show DistanceFog (see next issue), active Realtime Preview.
    Duplicating any actor resets the settings of all the viewports.
    Making a new class makes the Actor Class Browser show the wrong class selected (the parent of the newly created class) while actually having the new class selected in memory. Causing actions performed on the seemingly selected parent to be performed on the new class instead.
  • (07/20/16) Fixed: Game menu incorrectly handles keyboard input after minimizing the game via Alt + Tab.
  • (07/20/16) Fixed: Bad weapon offset when viewing from a player with hidden DispersionPistol.
  • (07/20/16) Fixed: Problems with pawn bleeding.
    • Immediate pawn bleeding takes place when it's not supposed to happen.
    • Postponed pawn bleeding works only once.
  • (07/20/16) Fixed: Problems related to MarineMatch and SpaceMarines.
    • MarineMatch game immediately ends when TimeLimit is greater than zero.
    • MarineMatch doesn't modify difficulty level according to the bot config.
    • Gender of SpaceMarines is not properly assigned.
  • (07/20/16) Fixed: PlayerCanSeeMe may return true for spectating users whose PlayerReplicationInfo.bIsSpectator is true.
  • (07/20/16) Fixed: UScript bug: a return-statement doesn't work correctly within foreach AllObjects.
  • (07/20/16) Fixed: WeaponAttachment doesn't synchronize ScaleGlow despite bCopyDisplay.
  • (07/20/16) Fixed: Client crash with projector decals (Critical: AProjector:DrawDecalBSP).
  • (07/20/16) Fixed: UCC PackageFlag creates a corrupted unr package.
  • (07/20/16) Fixed: Server doesn't inform clients about closing old connections on map change.
  • (07/20/16) Fixed: [OpenGLDrv, D3D9Drv] bMeshEnviromap doesn't work correctly when UseHardwareClipping is enabled (default setting).
  • (07/20/16) Fixed: [D3D9Drv] Some decorations aren't rendered correctly.
  • (07/20/16) Fixed: [OpenGLDrv, D3D9Drv] Surfaces with attached decals are filled by white color.
  • (07/20/16) Fixed: Pawn shadows have wrong rotation.
  • (07/20/16) Fixed: TimeDemo shows incorrect FPS values when Level.TimeDilation != 1.
  • (07/20/16) Fixed: [D3D9Drv] Fog rendering is buggy.
  • (07/20/16) Fixed: Bug in banning system may cause duplicate (false) entries.
  • (11/28/16) Fixed: AlphaBlending when using SetTile3DOffset (by using Texture.Alpha).
  • (11/28/16) Fixed: AlphaBlend fading (EmFade) when using SpriteEmitters.
  • (11/28/16) Fixed UnrealEd:
    • When duplicating emitters do particles not spawn on the duplicate when in Realtime Preview mode.
    • Copying an emitter from a zone with distance fog crashes the editor in Realtime Preview mode. To recreate this: Duplicate an emitter (in my case a SpriteEmitter), Re-enable Show DistanceFog (see next issue), active Realtime Preview.
    • Duplicating any actor resets the settings of all the viewports.
    • Making a new class makes the Actor Class Browser show the wrong class selected (the parent of the newly created class) while actually having the new class selected in memory. Causing actions performed on the seemingly selected parent to be performed on the new class instead.
  • (11/28/16) Fixed Unreal:
    • AlphaBlend Meshes are not affected by fog. Affected renderers: Direct3D9, OpenGL, XOpenGL.
    • TrailEmitters render incorrectly. Affected renderers: XOpenGL.
    • Beam Emitters are affected by fog, making the beam a solid color. Affected renderers: Direct3D9, OpenGL, XOpenGL.
    • DistanceFog affects emitter particles. Making particles look like squares on things like SpriteEmitters. Affected renderers: Direct3D9, OpenGL, XOpenGL.
    • Switching to XOpenGL breaks texture filtering on BSP (everything looks like the No Smooth flag is set) for the first launch. Closing the game and restarting fixes the texture filtering. Affected renderers: XOpenGL (duh).
    • DistanceFog affects TrailEmitters. Making the trail a solid color. Affected renderers: XOpenGL.
    • DistanceFog causes artifacts on a Fake Backdrop/Skybox. Affected renderers: XOpenGL.
    • Environment map doesn’t work on meshes. Affected renders: Direct3D9, OpenGL, XOpenGL.
    • Masked texture don’t work on meshes. Affected Renderers: Direct3D9.
      Notes: looks like UseFragmentProgram was broken upon implementing exp and exp2 fog. Can't be fixed unless one writes corresponding fragment programs for D3D9, so mask problem on meshes is now fixed, but no exp and exp2 fog for D3D9 users with UseFragmentProgram enabled.
    • DistanceFog renders outside of correct zones even with bZoneBasedFog enabled. Affected renderers: XOpenGL.
    • Meshes always look unlit. Affected renderers: XOpenGL.
    • EnvironmentColor does noting and always renders Environment BSP like it is set to X=1 Y=1 Z=1. Affected renderers: XOpenGL.
    • AlphaBlend BSP is not affected by fog. Affected renderers: Software, Direct3D9, Direct3D10, OpenGL, XOpenGL.
  • (08/07/17) Fixed UED2.1: Sheer tool not working (properly)
  • (08/07/17) Fixed Linux:
    • Save game may crash in some distros due to gethostbyname function in create guid process.
    • SDL2 messagebox for appMsgf (which broke in between obviously).
    • Multithreading code check for IsRunning().
    • SDL2 window/fullscreen resize.
    • SDL2 arrow key down didn't release.
    • appCeilLogTwo may cause crashes (on startup).
    • SDL2 "F11" not working.
  • (08/07/17) Fixed: OnEraseBkgnd in WinViewport implementation.
  • (08/07/17) Several fixes on meshes:
    • Decoration:
      • MonkStatue: fixed stretched UV coordinates
      • Lantern: fixed stretched UV coordinates and added faces to the arm
      • Sconce: added faces to the arm
      • Lamp4: now two-sided and faces were added to the bottom
      • Vase: added faces to the bottom
      • Urn: added faces to the bottom
    • Pickup:
      • Armor: now two-sided and have thickness.
      • Health: added faces to the bottom
      • Clip: added faces to the bottom
      • Stingerammo: added faces to the bottom
      • Shells: added faces to the bottom
      • Sludge: added faces to the bottom
      • New Quadshot firstperson model and animations.
  • (10/12/17) Fixed none masked beta skin of devilfish.