site banner

Small-Scale Question Sunday for April 16, 2023

Do you have a dumb question that you're kind of embarrassed to ask in the main thread? Is there something you're just not sure about?

This is your opportunity to ask questions. No question too simple or too silly.

Culture war topics are accepted, and proposals for a better intro post are appreciated.

2
Jump in the discussion.

No email address required.

I’m confused why there’s not a massive server already running this?

Bungeecord/Velocity-based servers exist, and to an extent Hypixel is a thousand+ server location, but in turn it's further from what you're probably imagining. More complete solutions take a lot more technical lift, and Mammoth in particular is still very much a work in progress (the issues page lists a variety of bugs related to explosions and gear), and there's a variety of technical limitations.

Similarly, there's a pretty good number of mods or plugins for most environments that can do at least the spawn protection and distributed spawn solutions. They've got tradeoffs -- too large a spawn radius makes it hard to meet up with friends, too large a protected area breaks a number of technical builds and can encourage players to play more soloish than the might otherwise -- but there are mods in turn to try to mitigate those (such as chunk claiming, to-home and to-team teleports, etc).

((You can't go too far, here; MineCraft isn't the most secure, but for the most part it tries to not trust the client, so you're really stuck doing a lot of parallel processing on the server for things being sent to clients. But this actually doesn't end up being that big of a deal: from a mod developer perspective, short of things like Create Contraptions or Structurize Build actions that trigger massive changes and thus full chunk reloads, the update system netstack mentions is generally controlling, and you're usually more worried about stupid issues like pathfinding or lighting updates or just entity cramming. And the cost difference between transmitting a chunk and a part of a chunk aren't as big as you'd expect.))

It also only solves part of the problem. A lot of the issues with Minecraft scaling have less to do with distributed world state, and more to do with issues specific to individual server architecture, like packet overhead of keeping player experience of other players consistent. See for example BlanketCon, a (fabric modded) convention that was able to get into the mid-170 simultaneous players that more closely emulated a crowded environment that avoided block updates, and found that much of their performance was being taken up by movement synch. That's solvable -- the BlanketCon post-mortem describes a couple shard-based solutions, and I'm sure an actual game dev like Zorba could list well-established true fixes -- but it's probably just one of a few dozen that you'd need to go through on the way to handle 1000+ users in a small city, rather than 1000+ users who barely see each other.

((Some of these are stupid. Leads and redstone mechanics can be giant TPS problem sources, and there's known fixes for them, but they're not fixed in vanilla.))

The deeper issue is that vanilla MineCraft isn't really built for large-scale deployments, at more than a technical level, and this has lead to little interest in developing megaservers beyond the borderline (Hypixel) or the academic.

Some of the problems of 2b2t are specific to its intended userbase and (lack of) gatekeeping -- you could conceivably decide to stop people who make region-sized lavacasts, then rollback the affected chunks, and even automate doing so. But the broader problem of creating useful and enjoyable communities is hard. It's very easy for a server to have a whole bunch of people individually log in, go through the standard iron-diamond-nether-end progression, and build a couple small 9x9s, and then log out; not only does this not necessarily entertain much, it doesn't really work out that well with a lot of the bottlenecking in vanilla (the Ender Dragon's island is a hard bottleneck, and to a lesser extent so are strongholds, nether fortresses, and end cities; someone else having visited one before you doesn't break your game, but it does end up being really annoying; material values and preferences for certain surface features tend to push people to certain distances from each other that end up getting negated by nether rooftop travel, so on).

Longer-lived communities tend to combine a mix of events, contests, and challenges. But these can be hard to scale well, too.