> For the complete documentation index, see [llms.txt](https://docs.spoof.dev/asteroid/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.spoof.dev/asteroid/configuration/performance.md).

# Performance

Fake players are real player entities, so they use resources. These settings trade realism for lower resource use, which matters when you run a lot of fakes.

## Performance Mode

```yaml
spoof:
  performanceMode: false
```

Performance Mode strips fake players down to the absolute minimum. When it is on, fake players do **not** move, tick, get knocked back, pick up items, use gravity, have lifespans, or use multi-threading. They simply exist. It also applies heavy memory optimizations. Use it when you only care about the player count, not realism. It is the single biggest resource saver.

## Threading and per-player features

```yaml
threadedExecutionEnabled: true
allowSchedulerFeature: true
allowEntityPickup: true
```

| Setting                    | What it does                                                                 | Cost                                                                                |
| -------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `threadedExecutionEnabled` | Gives each fake dedicated threads for its systems (movement, AI, scheduler). | On: about 6 threads per fake, best realism. Off: about 4 threads per fake, lighter. |
| `allowSchedulerFeature`    | Gives each fake a thread for the scheduler.                                  | Turn off to save one thread per fake if you do not use the scheduler.               |
| `allowEntityPickup`        | Gives each fake a thread for item pickup.                                    | Turn off to save a thread. Dropped items near fakes just stay on the ground.        |

## How to tune for scale

Work down this list until performance is comfortable:

1. Turn off features you do not use: `allowSchedulerFeature` and `allowEntityPickup`.
2. Reduce movement. Disable abilities you do not need, or turn movement off entirely.
3. As a last step, enable `performanceMode` for the lightest possible fakes.

Reload after changing threading settings. For the biggest changes, a full restart is safest so old threads are cleaned up.
