Skip to content

v3.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 04 Feb 17:06
· 170 commits to main since this release

After 9 months in development, we hope 3.0 was worth the wait. We want future releases to be more frequent, as constantly telling people "try latest experimental" is never a good solution.

For the next release, we have some exciting new features in development, so stay tuned for those. We're very excited to reveal what we've been working on soon, but we really needed to get 3.0 out first.

-UE4SS team

Installation over 2.5.2

Remember to check the README for the latest installation instructions.

Since the UE4SS-settings.ini has changed in this release, you should use the new one, so if you have made settings changes, remember to back them up!

When installing 3.0 in the place of the previous release 2.5.2, you must replace all existing UE4SS files with new files, except for the UE4SS_Signatures folder if your game is using custom sigs.

3.0 also uses two new dlls:

  • UE4SS.dll
  • dwmapi.dll

and no longer uses the older xinput1_3.dll, so please also delete xinput1_3.dll if you have one.

New

General

Added support for UE Version 5.2 and 5.3 games

New proxy DLL loading system. - LocalCC
Different proxy DLLs can now easily be compiled for cases where xinput1_3 cannot be used for any reason.
Alternative proxys may be compiled by specifying -DUE4SS_PROXY_PATH=/Path/To/DLL.dll when running the CMake command.

Replace built-in address scans with patternsleuth which should greatly improve accuracy and reduce need for manual AOB configuration - trumank, LongerWarrior

Added SuperStruct, sps, to Struct and ScriptStruct entries in the object dumper

Live View

Can now view enum values in the Live View debugger

Added ClassFlags to UClass and derivatives

Added a checkbox that toggles search options globally, meaning when not searching

Added search filter Function parameter flags, it excludes objects that are non-UFunctions and UFunctions that don't have params with the specified flags

Added search filter Non-instances only

Added search filter Include CDOs, it includes objects that are not a ClassDefaultObject or an ArchetypeObject

Added search filter CDOs only, it excludes objects that are not a ClassDefaultObject or an ArchetypeObject

Added search filter Use Regex for search - HW12Dev

Added search filter Exclude class name, it excludes objects with a ClassPrivate name not containing the specified (case-sensitive) string

Added search filter Has property, it exclude objects that don't have a property (inheritance included) of the specified (case-sensitive) name

Added search filter Has property of type, it excludes objects that don't have a property (inheritance included) of the specified (case-sensitive) type

UHT Dumper

Removed unnecessary explicit _MAX elements from enums

Made FWeakObjectPtr overridable unless used in a TArray or TMap

Lua API

Added an optional third parameter to RegisterHook
If provided, it will act as a post callback hook where out-params can be modified
Note that for BP-only functions, both callbacks act as post callbacks
If the hooked function has a return value, the second param to the post callback will be the return value

Out-params for script hooks (RegisterCustomEvent or RegisterHook on a BP-only UFunction) can now be set by doing Param:set(<new-value>)

Added the function Empty to TArray

Added RegisterLoadMapPreHook/RegisterLoadMapPostHook hooks for UEngine::LoadMap.

C++ API

Finalize C++ API. - LocalCC; Truman

Removed need for "cppsdk" when linking C++ mods. This is due to the new proxy system. - LocalCC
Due to the above change, C++ mods now only need to link to UE4SS.

C++ mods are now loaded earlier, and will keep the game from starting until all mods have finished executing their start_mod function

Made calls to UObject::StaticClass work for custom UObject classes that have been made with the DECLARE_EXTERNAL_OBJECT_CLASS and IMPLEMENT_EXTERNAL_OBJECT_CLASS macros

Expose IMGui to C++ mods - Truman

Added on_lua_start for C++ mods.
Overload #1: This function fires whenever any Lua mod is started.
Overload #2: This function fires whenever a Lua mod by the same name as the C++ mod is started.
It allows interactions with Lua from C++ mods.

Added on_lua_stop for C++ mods.
Overload #1: This function fires whenever any Lua mod is about to be stopped.
Overload #2: This function fires right before a Lua mod by the same name as the C++ mod is about to be stopped.

