SL project news week 46/2: Code freezes, avatar baking, interest list wierdness and more

Server Deployments

Wednesday November 14th saw the same code deployed to all three RC regions in preparation for the US Thanksgiving week code freeze (see below). This primarily brought all three RCs to the same code level, release-wise and fixed a bug discovered in week 45.

There will be no rolling restarts in week 47 (week commencing Monday 19th November) due to the code freeze.

SL Viewer Update

The beta viewer rolled to the last of the 3.4.2 releases on Thursday November 15th, with the release of 3.4.2266995. Providing the crash statistics remain good (they were very positive for the first 24 hours), it will be going to the production (release) viewer QA in week 47 and should result in the release of a new version of the viewer shortly after the Thanksgiving weekend.

This beta contains a lot of updates and improvements, as well as a wide range of fixes for issues encountered with earlier releases up to and including the previous beta release,, issued on November 8th. For a comprehensive list of changes, please refer to the release notes.

At the same time, the development viewer rolled to, marking a further update of the development viewer to the 3.4.3 code, which should be appearing in the next release of the beta viewer. This include the new viewer-side code for the HTTP texture fetch project developed by Monty Linden as a part of the Shining Project improvements.

The code for faster texture fetching / rezzing has moved from a project viewer into the viewer-development stream and is present in the 3.4.3267061 Ddevelopment viewer release and should appear in the beta viewer after the US Thanksgiving weekend

As the holiday period is approaching, viewer releases will be slowing down, but the aim remains to try to clear the backlog of waiting merges and updates by the New Year with a view to resuming their more usual cycle of releasing a development / beta update around every three weeks. Once things are back on track, LL will be looking more closely once again at the question of disabling tcmalloc completely within the viewer.

Code Change Freezes

The official dates for code change freezes during the upcoming holiday periods currently stand at:

  • Week 47 – Monday 19th November through to Sunday 25th November
  • Week 51 – Monday 17th December through Sunday 23rd December
  • Week 52 – Monday 24th December through Sunday 30th December.

