For the complete documentation index, see llms.txt. This page is also available as Markdown.

Troubleshooting

Work through the sections in order; the first three cover nearly every report.

1

Nothing renders / the resource misbehaves at start

Read the server console from the last rm_scenes start:

  • ox_lib 3.30.0 or higher recommended / oxmysql 2.10.0 or higher recommended: update the dependency; older versions are the usual cause of odd callback failures.

  • cfg.bridge.<category> = <name> but no adapter registered: the value doesn't match a file in rm_scenes/bridge/. Check the spelling against the files in bridge/notification/.

  • No loaded N scenes line: the database connection never came up; fix oxmysql first.

Also make sure the player didn't flip Disable scene rendering in the scene list; it's per-client and easy to forget.

2

One specific scene doesn't render

  • Check its row in the scene list first. The eye icon lights up while the scene actually renders near you (line-of-sight aware), which quickly separates "not rendering" from "rendering somewhere you're not looking".

  • Attached to a missing object. The scene's details show Attached to object; it only renders while that object exists near its spot. Detach it from the list to pin it at its world position.

  • Expired or pruned. Expiry (deletedOn) and the unseen-scene cleanup (cfg.scenes.deleteUnseenAfter) both remove scenes at resource start. If it's gone from the list, it's gone from the database.

  • Out of range or occluded. Scenes render within cfg.scenes.renderDistance; with cfg.scenes.occlusion = true they're also skipped behind walls. Set occlusion = false briefly to rule that out.

3

Scenes go blank/white in dense areas

More distinct scenes are in range than the runtime texture pool holds, so the farthest ones give up their texture. Raise cfg.scenes.texturePool.max (each slot is ~4 MB of texture memory at the default 1024 size) or lower renderDistance.

4

A scene flickers against its surface

Z-fighting: the drawing sits exactly on the geometry. During placement, nudge the depth one or two taps with Q/E until it settles. For an existing scene, use Move and re-place it with a small depth nudge.

5

Saving fails

The error notification tells you why:

  • Invalid data: the image failed server-side validation. Animated sources (GIF/APNG) are rejected, as is anything that isn't a real png/webp or is oversized.

  • Rate limited: each player gets a budget of 20 scene mutations (saves, edits, moves, copies, URL downloads) per minute.

  • No permission: cfg.auth blocks the player, or a job/gang locations restriction doesn't cover the spot; the zone check runs server-side on every save, move and copy.

  • Scene limit reached: cfg.scenes.limitPerPerson; the player must delete an old scene first (merging your own scenes never blocks on the limit).

  • Request timed out: very large drawings stream to the server at cfg.scenes.imageBps; if timeouts persist on legit saves, raise that value.

  • Database error: the save was rejected because a query failed; the server console shows the exact SQL error at that moment.

    For the exact verdict behind a generic "Scene could not be saved.", run setr ox:printlevel:rm_scenes verbose and read the client console (F8): every save logs its payload size, timeout and the server's reply (no_permission, db_error, timeout, ...).

6

URL images won't load in the editor

The download runs on the server, with hard rules: https only (cfg.scenes.allowHttpImageUrls = true also permits plain http), 15 MB cap (cfg.scenes.maxImageUrlBytes adjusts it), at most 3 redirects, and the file's actual bytes must be webp/png/jpg. Animated GIF/APNG are rejected on purpose (only a single frame would bake into the drawing). Hosts that resolve to private or internal addresses are refused; link images from a proper public host (imgur, discord CDN, your web server behind a public DNS name).

7

A custom font doesn't show up

In cfg.nui.fonts, family must match the font's real family name (as declared by the CSS/font file), and url must be a stylesheet or direct font file the client can reach. Fonts load when the editor opens, so a wrong URL fails silently to the default font.

Still stuck? Open a ticket in our Discord with your server console output from a fresh resource start and a short clip or screenshot of the issue.

Last updated