Networking and crowded hubs

Understand packet reuse, batching, and the visual effects of near/far player updates.

On this page

Why density matters

Players who can see one another need packet fan-out to many recipients. Adding players in one room can grow visibility relationships much faster than player count alone. Spread survival players create a different chunk/simulation workload. One preset does not establish capacity for both.

Transport, flush, and chunk batches

Native transport tries available epoll on Linux or kqueue on macOS, subject to Paper policy. Unsupported TCP environments use NIO. A true flag does not give Windows epoll. IP_TOS and TCP Fast Open depend on platform/network support and do not guarantee latency improvements.

Chunk batching groups already serialized bytes in the event loop. Each packet retains its own compression frame/envelope; chunks are not combined into one zlib stream. Nusa adds no separate compression worker pool here. Packet/byte caps and a timer bound cohorts; a 1 ms timer is a scheduling target, not a hard delay guarantee.

For delayed chunks or packet-pipeline interactions, compare batching off on staging and restart. Use the network settings.

Shared encoding and pooling

Reuse applies only to eligible immutable native numeric packets, such as movement, head rotation, animation, and velocity. Signed/localized chat, metadata, inventory, subclasses, and plugin codecs use ordinary encoding. Foreign handlers can disable reuse.

Framing, compression, and encryption remain per connection. Buffer pooling is independent and Paper may already pool buffers. An enabled flag is not evidence of lower CPU use.

Movement, locator, and tab cadence

Changed positions/head rotation within the default 8-block near distance can update each tick. Far visible players use a default four-tick interval. Tier transitions receive absolute correction. Simulation continues normally, but distant movement may look less smooth.

Recent damage pairs can bypass far throttling for the default 80-tick combat window. Movement locator updates are coalesced until the networking tick; waypoint-far-interval: 1 keeps native far cadence. Direct waypoint API operations remain immediate.

Congestion can defer replaceable movement/locator states until the connection drains, reducing smoothness even nearby. This is not a global outbound-memory cap.

Tab batching groups compatible consecutive numeric updates, default up to 200 ms. Join, secure-chat initialization, removals, display names, and other traffic are barriers. Test tab/packet plugins and combat before increasing intervals.

Loading the index…