Rust abstraction for Valve GameNetworkingSockets
Simple, high-level and (somehow) type-safe wrapper for Valve GameNetworkingSockets.
The library does not require your application to be running with Steam and this wrapper is intended to wrap the open-source version only.
Some features might be missing, if you are interested to introduce more abstraction, feel free to open a PR/Issue.
Libraries:
gns-sysis the C++ library from Valve compiled with bindings generated (the library is directly compiled by cargo so you don't need to have it already installed).gnsis the high level, type-safe Rust wrapper.
Building
A few system libraries/tools are required in order to compile the C++ library as part of gns-sys.
System libraries required:
clangprotobufopensslabseil(if using a recent version of protobuf)
Tools required to be in $PATH:
gitprotobuf-compiler
Windows
Building on Windows uses vcpkg in manifest mode to gather and
build dependencies. As such, the only requirement on Windows is to have clang installed and git
available in $PATH.
macOS
Apple Silicon
- Install these dependencies:
- Verify you’re using Protobuf 21.x:
- If you see errors like “no member named ‘c_str’ in ‘std::string_view’”, you’re likely picking up a newer Protobuf. Either unlink the newer one or point CMake to 21.x:
# Only if needed
Intel
Untested on Intel.