v4.0.0-rc.3
Pre-release⚠️ PRE-RELEASE ⚠️
NOTICE: This is a pre-release version of the mod SDK, meant to test out the new features and changes before a proper
release. Unless you're a mod developer, we'd suggest waiting for the final release.
This release brings support for the latest game update (3.250.0.0), alongside a variety of new features and
improvements.
⚠️ Breaking Changes ⚠️
New Linking Requirements
When compiling your mod, you might get an unresolved external symbol linker error. To resolve it, add implot to target_link_libraries in your CMakeLists.txt.
ZString Constructor Changes
The ZString(const char*) constructor has been removed. Code using const char* variables must now use
ZString::AllocateFromCStr(myStr) or convert to std::string. String literals continue to work as before.
IRenderer Interface Changes
The DrawText2D method now requires separate horizontal and vertical alignment parameters (the last parameter was split
into two).
Glacier Hook, Function, and Type Changes
Several Glacier hooks, functions, and types have changed. Please make sure to go through any usages in your mods and update your code accordingly. Some notable changes are listed below for clarity:
ZDynamicObject::ToStringnow takesZString&instead ofZString*.ZEntitySceneContext::LoadScenereturn type is changed from void to bool.m_RepositoryIdinZItemConfigDescriptoris renamed tom_ItemID.m_aActiveActorsinZActorManageris renamed tom_activatedActors.m_nCurrentBehaviorIndexproperty inZActoris renamed tom_nActorRuntimeId.SBehaviorDatais renamed toSBehaviorStateand moved intoZBehaviorService.- Renamed
GetWorldMatrixtoGetObjectToWorldMatrixandSetWorldMatrixtoSetObjectToWorldMatrixFromEditorand replacedm_nUnknownFlagswith bitfields inZSpatialEntity. - Classes and structures in
ZEntity.handReflection.hare renamed and their fields and methods are renamed:ZClassPropertyis renamed toSNamedPropertyInfoZClassConstructorInfois renamed toZConstructorInfoZClassComponentis replaced withSBaseClassInfoandSComponentMapEntryZEnumEntryis renamed toSEnumItemSArrayFunctionsis renamed toSContainerTypeVTableZEntityPropertyis renamed toSPropertyDataZEntityInterfaceis renamed toSInterfaceDataZPinis renamed toSPinData
For additional details on changes to Glacier types see PR #238.
New Features
Editor Enhancements
- Keyboard Navigation: Added keyboard selection support in entity tree.
- Repository ID Support: Handle repository IDs in entity properties.
- Improved Filters: Added popup with class names, search bar for entity names, and clear filters button.
- Property Fixes: Fixed crash when getting properties on entities with no properties pointer.
- NavKit Integration: NavKit can now be used alongside the editor to generate nav meshes for levels.
- Dynamic & Unparented Entities: Dynamically spawned entities and entities not parented to the scene are now shown in the entity tree.
- Added copy buttons for entity name, repository ID, and runtime resource ID.
- Added more entity parent resource IDs to the entity properties windows.
- Added Unicode-aware string handling and diacritic-insensitive search.
- Added Rooms menu with search, visibility filters and entity selection.
- Added support for dynamic entities for debug entities.
- Added copy buttons to more property types.
- Add support for
ZCurve,TFixedArray,ZRuntimeResourceID,ZGuidandZGameTimeproperty types. - Added 2D curve visualization with ImPlot.
- Implemented full actor inventory management in the Actors menu:
- Display inventory items
- Add and remove items
- Select main weapon
- Filters for alive actors, civilians, guards, male actors, female actors, targets, active enforcers, potential enforcers, dynamic enforcers, crowd characters, active sentries and actors with cloth outfit are added in Actors menu.
- Added option to automatically scroll the actor list to the actor selected with the mouse in game.
- Menus (Items, Actors, Debug Channels) are now independent of editor window visibility.
Debug & Visualization Features
- NavPower Support: Added navmesh loading, viewing, and chunking support.
- Reasoning Grid Visualization: Options to draw planner areas, solid areas, colorize usage flags, connectivity, and
penalty multipliers. - Gizmo Rendering: Added support for rendering debug gizmos (useful for entities that don't have a visual presence).
- Highlight Modes: Added options to select highlight mode (lines/triangles) for selected entities.
- 3D Depth Drawing: New
OnDepthDraw3Dcallback for mods, which occludes drawn primitives based on depth.
Input & Controls
- Noclip Improvements: Added proper input action bindings instead of using
GetAsyncKeyState. - FreeCam Updates: Changed teleport binding to
LCTRL/RCTRL+F6. - Input Event Buffering: Prevent buffered events from being processed by the game after ImGui is closed.
Crash Reporting & Stability
- Optional Sentry Integration: Added opt-in crash reporting via Sentry. You will be prompted to configure this on first startup.
- Startup Validation: Added additional checks during SDK startup to prevent breaking the game on major updates.
- Mod Compatibility Checking: Prevents loading incompatible mods that haven't been updated.
New Player mod
- Extracted player-related functionality from DebugMod into a dedicated Player mod.
- Display initial outfit name, character set index, and outfit variation index.
- Fixed outfit changing logic.
- Fixed various crashes when transitioning between scenes.
- Added toggles for invisibility, invincibility, and infinite ammo.
- Fixed cameras detecting Hitman when invisible.
New Assets mod
- Extracted assets menu from Editor into a standalone mod.
- Improved item type detection logic.
New Outfits mod
- Allows loading/unloading outfits from other scenes and specific outfit bricks.
New Randomizer mod
- Provides configurable item and weapon randomization.
New World mod
- Allows modifying the game time multiplier.
New TitaniumBullets mod
- Allows for shooting through walls.
Math & Rendering
- Frustum & Distance Culling: Implemented view frustum and distance culling for 3D rendering.
- DirectXTK Renderer:
- Improve support for line, triangle, and text rendering.
- Implemented rendering for bounding quads, triangles, meshes, and 3D text.
- Added UTF-8 text rendering support for 3D text.
Online Tools
- Dynamic Resource Loading: Added option to enable dynamic resource loading (fixes Peacock strings issue)
- ZString Improvements: Fixed issues around ZString usage, better string handling and memory management
Other Changes
- Fixed game crash on editor unload.
- Fixed issue where player menu couldn't be closed.
- Fixed
ActivateRagdollfunction. - Fixed enum property casting issues.
- Fixed memory leaks in various systems.
- Fixed F11 not hiding 3D SDK elements.
- Specifying the
auto_load_sceneoption in the SDK ini allows auto-loading a scene on game startup. - Introduced editor-style freecam setting with persistent checkbox state to the FreeCam mod.
- Scene names, code name hints, and titles are now loaded from JSON files instead of being hardcoded in the DiscordRichPresence mod.
- Fixed entity tree sorting for numeric name suffixes.
Community Contributions
This release includes contributions from:
- @pavledev - Extensive editor improvements, rendering enhancements, and bug fixes
- @dbierek - NavKit integration and editor UI improvements
- @ldallmayr - Dynamic resource loading option
- @Deji69 - Editor improvements and bug fixes
- @HRSoftware - Editor improvements and bug fixes
- @elijah-wright - DebugMod / ActorManager bug fixes
- @piepieonline - New hooks
- @scrungofan - Editor mod property display improvements
- @toast003 - Steam Deck installation instruction fixes
- @Prekzursil - TitaniumBullets mod
- @Joschuka - Further navkit integration refinements