Theoretical question: Run 100k players within a 1k worldborder
Budget: Unlimited, what's your approach?
Gamemode: UHC
Version: Latest / Close to latest
79 Replies
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
Latest version btw
100k PLAYERS?
in 1 server??
Imagine
How would it happen tho
: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
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
do you fathom how much 100,000 players is
There was another experimental alternative to Pumpkin, not I don't remeber what it was called
this isn't how many players anymore, it's how much players
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
Nop, doesn't sound me
those are the only two rust ones that arenβt frameworks Iβm aware of
hold
Hyperion?
Bamboo?
Feather or MCHPRS?
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
could be zeppelin or dynamite
Likely its on my git stars
ah
Hyperion doesn't sound me, but look cool according to their architecture in their readme
yeah
Without reading the code, ofc, not sure what they actually have inside
xd
Wasn't on my github stars not in my browsing history :/
:Sadge:
gamemode is UHC, so its a bit of a requirement for vanilla features to be there + pvp capability
Better to add that to the post, I went a lot overboard π
It... Was
Wtf discord
U refuse to edit my message πππ
Anyway πππ
:duckfast:
Why do people say minestorm. Its minestom
huh
i swear it was minestorm
Nuh uh
Minestom
odd, thanks
Whatβs minestorm
https://minestorm.net
LOL ok
thanks
Multipaper?
no
hell no
ππ
Why
unstable platform
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 π
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:
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.
it's minestom.
i see that now
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
Well he did say 1k worldborder
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.
makes sense ig, so as of rn its physically impossible to run 100k players in that area
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.
π yeah a client to load all those people
that'd be an insta crash
WHAT
lmfaoooo
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
π€ what if we assume the client is on a supercomputer and has 30TB of bandwidth
but we only have today's server parts etc
won't matter
really?
yes
you're running minecraft client
assuming java isnt java
fixed it?
java isnt the problem
?
won't matter
neeeeevermind then
whats the bottleneck here
the whole codebase
is not made for that
the networking impl isnt even fully async
its semi async
well you can make it
but at that point
you just made your own game
no
at that point you just broke all expectations
both
of plugins or client syncing
the client would still be a bottleneck
a lot of packets are synced due to working with the world state
p much...
so even if the server was figured out the client is the biggest issue
yes
GG
you could write an algorithm that runs off-main
i meant rewriting the client too
that based on distance and raytracing you show/hide players
30 tb is nothingg
oh the client
otherwise you will keep multiplying your packet sending
still not much
1k diameter doesnt leave much distance
wait so what was the conclusion for fixing server side again
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
lmfao
we love gatekeeping
ofc