RLVa / RLV Differences

From Catznip
Jump to navigation Jump to search
RLVa Logo

RLVa is an alternative implementation and extension to the RLV API by Marine Kelly. RLVa interprets some things a little differently (usually in a less intrusive way) and has a number of extensions above and beyond Marine's specification. This wiki details the RLVa specification as it applies to Catznip, Firestorm and other RLVa Viewers. RLVa has been in majority use since 2009 and is what most users experience as or equate to being RLV even though that refers to a different specification and implementation.

RLVa shares no code with Marine Kelly's RLV implementation and while we're committed to the maintaining functional compatibility to the spirit of her specification we are under no obligation to implement every change or addition. In the same way she is not expected to mirror everything that appears in the RLVa Specification. That said RLVa and RLV have historically followed a very close common path with additions to one ending up in the other and vice versa. (sometimes via Synonyms).

End User Differences

Shared Wear

SharedWear significantly simplifies organising the contents of your #RLV Folder by removing the need to create or rename attachments with their attachment point names. This is an update to the previous RLVa specific behavour that would create the required folder names for you automatically.

RLVa Developer Differences

Debugging Tools

RLVa features the Active Commands floater and a number of Debugging Tools that make it much easier to see what your scripts are doing and what commands are being executed. Assertion failures can optionally be enabled highlighting potential SL service bugs.

Give to #RLV Folder Depth & #RLV Folder Creation

As of Catznip R9 and Firestorm 4.6 the #RLV Folder is automatically created when an inventory offer uses Give to #RLV. Previous versions of RLVa and all versions of RLV require the folder to created manually before use.

Also, #RLV Folder inventory offers can be up to 3 sub folders deep (#RLV/~Level1/Level2/Level3) with all parent folders created if required. See Give to #RLV for details.

Positive Channel Numbers

Many commands require a channel number to be specified in order to relay information from the viewer to script. RLVa requires this to be a positive integer due to differences in LSL message size. Negative channels can only contain strings 256 bytes in length, positive channels can contain up to 1024 bytes.

This is done to prevent RLVa commands appearing to output truncated data for a non obvious reason.

RLV Synonyms

A select number of commands from RLV are implemented in RLVa via synonyms, this is to cover differences in naming schemes and sometimes differences in command behaviour / implementation. Synonyms are provided as a courtesy to offer a minimal level of cross API compatibility. It is strongly advised to use the commands as detailed in the RLVa specification as implementation differences could easily translate to non obvious unwanted behaviour.


Maps to @setcam_unlock=<n|y>. Changed to fit with rest of @setcam controls.

RLVa Command Differences

Some commands have the same naming but operate in notably different ways or have optional extra parameters.


Optionally lock or remove attachment by UUID


Optionally remove attachment by UUID


Optional distance can be specified, falling back to a default of 1.5m if omitted.


Optionally remove attachment by UUID


Optional agent UUID to be specified providing an exception.


Optional agent UUID to be specified providing an exception.


Optional distance can be specified, falling back to a default of 1.5m if omitted.


Destination can be specified by region name and local coordinates without the need for script based round trip to fetch global coordinates. Lookat vector optionally sets direction avatar faces on arrival.