0.8 Release

=Release Notes=

General
Welcome to OpenSimulator 0.8, an open-source multi-user 3D virtual environment and metaverse server platform.

As ever, OpenSimulator is a highly complex system. Various usage scenarios (standalone, grid, hypergrid, etc.) in combination with different dependencies (e.g. different versions of mono on Linux/Mac) can sometimes produce unexpected or unstable behaviour.

If you are upgrading from a previous verson of OpenSimulator, then we strongly recommend that you start off with the default configuration files and port over any changes you made to your older version of OpenSimulator.

As this is a wiki page, please feel free to update it with more information about migration or other issues as and when these come to light.

You can download this release of OpenSimulator from http://opensimulator.org/wiki/Download

Known issues

 * Arbitrary key:value storage for regions has not yet been implemented for SQLite or MSSQL. This is necessary for temporary attachments settings to be persisted.  This functionality is considered experimental.
 * Regression in RLV functionality where objects given via the llGiveInventoryFolder function with a folder name with the format #RLV/~gift are still placed in the #RLV folder but now with the name still as "#RLV/~gift" rather than just "~gift". This is being addressed in http://opensimulator.org/mantis/view.php?id=6311.  Any help from viewer developers on this would be much appreciated.
 * No form of prim equivalence is implemented for meshes.
 * Loading scripts from the library section of inventory does not work properly.
 * The non-default Warp3D maptile generator currently leaks memory very badly. We recommend that you only use this once at the beginning of each simulator session.

Requirements
OpenSimulator requires:


 * .NET Framework 4 when running under Windows.
 * At least Mono 2.8 when running under Mono (Linux or Mac). However, we recommend using at least Mono 2.10 as Mono 2.8.x has been reported as less stable in some situations when running OpenSimulator.  Mono 3 has also been reported as working well with OpenSimulator.

Backwards Compatibility Notices

 * This release includes database migrations but these should be backward compatible with OpenSimulator 0.7.6/0.7.6.1 (i.e. one could rollback to the previous version of OpenSimulator if necessary without also rolling back the database). However, this is not a guarantee - please always backup your data before migrating from earlier OpenSimulator versions.

General Server
OpenSimulator now requires .NET 4. For more details please see above.

Physics
As of this release, the default physics engine plugin becomes BulletSim rather than OpenDynamicsEngine. The BulletSim plugin is significantly better than the OpenDynamicsEngine one, both in terms of performance and in turns of support for physical objects and vehicles.

However, physics engines are very complex beasts and the behaviour between BulletSim and OpenDynamicsEngine will be somewhat different. If you want to use OpenDynamicsEngine instead, then please make sure this is selected in the physics paramter of the [Startup] section of your OpenSim.ini.

Please note that the OpenDynamicEngines plugin will not support varregions (see below) in this release.

Hypergrid
In this release, Hypergrid teleports can now be made over 16383 regions in X or Y directions rather than the previous maximum of 4095. All the most recent third-party viewer releases (Kokua, Firestorm, Singularity) will accomodate this. However, older releases of those viewers will crash if such a teleport is attempted. If you still want to retrict teleport distance from your OpenSimulator installation, then please set max_distance in the [EntityTransfer] section of OpenSim.ini.

General Server

 * Unofficial support for PostgreSQL added to the persistence layer.
 * Added experimental optional HTTP Authentication support to services. This is off by default, as before.

General Simulator

 * OpenSimulator now supports Varregions. This is the ability to create square regions that are larger in size than the standard 256x256 (e.g. 512x512).  These are an alternative to megaregions but require a fairly recent third-party viewer to use - other viewers may crash or experience unknown effects when teleporting to these regions.  Currently, on the BulletSim physics plugin supports varregions.  OARs have support for varregions.  Please see the linked wiki page for more details and setup instructions.

Configuration

 * Config files found with the the -inidirectory OpenSimulator startup option will now consistently supersede the settings in other config files.

Services

 * Added asset exists service call to allow Hypergrid code to determine whether an asset needs to be sent. Aims to improve Hypergrid efficiency.

