> For the complete documentation index, see [llms.txt](https://docs.marioded.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.marioded.com/configure-and-customize/terrain.md).

# Terrain and SlimeWorldManager

Give every replay its starting world, using captured chunks or an existing template.

A replay needs a starting scene as well as recorded actions. This guide explains where that scene comes from and how to make it available on your viewing server.

| Your world                 | How to provide the starting terrain                                            |
| -------------------------- | ------------------------------------------------------------------------------ |
| Ordinary live Bukkit world | Let the recorder capture the available loaded chunks.                          |
| Existing reusable template | Select it explicitly when recording and make it available to the player.       |
| SWM/ASP-managed world      | Configure the supported world manager and its loaders on the relevant servers. |

## Why terrain is separate

Replay events tell the player what changed, not what every unchanged chunk looked like. Reverse stores the base terrain out of band so recordings do not embed a complete world in each `.rpl` file.

The replay's terrain identifier locates this base scene:

* Captured world: normally the recording session UUID as a string.
* Template recording: the explicit template name.
* Missing/degraded terrain: an empty identifier may indicate that no usable base terrain was retained.

The recorded Bukkit world UUID is a separate value. Do not rename terrain folders to match that UUID and expect routing to work.

## Ordinary Bukkit worlds

Without an explicit template, the recorder captures the terrain available when recording starts. Keep the relevant arena loaded before starting; Reverse does not generate missing parts of the world just to fill the recording.

Block baselines and block-change events complement this terrain. Baselines describe the pre-replay block value for touched positions so backward seek does not consult a live world that may have changed since recording.

For arena recording, ensure the arena is loaded before starting. API bounds can restrict relevant chunk columns, but payloads preserve their full vertical extent.

## SWM and ASP-backed worlds

SlimeWorldManager/ASP support is optional. Use it when your arenas or templates are managed by that world manager. Ordinary worlds do not require it.

Reverse does not install SWM/ASP, create SWM loader credentials, or export a template for you.

### Setup checklist

1. Install the world manager build compatible with your server and Reverse distribution.
2. Configure the world's storage loader in that world manager.
3. Ensure the world/template exists and can be read through that loader.
4. Set Reverse's `storage.slime.loaders` to the loader names to probe, in order.
5. Make the same template data available to every replay server that may receive the recording.
6. Restart and run a short template replay test.

```yaml
storage:
  slime:
    loaders: [file, mysql, mongodb]
```

The first loader that reports the world wins. Put a local file loader first when appropriate to avoid unnecessary remote database probes. Loader names and credentials belong to SWM's own configuration, not `storage.database`.

## Recording against a template

```
/reverserecorder start --name "Arena final" --template arena-final
```

The template is an explicit choice. The recorder does not infer it from the world name or a filename prefix. A bare `.slime` suffix may be normalized by SWM resolution, but use a plain canonical template name in operations.

Because template mode skips live terrain capture, a wrong template may produce correct events over the wrong base scene. Confirm that the live arena was built from the same template version and that the replay server resolves the same asset.

{% hint style="info" %}
**Templates must exist on the viewing side too.** A template available only to the recorder does not give a separate replay machine access to its terrain.
{% endhint %}

Bounds and an explicit template are mutually exclusive in the recording API. There are no command flags for bounds or participant filtering.

## Make the complete scene available

The player server needs access to the recording's saved terrain or the complete template it references. Sharing a replay ID or copying the event file alone does not provide that terrain.

## What viewers see

Viewers see the saved terrain in the dedicated replay world. To fix missing ground, check the recording storage or selected template; copying an unrelated normal world folder onto the replay server will not repair it.

If a recording is degraded, preserve its logs and event data. Fix the capture/backend/template cause for future recordings; restarting playback cannot recreate an initial snapshot that was never saved.

{% content-ref url="/pages/1ClQXDROKUIqEESqA9ox" %}
[Troubleshooting](/keep-things-running/troubleshooting.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.marioded.com/configure-and-customize/terrain.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
