// the find
rlabrecque/Steamworks.NET
Steamworks wrapper for Unity / C#
Steamworks.NET is a low-level C# wrapper around Valve's native Steamworks API, mirroring the C++ interface almost 1:1 so Valve's own docs apply directly. It targets Unity devs and any C# app that needs Steam integration (achievements, matchmaking, workshop, networking, etc.) on Windows, macOS, and Linux.
The bindings are code-generated by a Python script that parses the actual Steamworks SDK headers (CodeGen/steam/*.h), so the wrapper tracks Valve's API instead of drifting from hand-maintained bindings. It ships as a proper Unity Package Manager package with native plugins already organized per platform (androidarm64, linuxarm64, macOS bundle, win32/64 DLLs) — no manual plugin import wrangling. It's been maintained for years against current SDK versions (building against 1.65 as of this push) with a permissive MIT license.
It's a literal C API surface in C# clothing — callback registration and dispatch are manual, there's no async/await or event-based idiom layered on top, so you're writing the same boilerplate Valve's C++ samples use. The README itself documents nothing about actual usage; you're routed to an external docs site and four separate sample repos just to see a working call. Native binaries (steam_api.dll, libsteam_api.so, the macOS bundle) are checked directly into the repo, which bloats clone size unnecessarily. There's no visible test suite in the tree, which makes sense since it can't run without a live Steam client, but it also means codegen regressions rely entirely on manual/community catch.