Capabilities
From OpenSimulator
(→General) |
|||
Line 27: | Line 27: | ||
|- | |- | ||
| DispatchRegionInfo || | | DispatchRegionInfo || | ||
+ | |- | ||
+ | | EstateAccess || | ||
|- | |- | ||
| EstateChangeInfo || | | EstateChangeInfo || | ||
+ | |- | ||
+ | | EnvironmentSetting || | ||
|- | |- | ||
| EventQueueGet || used for the event queue. | | EventQueueGet || used for the event queue. | ||
Line 49: | Line 53: | ||
|- | |- | ||
| GetMesh || used to get mesh data | | GetMesh || used to get mesh data | ||
+ | |- | ||
+ | | GetMesh2 || used to get mesh data | ||
|- | |- | ||
| GetObjectCost || | | GetObjectCost || |
Revision as of 14:58, 12 April 2020
Languages: |
English Français |
Contents |
Introduction
Capabilities are the mechanism by which a region makes certain information and services available to viewers via HTTP in addition to the messages being exchanged over UDP.
The Second Life wiki describes capabilities.
The Second Life wiki also has an incomplete summary of current capabilities.
Capabilities
OpenSimulator specific
OpenSimulator provides information about OpenSimulator-specific features or extra parameters via the SimulatorFeatures capability. See the SimulatorFeatures Extras page for more information.
General
These are capabilities that are provided by the Linden Lab viewer client (and hence in most third-party viewers). Many are implemented by OpenSimulator but others are not, sometimes because they are obsolete (TODO: Need to fill out information below about specifically what is implemented and what is not).
Name | Description |
---|---|
AttachmentResources | appears to be associated with determining limits on scripts in agent attachments. |
AvatarPickerSearch | |
ChatSessionRequest | |
CopyInventoryFromNotecard | |
DispatchRegionInfo | |
EstateAccess | |
EstateChangeInfo | |
EnvironmentSetting | |
EventQueueGet | used for the event queue. |
FetchInventory | obsolete |
FetchInventory2 | see Inventory capabilities |
FetchInventoryDescendents2 | see Inventory capabilities |
FetchLib2 | see Inventory capabilities |
FetchLibDescendents2 | see Inventory capabilities. |
FetchLib | Obsolete |
FetchLibDescendents | Obsolete |
GetDisplayNames | |
GetMesh | used to get mesh data |
GetMesh2 | used to get mesh data |
GetObjectCost | |
GetObjectPhysicsData | |
GetTexture | used to get texture data via HTTP instead of via UDP. See Texture capabilities. |
GroupMemberData | |
GroupProposalBallot | |
HomeLocation | |
LandResources | |
MapLayer | |
MapLayerGod | |
NewFileAgentInventory | |
NewFileAgentInventoryVariablePrice | |
ObjectAdd | |
ObjectMedia | used to get information about a media on a prim (MOAP)/shared media texture/surface. |
ObjectMediaNavigate | used to change web pages, etc., on a MOAP surface |
ParcelPropertiesUpdate | |
ParcelMediaURLFilterList | |
ParcelNavigateMedia | |
ParcelVoiceInfoRequest | |
ProductInfoRequest | |
ProvisionVoiceAccountRequest | |
RemoteParcelRequest | |
RequestTextureDownload | |
SearchStatRequest | |
SearchStatTracking | |
SendPostcard | |
SendUserReport | |
SendUserReportWithScreenshot | |
ServerReleaseNotes | |
SetDisplayName | |
SimConsoleAsync | used for the simulator console |
SimulatorFeatures | used to get information about what simulator features are available. This currently includes MeshRezEnabled and MeshUploadEnabled. OpenSimulator can also provide OpenSimulator-specific feature information and parameters. See SimulatorFeatures Extras for more information. |
StartGroupProposal | |
TextureStats | |
UntrustedSimulatorMessage | |
UpdateAgentInformation | |
UpdateAgentLanguage | |
UpdateGestureAgentInventory | |
UpdateNotecardAgentInventory | |
UpdateScriptAgent | |
UpdateGestureTaskInventory | |
UpdateNotecardTaskInventory | |
UpdateScriptTask | |
UploadBakedTexture | Used to upload avatar baked textures via HTTP rather than UDP |
UploadObjectAsset | |
ViewerStartAuction | |
ViewerStats | Used to upload viewer statistics (cpu usage, fps, etc.) |
WebFetchInventoryDescendents | Obsolete |
Enabling and Disabling
Capabilities are enabled and disabled in OpenSimulator by setting a property with the name Cap_<attachment-name> in the [ClientStack.LindenCaps] configuration setting of OpenSim.ini. If the value is "localhost" then it is served by the same simulator in which the viewer has it's root agent (its avatar). If the value is "" or the capability parameter is not present then it is disabled. The value can also be set to a URL to serve the capability directly from such other location, but this option is currently experimental and not documented.
For instance, to disable the GetTexture capability, one would set
[ClientStack.LindenCaps] Cap_GetTexture = ""
and to enable it
[ClientStack.LindenCaps] Cap_GetTexture = "localhost"
There are also a large number of default capabilities set up in the OpenSimDefaults.ini file. As with other configuration settings, these will be overwritten by anything you set in the OpenSim.ini file.
Mechanism
Here's a brief description of the mechanism by which a viewer entering a region is provided with capability endpoints on first login. The mechanism is slightly different when user moves between regions after login - this has yet to be documented.
- The client requests login to the installation's login service.
- The login service generates the seed capability. This is an URL with a random component which is made available by the simulator hosting the login destination. The URL is given to the viewer as part of the login reply (seed_capability). See SimulatorLoginProtocol for more details.
- The client establishes an initial child connection with the simulator with the UseCircuitCode UDP message. The server triggers individual modules to register capabilities as required (e.g. the GetTextureModule registers a GetTexture capability, etc.). As before, these capabilities have a random component.
- The client sends a request to the seed capability provided earlier, requesting a set of capabilities (GetTexture, etc.). The simulator replies with the required capability URLs.
- The client can then make requests to specific capabilites.
You can see the capabilities set up with the "show caps list" simulator console command. Here's some example output.
OpenSim (root)# show caps list Region keynote1: ** User f2f493c0-27d3-4cf2-be97-b44dfdad13b6: ObjectAdd /CAPS/OA/222dd805-a8f4-474a-a80b-530ab798f448/ NewFileAgentInventory /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440002/ FetchInventory2 /CAPS/08303040-e059-43e5-b6dc-882b40b3d117 UpdateAgentInformation /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440500/ GetTexture /CAPS/2389a354-033b-416c-8fc5-f2200837eac8/ GetObjectPhysicsData /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440101/ UpdateScriptAgent /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440004/ SimulatorFeatures /CAPS/a7551043-30a8-4abe-b5f6-1185a6b20187 SimConsoleAsync /CAPS/4e885802-ed6a-472a-9261-276f049b4dc7/ EnvironmentSettings /CAPS/0020/344f07cd-88f8-4a28-8bd2-689a238c7f10 RemoteParcelRequest /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440009/ AvatarPickerSearch /CAPS/38dfa1b4-b76a-4301-b8d2-91894b4e5365/ UploadObjectAsset /CAPS/OA/60ca2175-ee34-4cfc-bbf9-e81992147ffc/ SEED /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440000/ UpdateNotecardAgentInventory /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440004/ CustomMenuAction /CAPS/3b02708e-92e3-4106-92a5-88aaf7407e4e/ UpdateScriptAgentInventory /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440004/ ObjectMedia /CAPS/bfb392c6-8559-4dab-a464-1da263b85a89 UpdateScriptTask /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440005/ ParcelPropertiesUpdate /CAPS/2691b05e-58b3-4355-b121-a2fb83d21a20 MapLayer /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440001/ NewFileAgentInventoryVariablePrice /CAPS/7585a3dc-4c96-4ec2-9e13-935d17ef17a0 UpdateScriptTaskInventory /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440005/ ViewerStats /CAPS/VS/dae0e09f-a171-474d-8f1e-0af09afb7d80 UntrustedSimulatorMessage /CAPS/1aeae93a-67b0-4f57-ad87-eefc24436d4c MeshUploadFlag /CAPS/d9f7a6eb-1967-4da8-85ae-051ea4fd06f7 UploadBakedTexture /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440010/ CopyInventoryFromNotecard /CAPS/e3a0dbd7-3e00-4134-87f4-ebf9350ce8440007/ GetMesh /CAPS/90f9a679-0b97-40a6-b089-1eaaf3dbb3ef/ ObjectMediaNavigate /CAPS/f0e2080d-35a5-46a7-a2ad-eff77e9c52e3 EventQueueGet /CAPS/EQG/1267ddf0-13fb-4d5f-bc20-2cb20be1c6d6/ FetchInventoryDescendents2 /CAPS/2ba79e1c-e9ba-45af-97e4-5b5757a25418/
Here, the SEED capability is the initial capability from which to request the others.
There are some advanced configurations that can serve capabilities directly from services (see the section below for more details). However, these currently cannot generate the random capability component. In the future, there may be some mechanism to allow this though at the cost of increasing the complexity of the system.
Serving capabilities from services
Normally, capabilities are served from the simulator. However, for the GetTexture service (and more in future, such as the GetMesh service), the request can be handled directly from a Robust service instance operating on a port accessible to the viewer. See Direct Service Requests for more information on this.