Added UFunction::RegisterPreHookForInstance and UFunction::RegisterPostHookForInstance
These functions work the same as UFunction::RegisterPreHook/UFunction::RegisterPostHook except the callback is only fired if the context matches the specified instance
These new functions need to be handled with care as they can cause crashes if you don't validate that the instance you're passing during registration is valid inside the callback

Added overloads for UObject::GetFunctionByName and UObject::GetFunctionByNameInChain that take an FName instead of a string

Added UEnum::NumEnums, which returns the number of enum values for the enum

Added UEnum::GenerateEnumPrefix, which is the same as https://docs.unrealengine.com/5.2/en-US/API/Runtime/CoreUObject/UObject/UEnum/GenerateEnumPrefix/

Added UGameplayStatics::FindNearestActor

Added the following functions to AActor: K2_DestroyActor, K2_SetActorLocation, K2_SetActorLocationAndRotation, K2_GetActorRotation, K2_SetActorRotation, GetActorScale3D, SetActorScale3D, GetActorEnableCollision, SetActorEnableCollision, SetActorHiddenInGame, IsActorTickEnabled, SetActorTickEnabled, GetActorTickInterval, SetActorTickInterval, GetActorTimeDilation - Okaetsu

Experimental

Added ExperimentalFeatures section to UE4SS-settings.ini. All experimental features will default to being turned off. To use referenced features, change the relevant config setting to = 1

Added ability to call UFunctions from Live View GUI

Changes

General

The shortcut (CTRL + O) for opening the GUI is now a toggle, meaning it can also be used for closing the GUI

The shortcut (previously J) for dumping objects (generating UE4SS_ObjectDump.txt) has been changed to CTRL + J

The shortcut (previously D) for generating CXX headers has been changed to CTRL + H

Change AOB Sig Scanner backend to use std::find for major performance increase - inspired by Truman

Scan for specified time rather than number of attempts due to speed increase

Improved performance for U/FProperty lookups

Improved performance for UFunction lookups

Improved performance of the GUI log, it's now O(n) - trumank

BPModLoaderMod: Add ability to specify load order - Okaetsu

Add additional extensions to USMap dumper - Atenfyr; Archengius

Fix bug in USMap dumper with enums with 256 entries - Atenfyr

Live View

UHT Dumper

Lua API

Improved reliability of IsValid

C++ API

The callbacks for all hook registration functions inside the Unreal::Hook namespace can now take lambdas that capture variables

Changed many functions to use coroutines - LocalCC
This means the syntax for those functions is now identical to a range-based for loop instead of a function taking a callback

Repo & Build Process

Add automated release script - Truman

Change documentation build process; the docs will now have a dev version (at /dev) for changes on main branch and a current version (at normal root) for the state of the docs at the current release - Truman; Buckminsterfullerene

Removed libfmt dependency

Gradual work on getting Clang to work - LocalCC; Narknon

Fixes

General

Finish adding version 4.11 support

Fix case preserving names switch - LocalCC

Live View

Fixed two crashes occurring when exploring structs nested in arrays or other structs

UHT Dumper

Fixed enums inappropriately using uint8

Lua API

Fixed UnregisterHook

Fixed FText:ToString - LocalCC

Improved stability when using hooks or ExecuteInGameThread

TArrays are now resized when being indexed into if necessary

C++ API

Fixed FText constructor implementation via optional AOB - LocalCC

Fixed initialization functions not being correctly called when a mod is restarted - LocalCC

Fixed C++ mods not loading if a Lua mod with the same name is present

Settings

Added:

; Whether the cache system for AOBs will be used.
; Default: 1
UseCache = 1

; The number of seconds the scanner will scan for before giving up
; Default: 30
SecondsToScanBeforeGivingUp = 30

[ExperimentalFeatures]
GUIUFunctionCaller = 1

Removed:

; The maximum number attempts the scanner will try before erroring out if an aob isn't found
; Default: 60
MaxScanAttemptsNormal = 60

; The maximum number attempts the scanner will try for modular games before erroring out if an aob isn't found
; Default: 2000
MaxScanAttemptsModular = 2500