Floors
See where every character is standing, on every level of the map, at once.
Floors is an Owlbear Rodeo extension for dungeons, towers, airships and any other map drawn as several levels side by side in a single Scene. Tracked tokens cast a faded "trace" onto every other level at the matching position, tagged with an arrow and a number, so you can tell at a glance that the rogue on the ground floor is directly beneath the guard patrolling above.
Why Floors?
Multi-level maps are usually laid out as separate images in one Scene, which makes vertical relationships invisible. Is the party standing over the vault, or two rooms east of it? Does the sniper on the roof actually have a line down the stairwell? Answering that normally means eyeballing two images and hoping.
Floors solves it by projecting position rather than by splitting the Scene. Each level keeps its own image and its own tokens, and every tracked token appears on the other levels as a desaturated trace at the same relative spot. Nothing is hidden, no Scene switching is needed, and the vertical picture is always on screen.
Because traces are per-client and derived from live token positions, they cost nothing to keep in sync and they follow your tokens automatically, including when another extension moves them.
Getting Started
1. Install the Extension
Copy the Floors manifest URL:
https://floors.several-record.com/manifest.json
Then head to your Owlbear Rodeo Room → Extras → Extensions → + (Add Custom Extension), paste the URL, and confirm.
2. Enable Floors in Your Room
While still in the Extensions Manager popover, make sure Floors is toggled on for this Room.
You should see the Floors icon appear in the extension Action tray.
3. Tell Floors Which Image Is Which Level
Floors does not guess. Until you assign at least two levels, nothing happens. See Setting Up Your Floors below.
Setting Up Your Floors
All setup is GM-only and happens through the right-click menu on your map images, or through the Floors panel in the Action tray.
Assign a floor number
Right-click a MAP-layer image and choose Floors → Set Floor Number. Type the number and confirm.
Floor numbers are ordinary integers and can be negative, so a basement is -1, ground level is 0, and the first storey is 1. There is no requirement to start at any particular number, but the ordering is what drives the arrows and the level differences, so keep them sequential in the direction you think of as "up".
Repeat for every map image that represents a level.
Floor zones: several levels in one image
Many published maps draw all their levels inside a single image. For those, use Floors → Add Floor Zone on that image. A rectangle appears which you resize over the region you want, then confirm it with Confirm Floor Zone.
Each zone gets its own floor number and behaves exactly like a separate level image. Zones cannot overlap another active zone on the same image. If you draw one over a zone you previously removed, confirming it restores that old zone instead of rejecting the placement.
Datum points: lining the levels up
Two level images are almost never at the same offset in the Scene, and their staircases rarely sit at matching pixel positions. A datum is the shared reference point that tells Floors how the levels line up.
Right-click a map and choose Floors → Place Datum Marker. Drag the marker to a feature that is common to every level (a stairwell, a lift shaft, a corner of the building's footprint), then choose Confirm Datum Here. Do the same on every other level, putting the marker on the same feature each time.
Traces are then positioned by offset from the datum: a token standing three squares north-east of the ground floor stairwell will trace three squares north-east of the first floor stairwell, whatever the two images' positions or sizes.
A level with no datum falls back to its own bounds, which works for identically framed level images and drifts on anything else. The Floors panel marks any level still showing No datum.
Tracking Tokens
Right-click a token on the CHARACTER layer and choose Floors → Track Across Floors.
That token now casts a trace onto every other assigned level. Choosing the same menu entry again stops tracking it. Tokens are not tracked by default, so the display stays readable: track the party, not the whole dungeon's worth of goblins.
Traces are recomputed whenever a token moves, including moves made by other extensions, and whenever you change a floor number, datum or zone. A token whose traced position would fall outside the target level's bounds produces no trace there, so a party standing in a wing that only exists on one storey does not litter the others with traces hanging off the edge.
Reading a Trace
A trace is a faded copy of the token drawn below the CHARACTER layer, so it never obscures a real token. Next to it sits an arrow and a number telling you where the real token actually is.
The number has two modes, set with Trace Label in the Floors panel:
- Delta shows how many levels away the real token is, with the arrow pointing up or down. A trace reading
▲ 2means the character is two levels above the map you are looking at. - Floor shows the real token's absolute floor number instead, so a trace reading
3means the character is on floor 3 no matter which level you are viewing.
Delta is the better default when you are moving between levels constantly. Floor is easier when you are describing positions out loud to players.
The Floors Panel
Click the Floors icon in the Action tray to open the panel. It shows a cross-section of your Scene: every level as a row, ordered by floor number, with the tokens currently standing on it shown as avatars.
- Click a level or a token to select it. The toolbar above acts on the selection.
- Double-click a level to navigate the viewport to it.
- Drag a level to reorder it. Levels are renumbered sequentially to match the new order, so this is the quickest way to fix an out-of-order set.
- Rename a level with the rename button, if the map's own name is unhelpful.
- Remove a level with the delete button. This is a soft delete: the level's settings are preserved and it can be restored.
- Show Floor Extents draws a coloured overlay and a large floor number over each level, which is the fastest way to confirm your zones and bounds are where you think they are.
Tokens that are tracked but not standing on any assigned level are grouped under Unassigned.
Trace Appearance
Open Trace Settings in the Floors panel. These are GM settings and apply to everyone.
- Saturation (0 to 1) controls how much colour a trace keeps. The default of 0.3 leaves traces clearly readable but obviously secondary. Raise it if your maps are already low-contrast, eg. a Shadowfell or greyscale set where a desaturated trace disappears entirely.
- Gamma (0.3 to 2.3) controls the brightness curve. The default of 0.7 darkens traces without crushing them, and unlike a flat brightness multiplier it preserves the black and white points, so token outlines survive.
- Shader Shape picks whether the trace is masked to a Circle or a Square, to match the shape of your tokens.
Dragging a slider previews live and commits when you release it.
Player Visibility
Floors gives you two independent controls, both GM-only.
Per level and per token. Each level and each tracked token has its own Hide from players / Show to players toggle. Hiding a level stops its traces reaching players; hiding a token stops that token tracing anywhere. This is separate from Owlbear Rodeo's own item visibility, so you can leave a map fully visible while keeping its traces to yourself.
Globally. The Visible To Players switch turns player-side traces off entirely, making Floors a GM-only overview.
Players additionally get their own on/off toggle in the panel title row, so a player who finds the traces distracting can turn them off for themselves without affecting anyone else.
Compatibility
- Portals is fully supported. A token teleported by Portals keeps its ID, so its traces follow it to the destination with no special handling.
- Aurora coexists. Floors draws its trace shaders in a high z-index band so they render on top, and releases the pixels outside the trace mask so Aurora's effects still show through around them.
- Auras & Emanations does not conflict with Floors' shaders.
Troubleshooting
"I set floor numbers but no traces appear"
- Traces only appear for tokens you have explicitly tracked. Right-click the token and choose Floors → Track Across Floors.
- At least two levels must be assigned. A single level has nowhere to trace to.
- Check the token is on the CHARACTER layer. Floors only tracks CHARACTER items.
"Traces appear in the wrong place"
- This is almost always a missing or mismatched datum. Confirm a datum on every level, and make sure each one is on the same real-world feature.
- If your map images have different resolutions, a datum is required rather than optional.
"A level shows No datum"
- That level has never had a datum confirmed, or it was cleared. Place and confirm one from the right-click menu or the panel toolbar.
"Traces are too faint to see"
- Raise Saturation and Gamma in Trace Settings. Low-contrast or greyscale map sets usually need both above their defaults.
"Players cannot see any traces"
- Check Visible To Players is on, then check the individual level and token toggles, and finally confirm the player has not turned traces off with their own toggle.
"A floor vanished from the panel"
- Fixed in 0.1.1. A map item whose metadata had been stripped by another tool used to abort the whole level scan. Update to the current version, which repairs such items on sight.
Support
Discord is the main OBR community hub and the place to find help and answers. You can join it through this invite link: https://discord.gg/u5RYMkV98s and then search for "Floors" to find the conversation about this extension, or just open a new bug report in the ❓ | #extension-help channel.
Privacy & Licensing
Floors is designed with privacy in mind:
- No data collection. Floors sends nothing anywhere. There is no telemetry, no analytics and no external network access of any kind.
- Local processing. Every calculation runs in your browser. Traces are created as local Scene items, which means they exist only on your own client and are never written to the Room.
- Your Scene data stays in your Room. The only thing Floors stores is the floor numbers, datum points, zones and settings you configure, held in Owlbear Rodeo's own Scene and item metadata.
Icon Credits
| Icon | Description | Author | Licence |
|---|---|---|---|
| Visibility, VisibilityOff, Delete, TextFields, DragIndicator | Panel toolbar controls | Material Icons | Apache 2.0 |
All other icons are original inline SVG components.