Steamworks SDK 1.64 vendored at extern/steamworks_sdk_164 (headers + win32 redistributables only; .gitignore trims the rest). Both projects build with RP412_STEAM; activation stays behind the RP412STEAM=1 environment switch, so plain desktop runs never touch Steam. L4STEAMTRANSPORT.cpp implements NetTransport on ISteamNetworkingSockets with FakeIP: SteamNetTransport_Install brings up SteamAPI, relay network access, and a two-port FakeIP identity (fake port 0 = console channel, 1 = game mesh), then swaps the process wire; any failure logs the reason and the game carries on over TCP. Addressing keeps the engine untouched: all pods share the -net port convention, eggs carry fakeip:engineport, and the transport alone translates engine ports to Steam fake ports via the lobby-fed peer table (RegisterPeer). Connect mirrors the TCP retry-while-refused loop; Receive normalizes message lanes back into the stream semantics CheckBuffers expects. Runtime verified on this box: RP412STEAM=1 under AppID 480 came up as 169.254.59.52 (fake ports 32256/32257); without Steam credentials it falls back to TCP cleanly; default boot logs no Steam lines at all. steam_api.dll ships in the dist. Next: the lobby layer (ISteamMatchmaking member data -> RegisterPeer + egg build + RPL4CONSOLE marshal), which needs a second account to test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
12 lines
550 B
Plaintext
12 lines
550 B
Plaintext
# Vendor only what the build uses: the SDK headers and the win32
|
|
# redistributables. Examples, tools, and other platforms stay local.
|
|
steamworks_sdk_164/sdk/glmgr/
|
|
steamworks_sdk_164/sdk/steamworksexample/
|
|
steamworks_sdk_164/sdk/tools/
|
|
steamworks_sdk_164/sdk/redistributable_bin/androidarm64/
|
|
steamworks_sdk_164/sdk/redistributable_bin/linux32/
|
|
steamworks_sdk_164/sdk/redistributable_bin/linux64/
|
|
steamworks_sdk_164/sdk/redistributable_bin/linuxarm64/
|
|
steamworks_sdk_164/sdk/redistributable_bin/osx/
|
|
steamworks_sdk_164/sdk/redistributable_bin/win64/
|