HouraiTeahouse / backroll-rs

A (almost) 100% pure safe Rust implementation of GGPO-style rollback netcode.
ISC License
351 stars 18 forks source link

Steam Networking Sockets transport implementation #2

Open james7132 opened 3 years ago

james7132 commented 3 years ago

The original reason a I/O abstraction layer via bevy_transport was to support potentially multiple I/O options where direct control over the low level communications may not be possible, particularly with the ISteamNetworkingSockets interface in the Steamworks SDK.

Right now the most mature wrapper around the Steamworks SDK is steamworks-rs, but the ISteamNetworkingSockets interface does not have bindings (see Noxime/steamworks-rs#6), and the existing ones are blocking (see Noxime/steamworks-rs#57). It does contain a Send and Sync client that can do the original ISteamNetworking interface, but according to the official Steamworks documentation, it's considered depercated and may be removed in the future:

NOTE: This API is deprecated and may be removed in a future Steamworks SDK release. Please 
use ISteamNetworkingSockets or ISteamNetworkingMessages instead. 
james7132 commented 3 years ago

A preliminary ISteamNetworking implementation is done as of b444e03de111eb3cf2ab607f375bc5a83642e8ad. A full ISteamNetworkingSockets implementation will likely require the bindings to be present in steamworks-rs.