To preface, I support SKG. I'm not at all disagreeing with the movement, and I understand the point of SKG is to be setting a standard going forward that will force developers to stop doing this bullshit.
My argument wasn't that SKG is bad. My argument was that the developers arguing against the movement are getting hung up on and bikeshedding about multiplayer and live service games. I was trying look at it from the perspective of a developer and explain that we (consumers) understand that it's not reasonable (for various reasons) to demand that they release the entire stack of backend services used by a game.
Games like Pal World still manage to publish their dedicated server binaries without publishing the dedicated server browser, and that's all we actually want. Shitheels like PirateSoftware are being disingenuous and framing it as though the movement is entitled and asking for the impossible.
Now, to respond directly:
All of these things are already somewhat modular and very scalable in implementation, by very, very intentional design.
For horizontal scaling, yes.
So... running a rented VPS or decently beefy home server that is just geared toward handling a much, muuuuch smaller total player count, with just one of every required module, instead of being networked to 5,000 other server units dispersed around the globe?
Respectfully, and as someone who has run community game servers, it's still not that simple or straightforward. A single private server can exist on a beefy machine or VPS and be fine. A private server designed to scale horizontally has much higher minimum requirements.
I'll use Minecraft as an example:
A private server for friends or a small community is exactly as you described. You download Paper, install MariaDB for SQL, and throw it on a VPS.
A large community server is a lot worse. You still have MariaDB and Paper, yeah. But now you have multiple shards of Paper, with one shard per world. These shards need to have a low-latency way to communicate and share information with each other, so now you need to set up a Redis server. And now since you have multiple shards, you need to set up the Waterfall/BungeeCord server software to act as an ingress. On top of that, with multiple shards you're going to want multiple nodes, and that now involves creating a private network.
You can run all that on a single dedicated server, but it's not going to be as cheap or simple to set up. Multiple gigabytes of memory are being wasted just on overhead for those services.
The problem here is that with newer games like Destiny 2, the server architecture is almost definitely designed for large-scale usage. If Bungee released the server and matchmaking software tomorrow, only people like us would actually have the experience and resources to host it. And if their server software was designed to only run within a container orchestration environment like Kubernetes, it would be even worse.
In contrast to Destiny and going back to my other comment, Team Fortress 2 was designed before horizontally scalable dedicated game servers were common. It's easy to distribute and easy to host.
Have you ever run any dedicated private game servers, have you ever managed a remote server cluster/cloud/whatevercorpobuzzword?
My previous paragraphs should speak for themselves.
Just design a basic non scaling model that works for a lower player count with a simple dedi server model.
Which won't ever happen with AA or AAA devs unless it's legally required. It costs development time, probably won't ever be used internally, and doesn't bring in money. The suits won't allocate resources towards that out of the goodness of their hearts, which is why SKG needs to be successful.
This is actually remarkably easier and more simple to code than what the industry does now... if you've ever run or coded any servers.
It's really not.
In an ideal scenario where you have time to actually plan things out, you have a shared, common library for the game logic and two different projects that use the library for dedicated servers running under self-hosted or scalable environments.
If something like player inventory storage is handled by a dedicated service in the scalable environment, you can't use the same code for the self-hosted environment. To solve that, you create a InventoryStorage interface, a SQLBackedInventoryStorage implementation, and a MemoryBackedInventoryStorage implementation. Now you have abstraction, which makes the code harder to follow for on-boarding and maintenance purposes.
Or, you could have two different implementations of the dedicated server. That comes with even worse problems stemming from code duplication. If you want to make sure those two implementations are fully compatible with each other, you also have to add full integration tests... and the only common interface between them is the game client network protocol.
Also uh, obviously they won't release the source code. That would indeed be an insane legal/financial nightmare.
Food for thought: what if the server source code is written in some scripting language like JavaScript or Python?
But... a compiled binary for a server?
That's gotten a final update that strips out what they don't directly own?
This is almost always going to be a viable option, but it's not a 100% guaranteed solution.
Particularly when it comes to shit like patents, you're entirely at the whims of the patent holder. A hypothetical example: the game absolutely needs to license some super-optimized physics simulation for its gameplay, and the only way they get that license is if it's not distributed to other parties. The easy solution is to only run the simulation on the server side, but if the server has to be distributed as well, that's a bit of a problem. Because it's patented, they can't just create their own copy of the library.
Uh yeah, if I somehow decompiled the Source engine and its Havok code, and then freely distributed that or built something with it I sold for money, I'd get sued into oblivion Xen.
Good reference. Well played.
Nah, it absolutely is, this was the standard norm for the vast majority of games until the new industry norm became games as service, always online.
I really should have phrased that differently.
It's reasonable to expect dedicated server executables.
It's not reasonable to expect the entire tech stack used for the online services to be made available. For a shitty example that's straight to the point, I don't think Oracle would appreciate it if their SQL server was released alongside the server software to run a MMO.
They intentionally introduced this new paradigm that fucks consumers, the old paradigm of releasing server tools often even before EoL worked fine, they just got greedy.
Absolutely.