Skip to content

v4.0.0-rc.3

Pre-release
Pre-release

Choose a tag to compare

@OrfeasZ OrfeasZ released this 27 Jan 16:58
· 49 commits to master since this 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 ⚠️

⚠️ This release contains breaking changes. You will need to update your mods accordingly! ⚠️

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::ToString now takes ZString& instead of ZString*.
  • ZEntitySceneContext::LoadScene return type is changed from void to bool.
  • m_RepositoryId in ZItemConfigDescriptor is renamed to m_ItemID.
  • m_aActiveActors in ZActorManager is renamed to m_activatedActors.
  • m_nCurrentBehaviorIndex property in ZActor is renamed to m_nActorRuntimeId.
  • SBehaviorData is renamed to SBehaviorState and moved into ZBehaviorService.
  • Renamed GetWorldMatrix to GetObjectToWorldMatrix and SetWorldMatrix to SetObjectToWorldMatrixFromEditor and replaced m_nUnknownFlags with bitfields in ZSpatialEntity.
  • Classes and structures in ZEntity.h and Reflection.h are renamed and their fields and methods are renamed:
    • ZClassProperty is renamed to SNamedPropertyInfo
    • ZClassConstructorInfo is renamed to ZConstructorInfo
    • ZClassComponent is replaced with SBaseClassInfo and SComponentMapEntry
    • ZEnumEntry is renamed to SEnumItem
    • SArrayFunctions is renamed to SContainerTypeVTable
    • ZEntityProperty is renamed to SPropertyData
    • ZEntityInterface is renamed to SInterfaceData
    • ZPin is renamed to SPinData

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, ZGuid and ZGameTime property 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 OnDepthDraw3D callback 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 ActivateRagdoll function.
  • Fixed enum property casting issues.
  • Fixed memory leaks in various systems.
  • Fixed F11 not hiding 3D SDK elements.
  • Specifying the auto_load_scene option 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: