Direct answer

Minecraft server load does not scale linearly with the player counter. Fifty players spread across terrain often cost more chunk generation and entity processing than fifty players together in one optimized lobby.

How to check it

  1. Record MSPT percentiles and player count during typical peaks, not just idle TPS.
  2. Note active chunk counts, player distribution, farm activity and server software; keep these conditions comparable.
  3. Use spark profiling to distinguish per-player plugin tasks, chunk generation, entities and networking costs.
  4. Repeat measurements at several realistic player counts instead of extrapolating from an empty world.

What to change

  • Pre-generate terrain where exploration is a measured bottleneck.
  • Reduce wasteful plugins that schedule expensive per-player tasks or repeated lookups.
  • For networks, use multiple backends only when game design supports splitting players; a proxy alone does not add tick-processing capacity.

Software and version notes

CPU cache, single-region/single-thread constraints, entity activation, view distance and world distribution can create thresholds rather than smooth scaling. Folia has a different region-threaded profile from classic Paper.

Practical example: Example: 30 players clustered at spawn can reuse some loaded chunks, while 30 exploring in different directions may each trigger chunk generation. A benchmark based on empty lobby TPS therefore misses the survival workload. Compare profiles at similar terrain and entity workloads before buying more vCPU.

Verify the result

  • Plot MSPT against workload and player distribution.
  • Confirm the optimization works with the real minigame or survival activity instead of only in a lobby.

References