Second Life Protocol
Protocol – Second Life Wiki
Open Source Portal
Learning the System
Features Specifications and Documentation
Viewer Architecture
Viewer Source Code
Server Architecture
Protocol Documentation
Third Party Libraries
Coding Standard
Glossary
Ways to Participate
Contents
1 Message Formats
1. 1 Binary UDP
1. 2 Capabilities
1. 3 XML-RPC
2 Protocol Systems
2. 1 Animations
2. 2 Appearance
2. 3 Assets
2. 4 Avatars
2. 5 Channels and Versions
2. 6 Directory Searches
2. 7 Estate Tools
2. 8 Friends
2. 9 Grid
2. 10 Groups
2. 11 Inventory
2. 12 Agent
2. 13 Login
2. 14 Movement
2. 15 Objects
2. 16 Images
2. 17 Parcels
2. 18 Simulators
2. 19 Sounds
2. 20 Terrain
3 File Formats
3. 1 Asset Files
Message Formats
Binary UDP
Message Layout — Explanation of message format and the message template
Packet Layout — the layout of the UDP payload.
Circuits — Establishment and common operation of UDP circuits between two nodes
Packet Accounting — how the message system handles packet sequencing, reliability, suppression, throttling, etc.
Common Messages — messages that are handled by every Indra message system instance.
Xfer Manager — messages used by the LLXFerManager class.
Transfer Manager — messages used by the LLTransferManger class.
All messages — an alphabetical listing of all messages in the system
Capabilities
The Capabilities system allows viewers to request abilities and be temporarily granted those abilities through a unique URL. The transport format is LLSD XML, and clients can either post new events to CAPS URLs or wait for events to come from the server on the event queue connection the client holds open.
Message_System_and_Capabilities
Capabilities use the Linden Lab Structured Data system to represent data.
See LLSD.
XML-RPC
Older releases of the official viewer used XML-RPC as part of the Login Protocol. The official viewer now uses a web based authentication protocol, however non-official viewers may still use XML-RPC for login.
See also Authentication Flow.
Protocol Systems
Animations
See Internal Animation Format.
Appearance
See Avatar Appearance.
Assets
Avatars
Channels and Versions
Channel – definition of a channel
Channel and Version Requirements – Linden Lab policy on the use of channels.
Directory Searches
See Search Messages.
Estate Tools
Friends
See:
Relationship Messages
Mute List
Grid
Groups
Group Messages
Inventory
Inventory Messages
Inventory Capabilities
Task Inventory
Agent
Agent Messages
Money Messages
Communication Messages
Buying Land and Currency
Login
Movement
Objects
Object Messages
Images
Parcels
Parcel Messages
Simulators
Region Messages
Sounds
Terrain
File Formats
Asset Files
Files Types known by the asset system
Reference
extension
id
mime type
LSL
Textures
texture
0
image/x-j2c
INVENTORY_TEXTURE
sound
1
application/ogg
INVENTORY_SOUND
Calling_Card
callingcard
2
application/
Landmarks
landmark
3
INVENTORY_LANDMARK
Clothing
clothing
5
INVENTORY_CLOTHING
Primitive
primitive
6
INVENTORY_OBJECT
Notecards
notecard
7
INVENTORY_NOTECARD
LSL Text
lsltext
10
INVENTORY_SCRIPT
LSL Bytecode
lslbyte
11
Bodypart
bodypart
13
INVENTORY_BODYPART
animatn
20
INVENTORY_ANIMATION
Gestures
gesture
21
INVENTORY_GESTURE
Asset Wrapper
asset
unassigned
application/
Second Life Grid – Wikipedia
This article needs to be updated. Please help update this article to reflect recent events or newly available information. (October 2011)
Second Life GridSecond Life Grid logoDeveloper(s)Linden LabPublisher(s)Linden Lab
The Second Life Grid is the platform and technology behind 3D online virtual world Second Life. In April 2008, IBM announced that it would explore future deployment of a portion of the Second Life Grid behind a corporate firewall. [1]
Technical information[edit]
The flat, Earth-like world of Second Life is simulated on a large array of Debian servers, referred to as the Grid. [2] The world is divided into 256×256 m areas of land, called Regions. Each Region is simulated by a single named server instance, and is given a unique name and content rating (PG, Mature or Adult). Multiple server instances can be run on a single physical server, but generally each instance is given a dedicated CPU core of its own. Modern servers with two dual-core processors usually support four separate server instances.
The Second Life world runs on Linden Time, which is identical to the Pacific Time Zone. The virtual world follows the North American Daylight Saving Time convention. Hence it runs 7 hours behind UTC most of the year, and 8 hours behind when Standard Time is in effect during the winter. The servers’ log files actually record events in UTC, however.
Physics simulation[edit]
Each server instance runs a physics simulation to manage the collisions and interactions of all objects in that region. Objects can be nonphysical and nonmoving, or actively physical and movable. Complex shapes may be linked together in groups of up to 255 separate primitives. Additionally, each player’s avatar is treated as a physical object so that it may interact with physical objects in the world. [3]
As of April 1, 2008, Second Life simulators use the Havok 4 physics engine for all in-game dynamics. This new engine is capable of simulating thousands of physical objects at once. [4] However, more than 500 constantly interacting collisions have noticeable impact on simulator performance. [5] The previous Havok 1 installment of the physics engine caused what is known as the Deep Think condition; processing overlapping object collisions endlessly. It has been alleviated through the introduction of an overlap ejection capability. This allows overlapped objects to separate and propel apart as if compressing two springs against each other. [6]
Asset storage[edit]
Every item in the Second Life universe is referred to as an asset. This includes the shapes of the 3D objects known as primitives, the digital images referred to as textures that decorate primitives, digitized audio clips, avatar shape and appearance, avatar skin textures, LSL scripts, information written on notecards, and so on. Each asset is referenced with a universally unique identifier or UUID. [7]
Assets are stored in their own dedicated MySQL server farm, comprising all data that has ever been created by anyone who has been in the SL world. As of December 2007, the total storage was estimated to consume 100 terabytes of server capacity. [8] The asset servers function independently of the region simulators, though the region simulators request object data from the asset servers when a new object loads into the simulator. [citation needed]
As the popularity of Second Life has increased, the strain on the database engine to quickly and efficiently store and retrieve data has also continued to increase, frequently outpacing the ability of the Linden staff to keep their asset farm equipped to handle the number of users logged into the world at the same time. [citation needed]
Under severe load conditions it is common for the database engine to simply not reply to requests in a timely fashion, causing objects to not rez or delete as expected, or for the client inventory to not load, or the currency balance to not appear in the client program. Searching for locations, people, or classifieds may also fail under heavy load conditions. The database load is typically the most severe on weekends, particularly Sunday afternoons (Second Life Time), while the system can function just fine when accessed during low-load times such as at night or in the middle of the week during the day. [citation needed]
Software[edit]
The Second Life software comprises the viewer (also known as the client) executing on the Resident’s computer, and several thousand servers operated by Linden Lab. There is an active beta-grid that has its own special client, which is updated very regularly, and is used for constant software testing by volunteers. This testing software was introduced to eliminate the short amounts of time between real updates, and increase its overall quality. The beta-grid reflects the standard main-grid, except that the actions taken within it are not stored by the servers; it is for testing purposes only. Every few months, the standard software is replaced by the beta-grid software, intended as a big upgrade. The Second Life user-base is growing rapidly, and this has stimulated both social and technological changes to the world; the addition of new features also provides periodic boosts to the growth of the economy.
Linden Lab pursues the use of open standards technologies, and uses free and open source software such as Apache, MySQL and Squid. [9] The plan is to move everything to open standards by standardizing the Second Life protocol. Cory Ondrejka, former CTO[10] of Second Life, has stated that some time after everything has been standardized, both the client and the server will be released as free and open source software. [11]
The current in-house virtual machine will soon be replaced with Mono, [12] which will reportedly produce a dramatic speed improvement.
uBrowser, an OpenGL port of the Gecko rendering engine, which has been used in the client since version 1. 10. 1[13] to display the Help documentation, will also be used to display webpages on any of the surfaces of any 3D object the Resident creates.
Linden Lab provides viewers for Microsoft Windows 2000/XP, Mac OS X, and most distributions of Linux. As of mid-2007, Microsoft Windows Vista is not yet officially supported although the viewer will generally run on Vista systems. [14] In the past, viewer upgrades were usually mandatory; the old viewer would not work with the new version of the server software. However, Linden Lab is working on a more flexible protocol that will allow clients and servers to send and take whatever data they may require, hence differing versions would nonetheless be able to work together. The project is known as Het-Grid or heterogeneous grid and the first iteration of the server software was deployed to the Main Grid over a few weeks in August 2007. [15]
As of January 8, 2007, the Viewer is distributed under version 2 of the GNU General Public License, [16][17] with an additional clause allowing combination with certain other free software packages which have otherwise-incompatible licenses. Currently not all of the required dependencies have been released. [18]
Modified viewer software is available from third parties. The most popular is the Nicholaz Edition;[19] this viewer, produced by Nicholaz Beresford, includes bug fixes developed outside Linden Lab that are not yet included in the Linden Lab code. The Electric Sheep Company has introduced the OnRez Viewer, [20] which makes substantial changes to the design of the user interface. ShoopedLife is a commonly used Second Life client that generates randomized hardware details and sends them to the Second Life server as part of the login, rendering the user anonymous, save for their IP address. [21]
An independent project, libopenmetaverse, [22] offers a function library for interacting with Second Life servers. libopenmetaverse has been used to create non-graphic third party viewers, including SLEEK, [23] a text browser using, and Ajaxlife, [23] a text viewer that runs in a web browser.
The OS X viewer is a universal binary and is about twice the size of the Windows and Linux binaries. [24]
Animation editors using the Biovision Hierarchy file format such as Poser, and Avimator are compatible with SL.
Further development[edit]
In 2007, Linden Lab began work on improving the User Experience of second life. On December 6, 2007, a new download client (commonly known as a viewer) was announced. ‘Windlight’, so it was codenamed, came with many improvements to system stability as well as having a completely new rendering engine to include the use of atmospheric shaders, a new sky, new water as well as hundreds of other improvements to improve the quality of Second Life. Until 2010, the download client known as Windlight was the default client available as the main client download from the Second Life website. However, on February 19, 2008, Linden Lab announced the release of yet another client codenamed ‘Dazzle’. This client came with changes to the stability of the client itself as well as an overhauled User Interface, which was given mixed feedback by users who chose to download the client. As well as many fixes to the client, usability is also being improved. While the ‘First Look’ Dazzle client no longer exists, the further developed version of the client formerly known as Dazzle currently exists as a ‘release candidate’ from the Second Life test software page on their website.
Dazzle was finally released as v2 of the official client with many new user interface features in Spring 2010.
Protocol[edit]
In May 2006 it was announced that the Second Life protocol had been reverse-engineered. A wiki was set up to further the effort. [25]
Since this project produced some useful software, Linden Lab modified the TOS to allow third-party programs to access Second Life, [26] enabling the project to be formalized under the name libsecondlife. Among functions developed are a map API, the ability to create objects larger than normally allowed (recently disabled), and other unforeseen capabilities such as CopyBot.
OpenSimulator[edit]
In January 2007 OpenSimulator was founded as an open-source simulator project. The aim of this project is to develop a full open-source server software for third parties who wish to establish separate grids.
OpenSIM is BSD Licensed and it is written in C# and can run Framework or Mono environments. The community is fast growing and there are some existing alternative Second Life grids which are using OpenSimulator.
References[edit]
^ “IBM Takes Second Life Behind Firewalls”. April 2, 2008. Archived from the original on May 13, 2008. Retrieved 2008-06-09.
^ “Inside Second Life’s Data Centers”. InformationWeek. March 5, 2007. Retrieved 2007-03-17.
^ Second Life – Physics Engine
^ Second Life Havok 4 – no lag with 2000-3400 physical prims
^ Second Life Havok 4 – Brownian Motion Lag
^ Havok 4 – Ejection and separation of interpenetrating objects
^ “Key”. Linden Lab. August 25, 2007. Retrieved 2007-10-01.
^ Rosedale, Philip (2007-12-13). “Philip Rosedale Answers Your Second Life Questions”. The New York Times. Retrieved 2007-12-18.
^ Greenemeier, Larry (October 17, 2005). “Open Doors To Innovation”. Retrieved 2006-11-14.
^ Konrad, Rachel (2007-12-12). “Second Life CTO Resigns”. The Boston Globe.
^ “LugRadio Episode 42—I’m an excellent driver”. LugRadio. January 16, 2006. Retrieved 2006-11-24.
^ Linden, Babbage (August 1, 2006). “Second Life in Mono”. Retrieved 2006-11-24.
^ “Version 1. 1”. SL History Wiki. Archived from the original on 2007-09-20. Retrieved 2006-11-24.
^ Windows Vista
^ “Het-Grid articles on the Official Linden Blog”. Retrieved 2007-08-24.
^ “Linden Lab To Open Source Second Life Software”. January 8, 2007. Archived from the original on March 4, 2008. Retrieved 2007-01-08.
^ Phoenix Linden (January 8, 2007). “Embracing the Inevitable”. Retrieved 2007-01-08.
^ Open Source Portal – Second Life Wiki
^ The “Nicholaz Edition” of the Second Life Viewer
^
^ “ShoopedLife:About – ShoopedLife”. Archived from the original on 2009-02-09. Retrieved 2008-06-10.
^ “libopenmetaverse”. Archived from the original on 2016-01-22. Retrieved 2010-03-01.
^ a b Delta’s Online Corner | Second Life Archived 2008-05-14 at
^ “Community: Downloads”. Archived from the original on 2006-11-05. Retrieved 2006-11-18.
^ “SL Protocol Wiki”. libsecondlife. Retrieved 2006-11-24. [dead link]
^ “libsecondlife FAQ”. libsecondlife.
Libsecondlife | Second Life Wiki
libsecondlife is open source attempt at a full reimplementation of the Second Life networking protocol. This means it’s fully independent from the official client, and it can construct and interpret any packet the official client can. In theory it gives developers access to the full power of the official client. Libsecondlife provides a networking (protocol) abstraction layer to Second Life originally using the Boost C++ libraries. Recent development has focused on the C# version, which offers greater Windows compatibility. The goal of the project is to build a robust, multi-threaded method of access to the Second Life world. In other words, create an SL API that can create NPCs and do other things. The library is designed for everything from low level packet construction to high level abstractions of avatars, simulators, and more.
libsecondlife is licenced under a modified BSD license [1]
The developers maintain an IRC channel on EFnet. They can be found in #libsl.
1 Applications Utilizing libsecondlife
1. 1 SLProxy
1. 2 CopyBot
1. 3 SLChat
1. 4 SLIRC
1. 5 Example Applications
2 Websites Utilizing libsecondlife
2. 1
3 Links
Applications Utilizing libsecondlife
SLProxy
SLProxy creates a proxy for Second Life by acting as a login server that relays login information to and from the actual grid login server, and then modifies the port and IP address in the login reply and in any packets that have IPADDR fields. A new port is opened for each sim connection, and all packet sequence numbers are tracked and modified. Zerocoding and packet construction and deconstruction are handled by libsecondlife.
CopyBot
In November 2006 the libsecondlife team released an application called CopyBot internally as a debugging aid, the application copies the avatar of anyone nearby who gives permission to the bot. Unfortunately before it could be stopped, several individuals started selling copies of this application as a general purpose IP theft tool. Linden Bans Copybot Users First official announcement by LL
SLChat
SLChat is an open source text-only SL client being developed in C# by Oz Spade and Baba Yamamoto.
SLIRC
SLIRC is a bridge using libsecondlife to connect SL and IRC. It currently supports ACL-based forwarding.
Example Applications
libsecondlife compiles with a few example implimentations included.
name2key
name2Key logs into Second Life and returns the key of a specified user.
Key2Name
This example retrieves the name of an avatar from an agent key
slacountant
SL Accountant demonstrates a GUI application using libsecondlife. It is able to search for user names and transfer L$ funds between accounts.
TestClient
A simple command line client with easy to modify command structure.
PrimExport
This example dumps prim parameters to several formats including blender and XML.
Teleport
A teleportation example.
Websites Utilizing libsecondlife
uses libsecondlife to integrate in-world bios with users’ blogging and profiles on their site. Second Life on
Links
– Official home page.
BerliOS Project Page and SVN.
Documentation wiki
Frequently Asked Questions about second life protocol
Does Second Life still exist 2020?
In 2020, Linden Lab abandoned their spiritual successor to Second Life, a VR experience called Sansar, in order to focus their attention fully on Second Life. The rights to Sansar’s assets were sold to Wookey Search Technologies, who are expected to continue development on the title without Linden Lab.
What is the Second Life stage?
Second Life is an online world in which users (called residents) create virtual representations of themselves, called avatars, and interact with other avatars, places or objects. … For one thing, they can contribute to the world around them, creating buildings, objects or even animations.Aug 27, 2021
What coding does Second Life use?
Linden Scripting Language (LSL) is the programming language used by players in Second Life. LSL scripts can control the behavior of in-world objects.