> 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/reference/architecture.md).

# How recordings work

Understand what a recording contains and how recorder, player, and lobby work together.

Reverse separates capturing gameplay, storing a recording, and watching it. That lets you start on one server and later move to a network without changing how players choose a replay.

## From match to replay

```mermaid
flowchart LR
  Game[Gameplay] --> Recorder[Recorder]
  Recorder --> Storage[(Recordings and terrain)]
  Storage --> Player[Player]
  Player --> Viewers[Replay viewers]
```

The recorder saves the starting scene and supported actions. The player loads that data and shows the scene to viewers. The original gameplay world does not need to remain loaded on the viewing server.

## What is saved?

| Data             | Why it matters                                                                              |
| ---------------- | ------------------------------------------------------------------------------------------- |
| Replay details   | Name, description, owners, and recording time are shown in the catalog.                     |
| Recorded actions | Movement, block changes, and other supported activity form the playback timeline.           |
| Starting terrain | Provides the world before those changes happen. It is stored separately from replay events. |

Keep the complete dataset when moving or backing up recordings. A `.rpl` event file alone is not the entire starting world.

## Capture and saving are separate steps

Stopping a recording ends capture immediately. Saving can take longer, so wait for the completion result before offering the replay to viewers.

A degraded result means the actions were saved but terrain was unavailable. A failed save is a different outcome. Integrations should handle both rather than treating every stop as a ready-to-watch replay.

## Watching a recording

A viewing session has a current position, pause state, and speed. Several viewers can share the same session, in which case they share its controls. Separate sessions allow independent watching of the same recording.

Seeking jumps to the scene at a different point. It does not modify the original gameplay world or replay every sound from the skipped time.

## Adding a lobby

The lobby shows accessible recordings, finds an available replay server, and asks the proxy to move the viewer there. The player server then opens the selected recording.

Shared recording storage and online-server coordination do different jobs: SQL can provide the common archive, while SQL or Redis can coordinate transfers.

{% content-ref url="/pages/sw2rn3Xw68PPxoBh1DT1" %}
[Lobby and proxy setup](/use-reverse/network.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/reference/architecture.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.
