A
Admincraftβ€’5w ago
Ashank

Theoretical question: Run 100k players within a 1k worldborder

Budget: Unlimited, what's your approach? Gamemode: UHC Version: Latest / Close to latest
79 Replies
Admincraft Meta
Admincraft Metaβ€’5w ago
Thanks for asking your question!
Make sure to provide as much helpful information as possible such as logs/what you tried and what your exact issue is
Make sure to mark solved when issue is solved!!!
/close !close !solved !answered
Requested by ashanki#0
Ashank
AshankOPβ€’5w ago
Latest version btw
Tamz
Tamzβ€’5w ago
100k PLAYERS? in 1 server??
Ashank
AshankOPβ€’5w ago
Imagine How would it happen tho
Tamz
Tamzβ€’5w ago
:hmm: maybe minestorm? but sharded in a way that it can run 10k players on a select amount of cores with like a 96 core thread ripper so 12 cores is dedicated to 10k players, or divide equally youd need to develop something entirely new for 100k concurrent 1 server you could do like sharded 100k diff servers but not 1 for what we have
duolingo se acerca
duolingo se acercaβ€’5w ago
Pumpkin :very_nice: If the only objective is to keep the players around (no plugins, no proxy, no whatever other important stuff could be), I'd probably use the most minimal and closest to metal implementation
codertommy
codertommyβ€’5w ago
do you fathom how much 100,000 players is
duolingo se acerca
duolingo se acercaβ€’5w ago
There was another experimental alternative to Pumpkin, not I don't remeber what it was called
codertommy
codertommyβ€’5w ago
this isn't how many players anymore, it's how much players
Skullians
Skulliansβ€’5w ago
oh my god pumpkin 😭 honestly not rooting for them they focus on features, they don’t give a shit about their codebase or rather perf Ferrumc? you also have valence & minestom
duolingo se acerca
duolingo se acercaβ€’5w ago
Nop, doesn't sound me
Skullians
Skulliansβ€’5w ago
those are the only two rust ones that aren’t frameworks I’m aware of hold Hyperion? Bamboo? Feather or MCHPRS?
duolingo se acerca
duolingo se acercaβ€’5w ago
When I get bored and want to get myself lost in minecraft implementations, I usually look for those that dare to implement the whole game in C, Rust or whatever low-level language they like I'll try to look in my browsing history
Skullians
Skulliansβ€’5w ago
could be zeppelin or dynamite
duolingo se acerca
duolingo se acercaβ€’5w ago
Likely its on my git stars
Skullians
Skulliansβ€’5w ago
ah
duolingo se acerca
duolingo se acercaβ€’5w ago
Hyperion doesn't sound me, but look cool according to their architecture in their readme
Skullians
Skulliansβ€’5w ago
yeah
duolingo se acerca
duolingo se acercaβ€’5w ago
Without reading the code, ofc, not sure what they actually have inside
Skullians
Skulliansβ€’5w ago
xd
duolingo se acerca
duolingo se acercaβ€’5w ago
Wasn't on my github stars not in my browsing history :/
Skullians
Skulliansβ€’5w ago
:Sadge:
Ashank
AshankOPβ€’5w ago
gamemode is UHC, so its a bit of a requirement for vanilla features to be there + pvp capability
duolingo se acerca
duolingo se acercaβ€’5w ago
Better to add that to the post, I went a lot overboard πŸ˜…
Ashank
AshankOPβ€’5w ago
It... Was Wtf discord U refuse to edit my message 😭😭😭 Anyway πŸ’€πŸ’€πŸ’€
duolingo se acerca
duolingo se acercaβ€’5w ago
:duckfast:
EternalHell
EternalHellβ€’5w ago
Why do people say minestorm. Its minestom
Tamz
Tamzβ€’5w ago
huh i swear it was minestorm
EternalHell
EternalHellβ€’5w ago
Nuh uh Minestom
Tamz
Tamzβ€’5w ago
odd, thanks
Loudbook
Loudbookβ€’5w ago
What’s minestorm https://minestorm.net
Tamz
Tamzβ€’5w ago
LOL ok thanks
Ashank
AshankOPβ€’5w ago
Multipaper?
Casper
Casperβ€’5w ago
no
Snowz
Snowzβ€’5w ago
hell no
Ashank
AshankOPβ€’5w ago
πŸ’€πŸ’€ Why
Casper
Casperβ€’5w ago
unstable platform
duolingo se acerca
duolingo se acercaβ€’5w ago
Has anyone played Wynncraft? You can see some players from other servers running around even if they're on a different backend Maybe that could be an approach? Not sure what they use or if the latency induced will be permisible for an uhc tho I don't think java can handle 100k players tbh Probably using one of these but modified to work as an UHC instance -# Assuming all of them properly handle players and chunk loading using thread pools or other concurrency good practices, not gonna read their src or try them all, literally just learned of their existence πŸ’€
AeonRemnant
AeonRemnantβ€’5w ago
To do this I'd setup a fully custom C++ or Rust based server designed to be sharded. I'd run it in containers and try syncing everything with replicated databases. I'd go ahead and subshard the server, say we have a 50kx50k area, we can shard this a few times and treat that as its own little cluster microshard having its own database and server setup. We then take this design and horizontally scale it up and out until reaching 100k player capacity sustained. Setup however many shards and subshards are required, and if needed implement a dynamic scaling system that's able to change how much of the world is loaded by each server, say shard1 subshard2 has too many players, the area that server governs would shrink and the excess is given to the surrounding servers, in the worst case we can spawn an extra shard and split subshard2 into subshard2-a and subshard2-b. The architecture would look roughly like this:
cluster:
shard1:
subshard1: 50kx50k area
subshard2-a: 25kx50k area
subshard2-b: 25kx50k area
shard2:
subshard1: 50kx50k area
subshard2: 50kx50k area
shard3:
subshard1: 50kx50k area
subshard2: 50kx50k area
cluster:
shard1:
subshard1: 50kx50k area
subshard2-a: 25kx50k area
subshard2-b: 25kx50k area
shard2:
subshard1: 50kx50k area
subshard2: 50kx50k area
shard3:
subshard1: 50kx50k area
subshard2: 50kx50k area
A gross oversimplification since it doesn't take into account the network stack, georeplication, routing of any kind, or how you'd manage the bandwidth to make it stable, but that's outside the scope of here.
Jenkins
Jenkinsβ€’5w ago
it's minestom.
Tamz
Tamzβ€’5w ago
i see that now
Jenkins
Jenkinsβ€’5w ago
also how exactly do you manage to find 100K players I mean, in theory, if everyone can't see each other then you can easily manage 1M without any server logic Just a pure limbo
ProGamingDk
ProGamingDkβ€’5w ago
Well he did say 1k worldborder
AeonRemnant
AeonRemnantβ€’5w ago
Yeah, the thing there is you just don't do that. Computers simply are not fast enough to do 100k people in that small of an area, to try and shard it successfully you'd run into issues with overhead where you'd lose more trying to replicate than you'd gain.
Ashank
AshankOPβ€’5w ago
makes sense ig, so as of rn its physically impossible to run 100k players in that area
AeonRemnant
AeonRemnantβ€’5w ago
It's not physically impossible for a server, it would just need to be absurdly well written and multicore, never mind the hardware. It's more than impossible for a client to try that though.
Ashank
AshankOPβ€’5w ago
πŸ’€ yeah a client to load all those people that'd be an insta crash
1whoΒ‘ssus?
1whoΒ‘ssus?β€’5w ago
WHAT lmfaoooo
MachineBreaker
MachineBreakerβ€’5w ago
Be prepared to do your own networking handling The client would die with like 200-500 players around them with constant actions So you need to do fancy tricks to reduce the network load for these little guys
Ashank
AshankOPβ€’5w ago
πŸ€” what if we assume the client is on a supercomputer and has 30TB of bandwidth but we only have today's server parts etc
Jenkins
Jenkinsβ€’5w ago
won't matter
Ashank
AshankOPβ€’5w ago
really?
Jenkins
Jenkinsβ€’5w ago
yes
MachineBreaker
MachineBreakerβ€’5w ago
you're running minecraft client
Ashank
AshankOPβ€’5w ago
assuming java isnt java fixed it?
MachineBreaker
MachineBreakerβ€’5w ago
java isnt the problem ?
Jenkins
Jenkinsβ€’5w ago
won't matter
Ashank
AshankOPβ€’5w ago
neeeeevermind then whats the bottleneck here
MachineBreaker
MachineBreakerβ€’5w ago
the whole codebase is not made for that the networking impl isnt even fully async its semi async
Jenkins
Jenkinsβ€’5w ago
well you can make it but at that point you just made your own game
MachineBreaker
MachineBreakerβ€’5w ago
no at that point you just broke all expectations
Jenkins
Jenkinsβ€’5w ago
both
MachineBreaker
MachineBreakerβ€’5w ago
of plugins or client syncing
Jenkins
Jenkinsβ€’5w ago
the client would still be a bottleneck
MachineBreaker
MachineBreakerβ€’5w ago
a lot of packets are synced due to working with the world state
Ashank
AshankOPβ€’5w ago
p much... so even if the server was figured out the client is the biggest issue
MachineBreaker
MachineBreakerβ€’5w ago
yes
Ashank
AshankOPβ€’5w ago
GG
MachineBreaker
MachineBreakerβ€’5w ago
you could write an algorithm that runs off-main
Jenkins
Jenkinsβ€’5w ago
i meant rewriting the client too
MachineBreaker
MachineBreakerβ€’5w ago
that based on distance and raytracing you show/hide players
ProGamingDk
ProGamingDkβ€’5w ago
30 tb is nothingg oh the client
MachineBreaker
MachineBreakerβ€’5w ago
otherwise you will keep multiplying your packet sending
ProGamingDk
ProGamingDkβ€’5w ago
still not much 1k diameter doesnt leave much distance
Ashank
AshankOPβ€’5w ago
wait so what was the conclusion for fixing server side again
MachineBreaker
MachineBreakerβ€’5w ago
cap the player tracking amount you only show near players no need to show the 99k players at the end of the border :catcry: there are also a few tricks but wont disclose funny how you can improve networking on minecraft
Ashank
AshankOPβ€’5w ago
lmfao
Jenkins
Jenkinsβ€’5w ago
we love gatekeeping
MachineBreaker
MachineBreakerβ€’5w ago
ofc

Did you find this page helpful?