Hypergrid

 * Hypergrid users are now allowed into regions where a group they belong to has permission to enter.
 * Much reduced issues where avatars are reported as "Unknown User" when travelling.
 * Material assets are now sent when objects are moved over the Hypergrid.
 * Assets marked local are no longer erroneously sent to a destination OpenSimulator installation.
 * Error checking improved when creating Hypergid links to reject invalid strings and use the proper default port of 80.
 * Setting of the avatar name improved when a user moves from a foreign grid back to their home grid.

Objects

 * Scene objects which have their temporary flag unset and then reset are now persisted.
 * Linking two persisted scene linksets then deleting the new linkset will now properly delete all the objects.
 * Support added for particle ribbon, glow and blend.
 * "rotate scene" console command added to rotate the position of all the objects in the scene around a given point. Does not rotate trees or terrain.
 * "scale scene" console command added to rescale the size of all the objects in the scene.
 * "translate scene" console command added to move all the objects in the scene.
 * The name and description of a coalesced object set in inventory is now applied only to the first object rezzed rather than all of them.
 * The permissions of a coalesced object set in inventory are now the lowest common denominator of all the contained objects.
 * Changing a material on one face of a prim now only changes that face rather than the default material.
 * Keyframe motion no longer stops on a scene object if a user takes a copy into inventory.
 * Keyframe motion fixed in megaregions.
 * Keyframe movement will now work with speeds lower than 0.05 m/s.
 * Changing ownership of an object in god mode will now change the permissions of contained items as well as the object itself.
 * If an object fails to cross regions it is no longer deleted from the source region.

Mesh/Sculpt

 * Sculpt/mesh assets in attachments are no longer wrongly persisted when a user teleports. This significantly improves the efficiency and speed of such teleports.

Avatars

 * Attachment point and positioning is preserved when an object preivously attached is rezzed into the scene.
 * Fixed positioning of an attachment when the root prim is moved separately from the others.
 * Mouselook now moves to the right location when sitting on the child prim of a linkset.
 * The viewer camera no longer judders if an avatar sits on the child prim of a linkset and that linkset moves.
 * Avatar positioning on sit targets should now be identical to that seen on the LL grid.
 * If a sitting avatar is moved by less than 5 cm, updates are now still sent out to other viewers.
 * Avatar stand positions are now directly in front of the avatar's sit position.
 * If the avatar is held in place in the viewer (typically by holding down the space bar) then a stopped avatar will not fly or change position until it is released (they can still rotate). If the avatar is already moving then their movement will be reduced to half speed.  If the avatar is flying then they will stop in place.
 * The mouselook camera no longer shifts position when the avatar looks up or down.
 * Sitting avatars can now cross between regions.
 * Added missing viewer appearance parameters.
 * Added XBakes system for temporarily saving baked textures so that viewers are not always asked to regenerate and reupload. This is not the same as server-side baking since baking is still performed by the viewer.  Should be considered experimental.

Teleport

 * Users can now enter a region if a telehub is present but has no spawnpoints.
 * Prevent entry to a region if the telehub or landing points are in parcels from which the user is banned.
 * Improved error messages on teleport failure.

Physics

 * Maximum default physical prim size increased from 10 meters to 64 meters.
 * The efficiency of the BulletSim plugin was increased.
 * In the BulletSim plugin, avatar physics shape is now a rectangle rather than a capsule. This should improve avatar movement and allow height to be better calculated.
 * Fixed general collision issues after an object's phantom flag is unset.

Sound

 * No significant changes in this release.

Voice

 * No significant changes in this release.

