Repository navigation
v0.4.0-pre2: first spawn, blood, gore, weapons, delay (fixes from the first two-player test)
Pre-releasePre-release: fixes from the first two-player test. Not yet re-tested on two machines. Every offline check passes: build with -Werror, 35 unit test programs under ASan/UBSan, a 300k-input protocol fuzz, 501/501 mutants killed, and the DLL export check. Protocol revision 10: everyone must update. v0.4.0-pre1 cannot join this version.
Fixed
- First spawn. The client used to spawn with only their weapon and could not see the host. It now waits until the level has finished its own start-up cleanup, then spawns dressed. A stand-in the game destroys is re-created.
- Severed limbs now show on both screens. The severed-parts map is now read with the correct UE 5.4 layout.
- Blood and wounds now show on both screens. The owner of the hit fighter sends what it painted, and every other machine replays it on its stand-in.
- Weapons disappearing. Drawing and sheathing are mirrored, so a drawn weapon shows in the stand-in's hand and goes back to its slot.
- Tavern screen. The game's single-player win, lose and next-fight screens, and the pause they cause, are blocked in session matches.
- Delay. The game now uses the time Steam received a pose, not the time it was read, so slow frames no longer inflate the buffer. Every 5 s,
HSMMod.logshows frame time (avg/p99) and the ping to each player.
Install
Copy dwmapi.dll into <Half Sword>/HalfswordUE5/Binaries/Win64/, replacing any older copy. HSMMod.ini is created on first run. Everyone needs this same version and Steam game build 24185754.
Linux / Steam Deck (Proton): Proton loads its own built-in dwmapi.dll unless told otherwise. In Steam, right-click Half Sword → Properties → General → Launch Options and set:
WINEDLLOVERRIDES="dwmapi=n,b" %command%
Windows players need no launch option.
To use the older host-simulates-everyone sync, the host sets sync_mode=host under [net] in HSMMod.ini.
Known limits
- A weapon picked up from the floor stays a loose prop on other screens and can trail the hand a little.
- A weapon moved to the other side's sheath (right-hand weapon into a left slot) is not mirrored.
- The grab pull is a soft handle, not the game's own grab constraint.
- Level props are not synced.
Please report bugs with the HSMMod.log from both machines.
dwmapi.dll SHA-256: f4154f04727b58df3e3f823d8ecfa147b94674d7709dae31a6cad85d257312b5
Contains code ported from Cyrex0/HalfSword-MP, Copyright (c) 2026 Cyrex0 and the HalfSword-MP contributors, MIT (see THIRD_PARTY_NOTICES.md, attached). Unofficial fan mod, not affiliated with Half Sword Games.