Name Binding
From OpenSimulator
(Created page with "=Background Information= A Second Life/OpenSimulator needs to resolve user UUIDs to names (e.g. 25bf6e60-91c0-4d28-8349-ba254cd4388e -> Jane Doe). It does this by issuing a UUID...") |
Revision as of 09:16, 4 July 2013
Background Information
A Second Life/OpenSimulator needs to resolve user UUIDs to names (e.g. 25bf6e60-91c0-4d28-8349-ba254cd4388e -> Jane Doe). It does this by issuing a UUIDNameRequest UDP message, to which the simulator responds with a UUIDNameReply UDP message containing the binding.
The viewer uses this binding to display names in some contexts, such as local chat and friends lists. For unknown reasons (possibly code evolution), it does not use this mechanism for displaying names in avatar name bubbles. Therefore, it's possible for these to be correct whilst local chat names may be wrong.
Once a viewer has received a binding. it stores this in a local cache and never requests it again.
On the server side, these bindings are stored in an in-memory dictionary. This dictionary is built up by a combination of an initial scan of objects in the region on simulator startup, by later addition of entries into the dictionary, such as when a previously unknown Hypergrid avatar enters a region and on demand when a UUID is actually requested by inspection of user account and grid user data.
Name binding in OpenSimulator is fairly complex due to the requirement to bind the names of users visiting via the [Hypergrid] as well as the more straightforward binding of local users to UUIDs.
If a user binding could not be found, the viewer may receive a binding to "Unknown user" in various forms.
Server commands
In OpenSimulator 0.7.5 onwards, there is a simulator console command called "show names". This will show all the current in-memory bindings.
In current OpenSimulator dev code (post 0.7.5), there is also a command called "show name <uuid>" which will show a binding for a given uuid.
Message exchange
In Linden Lab viewer 3.3.4, for an object in a region where the creator of the object is not present and the viewer does not have the creator's UUID bound to a name in cache, as UUIDNameRequest may only be issued when the user requests the properties of an object.