I write multiplayer games for a living, and the thought of an built in multiplayer system that does more than ship bytes around and maybe help out with serialization is a red flag.
Do you want to build a strategy game, an FPS, a MMO or a fighting game? Well that's four completely different architectures.
Engines that ship with built in multiplayer tend to be a step up in flexibility from modding a game.
A strategy games, FPS, and fighting game all have the same networking model. An MMO is the only one that doesn’t, and yet you still have a subset of the prior in the later. So no, engines should provide more.
I personally know a AAA project that tried to build a strategy game on a rock solid FPS engine's netcode and it was a disaster that sunk it single handedly.
It's a complicated and vibrant field and one size does not fit all. There are just parts you can abstract away and provide libraries for.
All multiplayer is asynchronous you donut. Asynchronous game rules have nothing to do with asynchronous networking.
> async/sync hybrid
Pulling stuff out of your behind.
> trusted peer to peer (used a lot for coop games to lower server costs)
No such thing. There is no "trust" in multiplayer. If you write a peer to peer game, you're open to cheating.
> multiplayer idle games
What?
> hybrid deterministic with trusted peer to peer
Pulling stuff out of your behind.
At the end of the day, entities, objects, actors, whatever you want to call them, have networked fields and they're serialized and transmitted. Game rules state is networked. Developers choose what they want to network. The engine determines what is sent and what is not.
This lattermost piece is where things can get complicated based on whether or not information needs to be sent, shouldn't be sent, is sent by visibility or audibility, is sent by quad tree node, etc.
But there's no different architecture for it. That's plainly stupid. There's nothing about these made up designs you're talking about that stops the need for entities to have watched fields that get serialized and transmitted based on transmission rules.
What I'm taking from this conversation and looking at your engine is you're very familiar with the Source way of doing things, but ignorant of other work in the field.
If you were being pleasant I'd be happy to go in to specifics, but you aren't, so I won't.
Although I will say this:
> There's nothing about these made up designs you're talking about that stops the need for entities to have watched fields that get serialized and transmitted based on transmission rules.
Over a million people have played my multiplayer games, and they are not implemented this way.
> event sourcing from inputs with rollback
This is the exact same thing as rollback in FPS games. It works the same way.
> I personally know a AAA project that tried to build a strategy game on a rock solid FPS engine's netcode and it was a disaster that sunk it single handedly.
Fascinating, because Valve literally did it with DOTA.
They've integrated it into the engine, tested it across multiple platforms, exposed its methods via the language bindings interface, and abstracted away memory management if you don't want to think about it. They've also written a simple protocol that allows for remote procedure calls on the scene-tree that abstracts away the lower-level networking components. That's not nothing.
> There's effectively no difference in its multiplayer offering and a GitHub project with under 100 stars and a month's development work binding rendering APIs to a popular programming language. You literally have to do everything yourself.
The difference is every other feature of the engine.
> None of this means anything at all. You're just saying people have to create their own work, but hey, since it's in a "module" that makes it good!
I'm saying that the engine allows anyone who wants a feature to add it without requiring low-level development efforts, or getting the devs to accept a feature commit to make it generally available. This doesn't excuse every missing feature in the engine by a long-shot. But it does mean that the engine, and its development team can focus on getting the boring things right, and can reasonably expect their community to fill in the blanks over time.
> Yeah you're right, and the end result is basically no one does multiplayer or does it well, because most people using Godot don't know what they're doing to begin with. It's easy to not get in somebody's way when you do nothing at all, isn't it?
Most people using any game engine don't know what they're doing. And once again, I think you're exaggerating when you say, 'nothing at all'. Minimal? Yes.
> As far as I know, they spent Mozilla funds to continue developing it versus features actual game developers care about.
Per their blog posts, the 2019 Mozilla grant was used to fund the following things game developers don't care about:
1. Godot's Browser support
2. Improving Networking documentation, and debugging features, refactoring their TCP/UDP layer, implementing DTLS over UDP
3. Assets for showcase and benchmarking demos
https://godotengine.org/article/godot-engine-awarded-50000-m...
> I don't really see a difference between what it offers in terms of meaningful features, and what someone experienced could throw themselves in 3-6 months time.
At the very least, 3-6 months of development time. Some of which could likely be used to implement a networking protocol.
But more seriously, you get a solid, well-documented, increasingly refined engine with a permissive license that's actively being tested and maintained across multiple platforms and hardware configurations.
The engine has several dedicated developers working full-time that you don't have to pay for, who are often happy to answer any questions you may have, and a large community to provide free support whenever they're unavailable or unwilling to help.
You also have a young but growing plug-in ecosystem whose developers seem to love sharing their source code.
Most of the features that are there are fairly mature, and are actively being battle-tested by novice and dumb developers with a gift for finding edge cases and breaking things.
An experienced developer could certainly approximate Godot's feature set in six months. Of that, I have no doubt. But I really think you're underestimating the team, and what it's achieved.
This doesn't mean anything at all if you've actually built a game before. You can do this with ENet alone, which means they haven't done anything for you.
> A more opinionated system might be faster to get up and going, but would likely get in your way for more complex projects.
There's effectively no difference in its multiplayer offering and a GitHub project with under 100 stars and a month's development work binding rendering APIs to a popular programming language. You literally have to do everything yourself.
> Much of godot's functionality is implemented in modules, which the engine can be optionally compiled without, and are easily added in by other developers. On top of this, the engine has a plug-in ecosystem like Unity has, which allows functionality extension on a per-project basis.
None of this means anything at all. You're just saying people have to create their own work, but hey, since it's in a "module" that makes it good!
> Imo, this is a win. Developers don't have to work around, bypass, or ship with a clunky networking model that seemed like a good idea at the time, and Godot devs don't have to maintain the potentially sprawling implementation of a feature that could very well get in somebody's way.
Yeah you're right, and the end result is basically no one does multiplayer or does it well, because most people using Godot don't know what they're doing to begin with. It's easy to not get in somebody's way when you do nothing at all, isn't it?
> Wrt gdscript, it's something that existed in the engine before it was open-sourced, is tightly integrated into the engine's systems, and is easy to bind new code and methods to.
As far as I know, they spent Mozilla funds to continue developing it versus features actual game developers care about.
I don't really see a difference between what it offers in terms of meaningful features, and what someone experienced could throw themselves in 3-6 months time.