Performance¶
We measured server tick times and time spent on each task during concurrent emote playback. In the chart, N-player equivalent is a synthetic load with N playback instances and N packet recipients. The test did not use N connected players.
Test results¶
MSPT is the time the server takes to process one tick. To maintain 20 TPS, each tick must finish within 50 ms. The p95 value means that 95% of measured ticks finished within that time.
| Synthetic load | Average MSPT | p95 | Maximum | Total elapsed time | Interpretation |
|---|---|---|---|---|---|
| 50 | 22.72 ms | 29.64 ms | 36.57 ms | About 30 s | All measured ticks finished within 50 ms. |
| 75 | 42.13 ms | 47.50 ms | 59.68 ms | About 30 s | The average stayed below 50 ms, but some ticks exceeded the threshold. |
| 100 | 68.12 ms | 75.35 ms | 82.00 ms | 43.2 s | The average exceeded 50 ms, making normal gameplay unworkable. |
Network processing was the main bottleneck in this test, accounting for about 82% of total elapsed time at a load of 100.
Methodology¶
Each point was measured with /emote stress-test 30s N N. The first N is the playback instance count; the last N is the packet recipient count.
| Component | Method |
|---|---|
| Playback instances | Creates N independent server-side playback instances and places their display entities in the world. Emotes are shuffled with a fixed seed and start at different playback positions. No additional ServerPlayer objects or player connections are created. |
| Packet processing | Passes each changed display metadata packet through N in-memory Minecraft packet encoders. Includes packet codec, compression, length framing, and generated byte-count costs. |
| Excluded costs | Socket transmission, network latency, and client-side packet decoding and rendering are not included. |
For example, 75-player equivalent simulates 75 concurrent emotes with every changed packet sent to 75 recipients. It assumes all players are within the same tracking range and can see every emote. Actual load may be lower when players are spread apart or only some use emotes.
Test environment¶
| Component | Configuration |
|---|---|
| CPU | Intel Core Ultra 5 250K Plus |
| RAM | 24 GB, single-channel |
| Operating system | Windows 11 |
| Minecraft | 26.2 |
| Emote | 2.0.1 (DEV) |
| World | Standard survival world |
| Other mods | FerriteCore, Krypton, Lithium |
FerriteCore, Krypton, and Lithium were included to approximate a typical server setup.
Limitations¶
These results alone cannot determine the server's maximum player count. Actual load depends on the proportion of players using emotes concurrently, tracking ranges, displays per emote, server CPU, compression settings, other mods, and world load.
The tested build was 2.0.1 (DEV). The current version includes many more complex default emotes, so results may differ even under the same conditions.
Single-channel memory may have affected performance under high load, but no comparison with a dual-channel configuration was made. This test therefore cannot establish the size of that effect or whether memory bandwidth was the main bottleneck.