Region/Estates/Parcels

 * Added console command “estate set owner” to change an estate's owner.
 * Added console command “estate set name” to change an estate's name.
 * Added console command "estate create" to create a new estate.
 * Added console command "estate link region" to link a region with an estate.
 * Force owner, abandon, request and reclaim updates to a parcel are now persisted.
 * The “Allow Scripts from Group” parcel flag no longer requires the parcel to be deeded to a group, only that it has a group set
 * A user that belongs to a parcel’s group can no longer still rez objects after the “Create Objects by Group” flag is unset
 * Traffic statistics are now persisted if changed by a region module.
 * Added feature to limit the maximum number of prims that a user can have on each parcel of a region. This is enforced by setting MaxPrimsPerUser in the region config file (e.g. Regions.ini).  Default is no limit.
 * An object rezzed by a user can no longer be duplicated on that same parcel after the parcel permissions have been changed to disallow rezzing.
 * Objects on a parcel can now be included in the sale of that parcel as long as a) all those objects are owned by the parcel owner b) none of the objects are group owned c) all objects are transferable.
 * Fixed an issue where the “Show in Search” flag on a parcel sometimes reset spontaneously.
 * Fixed issue where changing the maturity in the viewer preferences would not work.

Map

 * "generate map" console command added for manual generation of a maptile.
 * Eliminated memory leaks when the default maptile generator is used. Unfortunately, the Warp3D one still leaks very badly (see above).
 * Static maptiles can now be loaded from a file.
 * Facility added to allow maptile deletion.

Instant Messaging

 * The sender of an offline IM is now stored.
 * Prevented the Byte Order Mark from being prepended to stored IMs which could cause problems for other systems reading this data later on.
 * Fixed a stack overflow in rare cases when sending an IM.

Friends/Profiles

 * Fixed an issue where users sometimes didn't get notified of friends online status when logging in.
 * Fixed editing notes for profiles.
 * Fixed issue were some profile settings were not being persisted.
 * Fixed issue with creating user picks where a snapshot had not been set in a parcel.

Archiving

 * --displacement option added to the "load oar" console command. This is useful when loading smaller OARs into a varregion.
 * --force-terrain and --force-parcel options added to the “load oar” command. These override the normal --merge behaviour of not loading terrain or parcel to facilitate loading of smaller OARs into varregions.
 * --rotation and --rotationcenter options added to the “load oar” command. These apply a rotation around a given center before any specified displacement.
 * --no-objects option added to the "load oar" command to allow loading of all parts of a region except its objects.
 * Material assets are now saved into OARs when necessary.
 * Objects in restored OARs that are owned by groups not present on the grid now have their group ownership cleared.
 * Autobackup module fixed and option added to save OARs without assets.

NPC

 * NPCs now correctly display multiple attachments on a single attach point.

Inventory

 * No significant changes in this release.

Groups

 * Hidden groups no longer show in searches.

Monitoring

 * HTTP logging improved.
 * Threadpool logging improved.

Test

 * A set of pCampbots generated in quick succession will now no longer perform identical 'random' actions.

Scripting

 * Fixed an issue where sometimes scripts in attachments would not restart following a teleport.
 * Timer and HTTP events are no longer wrong discarded when a script changes state.
 * Many LSL events will now generate syntax errors at compile time if given the wrong number of parameters.  This has not yet been applied to all events.
 * Errors in Windlight funtions fixed that could occur if the script's owner was not present in the region.
 * Implemented llGetMassMKS.
 * llUnsit can now unsit any avatar that is currently sat on a linkset, not just the avatars sat on the prim actually containing the script.
 * Moving avatars in llSetLinkPrimitiveParams using PRIM_ROTATION, PRIM_ROT_LOCAL, PRIM_POSITION and PRIM_POS_LOCAL is now supported.
 * llBreakAllLinks will now only work if PERMISSION_CHANGE_LINKS has been granted.
 * llParticleSystem and llLinkParticleSystem will now generate maximum size particles if a particle size greater than maximum is given rather than no particles.
 * Added ATTACH_AVATAR_CENTER and ATTACH_NECK LSL constants.
 * Added osGetRegionSize OSSL function that will return the current region size.
 * osForceCreateLink, osForceBreakLink and osForceBreakAllLinks OSSL functions implemented. These are identical to llCreateLink, llBreakLink and llBreakAllLinks except that they don't require granted permissions.
 * Scripts in attachments are now implicitly granted the PERMISSION_TRACK_CAMERA permission.

Acknowledgements
Many, many thanks to all the developers, testers and community members who contributed to this release and who help out with OpenSimulator generally. Your hard work makes this all possible.