Skip to content

experimental-latest

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 29 Dec 23:57
· 33 commits to main since this release
f12f0be

some notes about most important changes such as:

  • changing of default ue4ss install location, overriding and its backwards compatibility
  • new build system
  • linux port

New

General

Added support for UE Version 5.5 - (UE4SS #708)

Added support for UE Version 5.4 - (UE4SS #503)

Added basic support for Development/Debug/Test built Unreal Engine games (UE4SS #607)

  • To use this functionality, set DebugBuild to true in UE4SS-Settings.ini

Added new build definition "LessEqual421". Using this definition for games on UE<=4.21 is not mandatory for UE4SS to function, but will ensure the correct alignment is used in containers.

BREAKING: - This also changes the default FName alignment from 8 to 4.

  • To use this functionality, enter LessEqual421 in the section of the XMake configuration command.

Added optional scans for GUObjectHashTables, GNatives and ConsoleManagerSingleton; made FText an optional scan; externed the found GNatives for use by mods(UE4SS #744)

  • GUObjectHashTables and ConsoleManagerSingleton are currently unused and a WIP.

UE Platform support, which allows for much easier internal implementation of new Unreal classes (UEPseudo #80) - narknon, localcc

Added new installation method by allowing overriding of the location of the UE4SS.dll, documentation. - (UE4SS #506) - Buckminsterfullerene

Add Github alerts pre-processor support to the documentation system (UE4SS #611) - Buckminsterfullerene

Added custom game configurations for Abiotic Factor (UE4SS #709)

Added custom game configurations for Psychonauts 2 (UE4SS #731)

Live View

Added search filter: IncludeClassNames. (UE4SS #472) - Buckminsterfullerene

UHT Dumper

Lua API

Added global function CreateInvalidObject, which returns an invalid UObject. (UE4SS #652)

Added GenerateLuaTypes function. (UE4SS #664)

Added global Dumpers functions to Types.lua. (UE4SS #664)

Types.lua PR #650

  • Added NAME_None definition
  • Added EFindName enum definition
  • Added FName function overloads with FindType parameter

UEHelpers

  • Added function GetPlayer which is just a fast way to get player controlled Pawn (the majority of the time it will be the player character) PR #650

  • Added functions: GetEngine, GetGameInstance, GetGameViewportClient, GetGameModeBase, GetGameStateBase,GetPersistentLevel and GetWorldSettings PR #650

  • Added functions to get static objects: GetKismetStringLibrary, GetKismetTextLibrary PR #650

  • Added function GetActorFromHitResult which extracts the hit actor from a FHitResult struct based on UE's version PR #650

  • Added FName utility functions PR #650:

    • FindFName: wrapper for FName(Name, EFindName.FNAME_Find)
    • AddFName: wrapper for FName(Name, EFindName.FNAME_Add)
  • Added Lua Server Annotations to all UEHelpers functions PR #650

  • Added functions GetAllPlayerStates and GetAllPlayers PR #688

C++ API

Key binds created with UE4SSProgram::register_keydown_event end up being duplicated upon mod hot-reload.

To fix this, CppUserModBase::register_keydown_event has been introduced.

It's used exactly the same way except without the UE4SSProgram:: part. (UE4SS #446)

Added on_ui_init(), it fires when the UI is initialized.

It's intended to use the UE4SS_ENABLE_IMGUI macro in this function.

Failing to do so will cause a crash when you try to render something with imgui.

BREAKING: Changed FTransform constructor to be identical to unreal.

Added OpenFor::ReadWrite, to be used when calling File::open.

This can be used when calling FileHandle::memory_map, unlike OpenFor::Writing. (UE4SS #507)

Added hook for UGameViewportClient::Tick. (UE4SS #767)

BPModLoader

Experimental

Changes

General

Changed the default location of the UE4SS release assets to be in game executable directory/ue4ss/. This change is backwards compatible with the old location. (UE4SS #506) - Buckminsterfullerene

Updated PatternSleuth submodule (UE4SS #638)

The bUseUObjectArrayCache option in UE4SS-settings.ini is now set to false by default in the non-zDev release (UE4SS #747)

Live View

Fixed the majority of the lag (UE4SS #512)

Added support for watching ArrayProperty and StructProperty (UE4SS #419)

The search filter ExcludeClassName can now be found in the IncludeClassNames dropdown list. (UE4SS #472) - Buckminsterfullerene

The following search filters now allow multiple values, with each value separated by a comma: IncludeClassNames, ExcludeClassNames, HasProperty, HasPropertyType. (UE4SS #472) - Buckminsterfullerene

UHT Dumper

Lua API

print now behaves like vanilla Lua (can now accept zero, one, or multiple arguments of any type) (UE4SS #423) - Lyrth

The callback of NotifyOnNewObject can now optionally return true to unregister itself (UE4SS #432) - Lyrth

RegisterConsoleCommandHandler, RegisterConsoleCommandGlobalHandler, RegisterProcessConsoleExecPreHook and RegisterProcessConsoleExecPostHook now support enclosing parameters in double quotes ("). This allows spaces within the quotes to be ignored, treating the enclosed string as a single parameter. (UE4SS #653, UE4SS #669)

BREAKING: RegisterProcessConsoleExecPreHook, RegisterProcessConsoleExecPostHook callback parameter CommandParts now includes the command name at the start of the array (lua array index 1). (UE4SS #669)

UEHelpers UE4SS #650

  • Increased version to 3

  • Reworked all UEHelpers functions to ensure that they always return an object which can be checked with the function IsValid for validation

  • Reworked UEHelpers.GetPlayerController to return first valid player controller (It will now return a player controller even if it doesn't control a pawn at the time)

  • Reworked UEHelpers.GetWorld function to use UWorld cache (UWorld usually never changes)

  • Change UEHelpers.GetWorldContextObject function annotation to return UObject. (Any UObject with a GetWorld() function is a valid WorldContext)

  • Removed duplicate function UEHelpers.GetKismetMathLibrary

C++ API

BPModLoader

BPModLoader now supports loading mods from subdirectories within the LogicMods folder (UE4SS #412) - Ethan Green

ConsoleEnablerMod

Added additional console key ~ (Tilde) (UE4SS #687)

The console keys F10 and ~ are now added by the mod in addition to the existing keys instead of replacing them (UE4SS #687)

Repo & Build Process

Switch to xmake from cmake which makes building much more streamlined (UE4SS #377, UEPseudo #81) - localcc

Fixes

General

Fixed BPModLoaderMod not working in games made in UE 5.2+ - (UE4SS #503)

Fixed adding elements to TArray in Lua incorrectly resizing and zeroing out previous values (UE4SS #436) - dnchattan

Fixed some debug GUI layout alignments, especially with different GUI font scaling settings (UE4SS #429) - Lyrth

Fixed PalServer not accepting connections from players (UE4SS #453)

Fixed a crash that would occur randomly due to accidental execution of Live View search code (UE4SS #475)

Fixed freeze related to the error "Tried to execute UFunction::FuncPtr hook but there was no function map entry" (UE4SS #468)

Fixed ModsFolderPath in UE4SS-settings.ini not working (UE4SS #609)

Fixed attempt to index a nil value (global 'NewController') error in SplitScreenMod (UE4SS #729)

Live View

Fixed the "Write to file" checkbox not working for functions in the Watches tab (UE4SS #419)

Reduced the likelihood of a crash happening on shutdown when at least one watch is enabled (UE4SS #419)

Fixed constantly searching even if the search field is empty, and even if not on the tab (UE4SS #475)

UHT Dumper

Fix SetupAttachment implementations randomly changing order (UE4SS #606) - Buckminsterfullerene

Lua API

Fixed FString use after free (UE4SS #425) - localcc

Fixed the "IterateGameDirectories" global function throwing "bad conversion" errors (UE4SS #398)

Fixed FText not working as a parameter (in RegisterHook, etc.) (UE4SS #422) - localcc

Fixed crash when calling UFunctions that take one or more 'out' params of type TArray. (UE4SS #477)

Fixed FindObject not accepting UClass as a valid outer parameter. (UE4SS #732) - GhostyPool

Fixed RegisterProcessConsoleExecPostHook. (UE4SS #631)

Fixed FindFirstOf return type annotation in Types.lua to signal that the return value will never be nil. (UE4SS #652)

Fixed non-const TArray outparams being skipped in UFunction property pushers. (UE4SS #754)

Fixed Key::NUM_ZERO being incorrectly mapped to
Key::NUM_NINE. (UE4SS #762)

C++ API

Fixed a crash caused by a race condition enabled by C++ mods using UE4SS_ENABLE_IMGUI in their constructor (UE4SS #481)

Fixed the std::span returned by FileHandle::memory_map being improperly sized. (UE4SS #507)

Fixed 'File::Handle' unable to be moved if used in conjunction with memory_map. (UE4SS #544)

Fixed Key::NUM_ZERO being incorrectly mapped to Key::NUM_NINE. (UE4SS #716)

BPModLoader

Fixed "bad conversion" errors (UE4SS #398)

Fixed calling PostBeginPlay multiple times for each ModActor (UE4SS #447) - Okaetsu

Fixed displaying 'PostBeginPlay not valid' when VerboseLogging is set to false (UE4SS #447) - Okaetsu

Fixes mods not loading when UE4SS initializes too late (UE4SS #454) - localcc

Fixed LoadMod function issue that variables would go out-of-scope in the ExecuteInGameThread callback. Instead, LoadMods is now always called in a game thread. (UE4SS #752)

Settings

Added

[EngineVersionOverride]
; True if the game is built as Debug, Development, or Test.
; Default: false
DebugBuild = 

[Hooks]
HookLoadMap = 1
HookAActorTick = 1
HookGameViewportClientTick = 1

Removed

[Debug]
LiveViewObjectsPerGroup = 32768