mastodon.gamedev.place is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon server focused on game development and related topics.

Server stats:

5.8K
active users

A lot of my days are spent making something quite simple but which is rendered waaay more complicated because of multiplayer - and I’m not even making a competitive game so I don’t care very much about cheating (if you want to break the game you play co-operatively with friends, knock yourself out).

It can be quite frustrating that everything takes longer, but when testing, just the act of messing about in the game with another person makes it feel worth it

@sinbad I have a bunch of ideas of multiplayer games (both co-op and competitive) that I'd love to make some day, but the complexity inherent to multiplayer makes me horrified

@lisyarus I’m lucky that UE does a lot of the heavy lifting and is well proven in this area, but even so - dumb little things trip you up

Tom Schultz

@sinbad @lisyarus It's not so bad! I made a couple of small co-op games in Unity and I was working on another in Godot earlier this year. They were a mix of client and server authority.

I think the first one kind of sucks as you learn the patterns and ways of thinking, but then it becomes easier. Also, if your networking library isn't polished and proven it'll be a headache. Netcode for GameObjects in Unity was occasionally a real PITA when I used it last year.

@tom_schultz @sinbad @lisyarus Do you have some good resources for networking in Godot? I'm nowhere near possibly adding that but I want to make sure I'm not making any stupid, unrecoverable mistakes in my structure.

@fuzzybinary @sinbad @lisyarus I suspect you're gonna have a rough time trying to add multiplayer later. Probably depends on genre tho.

As for resources, not really. I just looked at the docs for the built-in multiplayer and charged ahead based on my experience in Unity. I can't comment on the quality of their multiplayer library. The furthest I got was a prototype with client-authoritative movement and basic combat with server authoritative mining and interaction.

(continued)

@fuzzybinary @sinbad @lisyarus The way that I tend to think about things is:

1) What happens on the client to predict the outcome? (predicting motion, sfx, anims, etc)
2) Who has authority on the action? (client or server)
3) How do we communicate with the authority and with the other clients? (data sync or RPC?)
4) What happens on the clients after the outcome is confirmed? (reconciling motion, sfx, anims, etc)

All four apply regardless of the answer to numbers two and three.

@tom_schultz @sinbad @lisyarus hmmm, yeah maybe I should think about it sooner, at least to see how I separate what lives where.

Do you / did you / would you use a state model global to sync things at all? I'm especially concerned about syncing for things when platers may be in separate scenes.

@tom_schultz @fuzzybinary @sinbad @lisyarus the quality of the godot multiplayer library is good enough for small indie games, but it's overall very young and basic. It's not a turnkey solution like Unreal, and Godot's physics API makes it impossible to do proper client prediction.

A good breakdown: rivet.gg/blog/godot-multiplaye

Libraries like Netfox and Snopek Rollback Netcode are nice additions on top of Godot networking, but they have their own caveats and still require a lot of manual work

rivet.gg · Is Godot 4's Multiplayer a Worthy Alternative to Unity?Comparing Unity's high-level multiplayer API with Unity's Fish-Net framework.

@tom_schultz @sinbad Well, since I'm using my own engine, it'll be a wee bit harder >_>

@lisyarus @sinbad ah, yeah, that's a different animal. I've always relied on network libraries that provide synced data structures and RPCs with authority built in. Much easier 🙃