GodotSteam
GodotSteam copied to clipboard
[Roadmap Question] Plan for integration specific multiplayer peer in godot 4 for steam sockets?
Are there plans for possible integration of a specific peer using steam sockets for godot 4? just like Unity does with its transports. Tell me if this is possible? It would be an easy integration with https://github.com/godotengine/godot/blob/master/scene/main/multiplayer_peer.h ?
Hey there! Interesting you bring this up because I think that is what @greenfox1505's project is about; or at least related. He would have to weigh in to confirm or deny my assumptions. You can check it out at the link above or here: https://github.com/greenfox1505/GodotSteam/tree/godot-hlmp-alpha. We had discussed possibly merging it into the GodotSteam system once it was ready.
Nonetheless, merging Godot's multiplayer with Steam's functionality is something lots of folks have asked about. I think it's a great idea.
There are two advantages to this integration:
- Provide high-level use of networking in godot with GodotSteam, which probably only grows from godot 4, where we now have some nodes with networking functionality.
- Test if the multiplayer_peer.h network interface really works well by abstracting network information, as we only have enet implementation included
Yeah, I'd love to get them working together. I'll try to make time to dig into Green Fox's project a bit more and see what can be done to keep this process chugging along!
The new features of Godot4's multiplayer are REALLY exciting. A lot of the boilerplate I pull in for multiplayer in game jams is basically just build into the engine and better than my implementation. Getting those features tied into Steam would be killer for both Godot and GodotSteam.
@Zennyth has done a LOT for getting my implementation working with Godot4 already. Their work shouldn't be ignored and their implementation probably makes more sense for merging into the Godot4 branch. https://github.com/Zennyth/GodotSteam/tree/godot4
Most of my Godot time lately is spent working with Godot+Rust and they're still a ways away from Godot4+GDExtention, so I haven't really done much with Godot4. (at one point I toyed with the idea of implementing a Godot+SteamViaRust)
My current 3.x implementation should be mostly working. I wanted some other eyes on it for testing before doing a pull request. I should be "pretty much" ready, but I wanted to see some people using it and finding some bugs before doing a full merge. (maybe we can keep it a special branch here and add a note in the README.md
?)
If we're getting ready to get this merged in for Godot4, I expect to have some free days late October. I've got some Halloween DLC for a Unity project to work on and that takes after-work priority. Which still should be well before Godot4Beta.
I didn't know about this discord thread on the topic, so I'll link it here.
@greenfox1505 Yeah, we could definitely create a new branch for the Godot 3.x version. I will try to fit some time in to reading through it thoroughly and messing with a test. I'll check out @Zennyth's version for Godot 4.
The Godot 4.x branch has some planned major overhauls to how it is laid out that I had hoped to finish before the stable release of 4; but we will see. Between tutorials, a new site, Godot 4.x changes, and my other non-Godot/GodotSteam stuff, time is always tight.
@ScriptsEngineer Yeah, I started that so we could keep better track of what is going on. These things get asked about and I wanted a single thread to point people to.
Another integration that would be interesting is with EOS - Epic Online Services It hasn't been that long since it became free. And there aren't many tutorials on how to use. https://dev.epicgames.com/en-US/services
This does pretty much the same as Steam Networking, Matchmaking and etc. https://partner.steamgames.com/doc/features/multiplayer/networking
The advantage of using EOS or Steam Networking is the massively tested authentication and security services. Any other multiplayer service would need a dedicated and paid server to handle this as well as possible for thousands of users. And it is also necessary to solve the latency problems with the distribution of servers around the world.
Another thing that would be ideal for Epic and Steam developers is the Serverless services. That don't need to configure a server. Like Firebase functions, Netlify Serverless Functions, Vercel Serverless Functions, etc. With this, instead of storing only data, you can also store functions.
This would be useful to avoid several multiplayer game hackings. For example, the hacker changes the game code, and always rolling a dice value 6. This sort of thing should always be processed on a dedicated server and never on the client. In this case, in these functions. Free services to do this the maximum they offer is 100 CCU concurrent users. But, this is just an idea.
I think that's a bit beyond the scope of this project.
Certainly. It would be another project. A GodotEOS https://github.com/3ddelano/epic-online-services-godot Sorry. I only focused on Godot multiplayer and not on GodotSteam.
Yeah, the Epic Game Services stuff is wildly unrelated to all this but thanks for sharing.
@greenfox1505 OK, sorry for being so delayed on my response to this. I went through everything last night to bring myself back up to speed on this. I am ready to move ahead with all this. I'll contact you on Discord to discuss more. We can even pull in @Zennyth's version for the 4.x branch too.