Minecraft anticheat guide

Load Testing an Anticheat With Bots: A Safe Method

How to load test a Minecraft anticheat with bots on a staging server: test matrix, step plan, metrics to log, and pass or fail rules set before testing.

Load test an anticheat on staging with bots

Load test an anticheat on a private staging server with bot or fake players you control. Keep the server copy close to production: the same software build, plugin set, world size, and host plan. Set pass and fail rules before the first run, log every step, and never point test bots at a public server or a network you do not run.

Set the rules before you run anything

Bot tests produce a lot of numbers, and it is easy to decide after the fact what they meant. Write the rules first. Include the player count you expect at peak, the tick time you consider acceptable, and the alert behavior you need. Record who signs off on the result.

Confirm that your server rules and the platform you use permit automated test clients. Do not run bots against a live network to see how staff react.

Build a test matrix

One scenario does not describe a server. Cover the movement and combat patterns your players actually produce, and test each one alone before combining them. The matrix below is a starting point. Fill the bot counts with your own targets.

Bot test scenarios
ScenarioBot behaviorQuestion it answers
IdleConnected, no movementWhat does the anticheat cost when nothing happens?
WalkingRandom walk inside a small areaDoes movement tracking scale with player count?
CombatScripted hits between paired botsHow do combat checks behave under many hits?
BuildingBlock placement in a set areaDo placement and block checks add load?
MixedAll of the above at the planned ratioWhat happens at the expected real mix?

Run the test in steps

Step the bot count up instead of jumping straight to the peak. Each step shows where cost begins to rise. Keep the anticheat state the same across the run, then repeat with it disabled so the difference is attributable.

Log the metrics in one format

Use the same log for every run. Keep the raw server log and the exported metrics with it so a later reviewer can check your reading. A template keeps runs comparable across dates and versions.

Run log template. Replace each placeholder with a value you measured.
run-id: <date>-<scenario>-<anticheat on|off>
server build: <software and version>
plugins: <list with versions>
bots at step: <count>
tick time (MSPT) median and 95th percentile: <values>
CPU and heap after GC: <values>
errors in server log: <count and first line>
alerts sampled: <count, expected/unexpected/unclear>
result vs pass rule: <pass|fail|unclear>

Interpret the result without over-reading it

A higher tick time with the anticheat on is a finding, but it does not prove the anticheat is at fault. Check whether the same rise appears with the anticheat off, and whether the server log shows errors. Bot movement is not the same as human movement, so an alert from a bot is not evidence about a real player.

Report the result as a comparison on your staging setup. Do not describe it as a general performance rating.

Before you change a production setting, repeat the mixed scenario on a second day with a fresh restart. If the difference between anticheat on and off changes direction or size, the result is not stable enough to act on. Record that as an open question, extend the test, and keep production as it is until the rerun agrees with the first run. Staff who read the report later should be able to see both runs, the rules you set beforehand, and the decision you made from them.

What we have not verified

Bot results also depend on the bot client, the network path between the bots and the server, and the host's own load during the run. Note each of these in the log so a later reader can judge how far the result travels.

This page does not provide bot counts, tick times, or alert rates for any anticheat. FairPlay has not published load test results on any host in this article. Treat every number as something you measured on your own staging setup.

FAQ

Can I run bot tests on my live server during quiet hours?

Use a staging server. Live tests can trigger real alerts and bans, and they can disturb players who did not agree to be part of a test.

Why do bot alerts differ from real player alerts?

Bots follow scripted or random movement. Their input timing and aim differ from people, so use bot alerts to check the pipeline and the logs, not to judge how the checks treat players.

How many runs do I need before I trust a result?

Repeat the same scenario at least once more after a restart. If the two runs disagree, the test setup is not stable yet, and the result should not drive a configuration change.

Related sources and official pages

Browse all anticheat guides