No status has yet been given for the New Year week (Monday 31st December through Sunday 6th January 2013.

Avatar Baking

Bake fail: work on new service progressing

On Friday 16th November, Nyx Linden provided a brief update on the Avatar Baking project, which again forms a part of the Shining project improvements to Second Life. In short:

  • The viewer code is starting to look stable. However, merging the new code into the existing viewer code is liable to be somewhat more “painful” (Nyx’s term) than had been hoped
  • Work is progressing on the server-side elements (the composite baking server), with the code reaching a point where avatar texture can be generated server-side
  • Currently, the plan is to continue working on both sides of the equation, with the aim of ensuring the new code is successfully merged into the viewer development branch, and then offering it in a “very alpha” form to TPVs so that they can start merging it into their code and assist with testing. As this happens, one or two regions on the beta (Aditi) grid will be set-up to allow testing on the new service.

There is still no time frame for the appearance of the viewer code in the development branch or any test regions on Aditi, but in Nyx’s view, both are liable to be on the horizon “pretty soon”. Overall, the plan still remains to have at least a two month period from when the code is made available for testing purposes through to the official implementation of the new service.

Interest List Demonstration and Weirdness

The focus of this project is to optimise the data being sent to the viewer, information already cached on the viewer and the manner in which that data is used in order to ensure it is used more efficiently so that things rez both faster and in a more orderly manner than is currently the case.

This work is being undertaken by Andrew Linden in a number of stages, the first being to clean-up the code related to information sent to the viewer from the simulator relating to objects in the camera’s viewing range such that only objects actually in the camera frame are updated (if updates are required) and that objects outside of the current camera frame are not updated, thus reducing the amount of data both the server and the viewer need to process, which should lead to performance improvements.

It is possible to visualise the update process using a viewer debug setting (Develop > Show Info > Show Updates to objects or Ctrl+Alt+Shift+U) to show object updates being received by the viewer. This shows updates in three colours: red, which indicates the viewer is receiving a “full” update on the object (generally because it is being “seen” / is within draw distance) for the first time; blue, which indicates the viewer already has data on the object and is receiving “terse” updates relating to changes in the object’s appearance / position relative to the viewer’s camera position; and green, which indicates the object has been deleted / remove from the camera view, and updates are about to cease.

On the 15th November, Andrew used this debug setting, together with a set of scripted “bouncing” cubes to demonstrate his improvements to this update process. Observers were asked to focus their camera on the cubes, which were initially static and had no coloured data stream associated with them.  The cubes were then set bouncing, which generated a stream of blue “terse” updates, indicating the motion of the cubes in the viewer was being updated. However, when observers angled their camera to view the space above the cubes (so the cubes were not directly in their world view), the update stream ceased – indicating the viewer was no longer receiving update data for the cubes.

This may seem a small change, but it does dramatically decrease the amount of information the viewer has to process relating to in-world objects, and should result in performance improvements within the viewer. In the future, further work will be undertaken to enhance the interest list code even further – such as prioritising the order in which objects in the world view are actually rezzed, so that items closest to the camera view are rezzed first, etc.

HUD Issues

Following the demonstration, however, some people started noticing an odd issue: they could right-click on the centre of their screen and reveal a prim attachment belonging to someone else’s HUD. Chieron Tenk was the first to raise the issue, although Ana Stubbs also quickly reported the same problem.

Chieron Tenk posted an image of the problem: a prim appears in the centre of his viewer which, on inspection, appears to be linked to a HUD worn by Rex Cronin

After initial confusion, investigation revealed it was possible for anyone to find they had random prims from other people’s HUDs appearing on their screen, simply by attaching a HUD or a prim to their own screen. Concerns were further raised when it appeared that events might be able to be triggered if the prim was touchable.

I find I have a prim belonging to Ana Stubb’s Mystitool appearing on my screen

The issue appears to be tied to changes made to the interest list code on the test region, and is obviously going to be the subject of further investigation on the Lab’s part prior to the interest list project being carried forward.

Related Links

Firestorm 4.3.0: Cry “Havok!” and let slip the goodies of update

Firestorm 4.3.0 has arrived slightly earlier than expected, in the form of an initial beta release made as a result of the implementation of new Group Services code across the main grid.

While this is only a beta, and the associated Firestorm blog post gives fair notice that it may yet be somewhat wobbly while final work on getting it QA’d and ready for a formal release is ongoing, there is more than enough in the release to make it something people are liable to be hungry for. So here’s a preliminary review of the release as it stands today, with the caveat that things may change between now and the full release, which is currently scheduled for December.

Download and Installation

The download .EXE is big – 40MB, which is unsurprising given that Firestorm packs so much into it. I’ve been running pre-releases of this version for a while now, and the size has been consistent between them and while much bigger than other TPVs and the official viewer, it hasn’t grown overly much since the last release.

The installer is actually the place where the updates to the viewer begin for Windows users, as it now incorporates:

  • A pop-up requesting whether or not the user wishes to have a Windows Start menu entry created for Firestorm during installation
  • Addition of the version string and estimated installed size to the installer
  • Addition of new OS detection code to warn if Windows Service Packs are not up-to-date and to prevent Firestorm being installed on Windows XP with
  • Publisher data, Phoenix URLs and Firestorm icon for the Firestorm entry in the Windows uninstall list
  • Automatic deletion of all previously installed skins to reduce issues arising from an unclean install
  • Addition of a DETAILS button in the installer pop-up window to allow the installation to be reviewed.

Lab Updates

Version 4.3.0 of Firestorm sees the viewer merged-up the official Linden 3.4.1 code base and the inclusion of later updates which are just filtering through to the official viewer 3.4.2 code pipe. Together these mean that this release incorporates and number of LL updates, including:

  • Recent updates and improvements to the viewer-side pathfinding code
  • Memory leak and memory crash fixes
  • Translation updates (together with further updates from members of the Firestorm team)
  • Incorporation of the official LL spelling checker (contributed to LL by Kitty Barnett to LL) and the official Auto-replace function (contributed to LL by Kitty Barnett, Jonathan Yapp, Tankmaster Finesmith and LordGregGreg Back)
  • Rendering fixes and optimisations
  • Group Services (group management) update (from the LL 3.4.2 code branch) allowing groups with more than 10K members to be edited and updated
  • Objects by multiple creators show creator details when viewed in inventory (Properties), rather than “unknown”

This release also incorporates the new LL maturity rating function which:

  • Notifies a user when trying to enter a region without having set the required maturity level in the viewer and presents the option to change their maturity setting (subject to age verification)
  • If applicable, sends a message to the person offering a teleport that the recipient is unable to access the region due to their maturity level.

Havok Sub-licence

Firestorm 4.3.0 sees the implementation of the Havok sub-licence agreement between the Firestorm team and Linden Lab. This means that this is the first version of Firestorm to be released without any support for OpenSim access. Both –loginURI capabilities and the Grid Manager functionality have been removed.

However, as Jessica Lyon has previously noted, development of the viewer will be forking, and OpenSim support will continue in the future via a version of Firestorm which excludes the code required to access the LL Havok libraries. How tailored the OpenSim version will be for use on those grids is not clear, and those who use Firestorm to access both SL and OpenSim grids should read Jessica’s comments on support in the future.

The Havok sub-licence agreement does mean that this release of Firestorm can access the new LL-supplied Havok libraries which in the first instance, enable TPV viewers to visualise and model the pathfinding navmesh.

The pathfinding navmesh can now be visualised in Firestorm 4.3.0

Group Services

The Group Services update was the main reason for pushing out a beta release of Firestorm  4.3.0.

This code allows for improved loading of membership lists of very large groups, together with improved reliability in editing such groups (i.e. assigning roles, removing people, etc.), by the group moderators. The server-side element of this code has been available on the RC channels for the last couple of weeks, and was deployed to the main release channel on Tuesday November 13th, making it available right across the main grid.

However, in order to be used, it requires additional viewer-side code. Without this additional code, the viewer will be unable to display membership lists for groups with more than 10K members (although any groups with fewer than 10K of members can still be edited using any viewer). Thus, the decision was taken by the Firestorm team to release 4.3.0 in a beta version so that users responsible for managing groups with very large members lists can continue to edit them.

Group Services update – the difference: On the left, an attempt to load a group with almost 20K of members in the current release of Firestorm 4.2.2. On the right, the same group loaded using the new Firestorm 4.3.0 beta.

In making this release, Firestorm joins Cool VL and Niran’s Viewer in being able to handle large groups alongside the official SL beta viewer. However, the remaining TPVs are likely to have updates to support the capability out in the near future (and the code will soon be available in the SL release viewer as well).

Please use the page numbers below to continue reading this review
top of page