Giter Club home page Giter Club logo

Comments (6)

zpostfacto avatar zpostfacto commented on May 15, 2024 2

Finally working on this. Hopefully in a few weeks!

from gamenetworkingsockets.

zpostfacto avatar zpostfacto commented on May 15, 2024 1

@Frooxius @eddiejames @FrankStain @SnapperTT, or anybody else interested:

I have a beta version of this working. I'd like to work with somebody who has a good test case and who wants to test it. Anybody interested?

  • You would need to provide your own rendezvous / signaling mechanism.
  • It might be a bit arduous figuring out how to compile the google webrtc code.

I'm interested in what snags you hit.

Any takers?

from gamenetworkingsockets.

zpostfacto avatar zpostfacto commented on May 15, 2024

I don't have a timeline yet, sorry. There are several really large features in the Steam version that are going to happen before this becomes a priority. I renamed this bug to track this as a feature and will update the roadmap to point to it.

Before this work begins, I think the connection classes need to be refactored a bit to separate the work of the logical connection from the lower level transport. I also have some very similar work I want to do to utilize the relays for Steam Link Anywhere.

When those two tasks done, I'll update this bug, because it might be something somebody else motivated could bite off, if they were interested.

from gamenetworkingsockets.

MitchDart avatar MitchDart commented on May 15, 2024

Hi @fletcherdvalve, thanks for all your hardwork. This library is great! I am using it in a new project and we about 1 month in now. I was actually researching how to go about NAT punchthrough since our project is p2p. I would be keen to try out your beta however I'm not sure if I would be able to give much valuable feedback. I have never worked with NAT punch piercing before but definitely a fast learner!

from gamenetworkingsockets.

zpostfacto avatar zpostfacto commented on May 15, 2024

@MitchDart, if you or anybody else wants to try out this code, here is what would need to be done:

  • You will need to provide your own signaling mechanism, as mentioned above. That is some low-bandwidth, non-latency-sensitive channel that peers can use for best-effort delivery of small messages. So this would go through your central service, however those peers are finding each other. In the Steam version of this API, Steam provides this. But you'll need to provide this. That is going to be an inherent requirement in any P2P setup. See ISteamNetworkingConnectionCustomSignaling and related functions that use it.

  • You'll need to compile the webrtc code, and get ice_session.cpp to link against it. That is kind of an involved project, because google has their own very sophisticated toolchain system and you'll have to wade through that. I can share info on how we did it, but the version of webrtc that we started with is maybe a year or two old now. And so you are likely to hit new issues. Eventually, I'd like to have this project have a git reference to a particular webrtc release, and I'd make sure that ice_session.cpp would work with it. I have not done that work yet. I don't really know how much has changed since we grabbed a version of webrtc that ice_session.cpp runs against. We did try to make absolutely minimal changes, but we're accessing stuff at a relatively low level in their library, not at the surface API, so it's totally possible and reasonable for them to have shuffled stuff around.

from gamenetworkingsockets.

zpostfacto avatar zpostfacto commented on May 15, 2024

I'm gonna go ahead and close this issue. I added a new readme describing the P2P support, what is required, and what needs to be done. I added issue #117 to track the WebRTC compiling tasks.

from gamenetworkingsockets.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.