Since 2.0.4 the DX12 backend compiles only the HDR-aware pixel shader at runtime with D3DCompile(). Wine's builtin d3dcompiler (macOS, Apple's Game Porting Toolkit) cannot build it, so ImGui_ImplDX12_CreateDeviceObjects() failed and the launcher refused to open on every Mac. Try the HDR-aware shader first, then the stock one 2.0.3 shipped (on a failed compile or a failed pipeline). ImGui_ImplDX12_HasOutputTransfer() tells the launcher and overlay which one is drawing, and they log it. Windows keeps the HDR shader and HDR output as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Third-party dependencies
| Library | Pinned revision | License | Upstream |
|---|---|---|---|
| Dear ImGui (v1.91.9b) | f5befd2d29e66809cd1110a152e375a7f1981f06 |
MIT | ocornut/imgui |
| Microsoft Detours | adb07604aa56508448b95bf037c2a6d0d3b6831a |
MIT | microsoft/Detours |
| Tencent RapidJSON | 24b5e7a8b27f42fa16b96fc70aade9106cf7102f |
MIT, with bundled BSD notices | Tencent/rapidjson |
| spdlog (v1.17.0) | 79524ddd08a4ec981b7fea76afd08ee05f83755d |
MIT | gabime/spdlog |
| SQLite | 3.53.4 (3530400) |
Public domain | sqlite.org amalgamation |
| Valve networking ABI headers | a424b7db649438acafb60c99cae6667587c42732 |
BSD-3-Clause | ValveSoftware/GameNetworkingSockets |
| miniz | 3.1.2 |
MIT | richgel999/miniz |
| bcdec | 80859ed3b7afb1c527a2a99d70c61457bea72d0c |
MIT or Unlicense | iOrange/bcdec |
| LZ4 | 1.10.0 |
BSD-2-Clause | lz4/lz4 |
| Zstandard | 1.5.7 |
BSD-3-Clause (dual-licensed with GPLv2; used under BSD) | facebook/zstd |
| Montserrat font | fonts/Montserrat-*.ttf |
SIL Open Font License 1.1 | JulietaUla/Montserrat |
| Permanent Marker font | fonts/PermanentMarker-Regular.ttf |
Apache 2.0 | Google Fonts |
manifest.json records the upstream SHA-256 for every vendored file, with declared
local patch hashes where applicable. Detours and RapidJSON came from pinned GitHub
source archives; ImGui came from pinned upstream source URLs. Builds require no
package manager or network access. Keep each library's license file (LICENSE for spdlog, LICENSE.txt for the others) in source
distributions and alongside binaries that use it.
Detours owns instruction relocation and hook transactions. The project adapter is
in Engine/Core/Hooks/hooks.cpp. RapidJSON supplies the SAX reader and JSON writers;
DingoSDK's owning value model is in Engine/Core/Json/json.h and
Engine/Core/Json/json.cpp.
The ImGui local vendor patch is imgui/backends/imgui_impl_dx12.cpp: font upload
checks resource/command failures, bounds its GPU wait to five seconds, propagates
failure, and retains submitted resources on timeout to avoid premature release.
Detours has a local patch in detours/src/detours.cpp: transaction thread and
operation records use VirtualAlloc/VirtualFree instead of the shared heap.
Enlistment and cleanup can run while another thread owns the heap lock and is
suspended, so ordinary new/delete can deadlock startup. Both record types use
the same allocation path for successful commits, failed enlistment, and aborts.
The patch also preserves function-entry and jump-back boundaries when the
compact x64 alignment table truncates an offset of eight or more. Thread context
updates distinguish relocated code from the x64 replacement-entry stub and stop
after one remap. The instruction decoder remains upstream. Related upstream
discussions: allocator deadlock
and thread context updates.
Current patch hashes are recorded under local_patches. RapidJSON is unmodified.
spdlog is used header-only with the VS2022 C++20 std::format backend;
bundled fmt is not distributed. Engine/Core/Log owns shared formatting,
categories, severity filtering, repeat suppression, console output, and a Win32
append sink. The launcher resets the single file before the runtime appends to
it, so two processes never use competing buffered file offsets. This layout
takes inspiration from R5SDK's logger.
SQLite is the unmodified official C amalgamation, compiled into the runtime. manifest.json includes the archive SHA3-256 and individual source
SHA-256 hashes. Extension loading and double-quoted SQL string literals are
disabled; thread safety is enabled. ReSkate uses prepared statements, strict domain
tables, WAL with full synchronous commits, and SQLite's online backup API. The
public-domain notice is retained in sqlite/LICENSE.txt.
steam_networking contains unmodified public headers for the v012 Steam
Networking Sockets ABI. ReSkate resolves flat exports from the game's verified
original steam_api64.dll. It does not link the standalone networking library, and the
client package carries no Steam DLL; the dedicated server package carries the Steam files
it signs in with (see Server/README.txt). Keep steam_networking/LICENSE with distributions.
LZ4 1.10.0 (lz4/) supplies the unmodified BSD-2-Clause block codec for bounded, lossless multiplayer packet compression. Source hashes and upstream tag are recorded in manifest.json; packages include licenses/lz4-LICENSE.txt.
Zstandard 1.5.7 (zstd/) is the library's common, compress and decompress sources, built without legacy format
support or assembly, for multiplayer packet and game archive compression. It is not
yet hashed in manifest.json. Packages include licenses/zstd-LICENSE.txt (the
BSD license; COPYING is the alternative GPLv2 grant).
miniz supplies the ZIP reader for the launcher's downloads (DepotDownloader, the
content cache, Thunderstore mods) and the dedicated server's updates.
The official 3.1.2 amalgamation is unmodified; compression, archive writing,
zlib compatibility, stdio and timestamp APIs are disabled. Extraction writes only
the expected file to a fixed temporary path, bounds its size, and checks the
uncompressed SHA-256 before replacing the cache. Keep miniz/LICENSE.txt with
binary packages. Builds do not fetch the library.