Second Life Grid
# Second Life Grid

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.

## Technical information

The flat, Earth-like world of Second Life is simulated on a large array of Debian servers, referred to as the Grid. The world is divided into 256x256 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

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.

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. However, more than 500 constantly interacting collisions have noticeable impact on simulator performance. 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.

### Asset storage

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.

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. 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.

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.

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.

### Software

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. The plan is to move everything to open standards by standardizing the Second Life protocol. Cory Ondrejka, former CTO 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.

* The current in-house virtual machine will soon be replaced with Mono, 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 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. 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.

As of January 8, 2007, the Viewer is distributed under version 2 of the GNU General Public License, 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.

Modified viewer software is available from third parties. The most popular is the Nicholaz Edition; 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, 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.

An independent project, libopenmetaverse, offers a function library for interacting with Second Life servers. libopenmetaverse has been used to create non-graphic third party viewers, including SLEEK, a text browser using .NET, and Ajaxlife, 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.

Animation editors using the Biovision Hierarchy file format such as Poser, and Avimator are compatible with SL.

**Further development**

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

In May 2006 it was announced that the Second Life protocol had been reverse-engineered. A wiki was set up to further the effort.

Since this project produced some useful software, Linden Lab modified the TOS to allow third-party programs to access Second Life, 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

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 .NET Framework or Mono environments. The community is fast growing and there are some existing alternative Second Life grids which are using OpenSimulator.

