0.7.4 Release
From OpenSimulator
Release Notes
General
Please note that these are draft release notes for OpenSimulator 0.7.4-rc2, the second release candidate for the forthcoming 0.7.4
Welcome to OpenSimulator 0.7.4, an open-source multi-user 3D virtual environment server platform.
As ever, OpenSimulator is a highly complex piece of alpha software. It's very likely but not guaranteed to work and various usage scenarios (standalone, grid, hypergrid, etc.) in combination with different dependencies (e.g. different versions of mono on Linux/Mac) can produce unexpected or unstable behaviour. If it breaks you get to keep both pieces.
If you are upgrading from a version prior to 0.7.x, make sure to read the 0.7 Release notes. There have been extensive changes in OpenSimulator from 0.6.x to 0.7.
When you are upgrading, 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
- Sometimes creating body parts or clothing fails with no error message. This is not consistent - work around is simply to try again.
- In a stock Linden Lab viewer 2/3, various tabs and buttons will point back to the Linden Lab website. In particular, the profile data will try to fetch from the Linden Lab website. It's not known currently how/whether this can be changed in the stock viewer.
- No form of prim equivalence is implemented for meshes.
- Loading scripts from the simulator library does not work properly.
- Multiple attachments on a single attachment point not supported.
Requirements
OpenSimulator requires:
- .NET Framework 3.5 when running under Windows.
- At least Mono 2.4.3 when running under Mono (Linux or Mac). Mono 2.6.x and Mono 2.10.x onwards work well. Mono 2.8.x versions are reported as less stable in some situations.
Backwards Compatibility Notices
- Due to a libomv bug fix, teleports in this release are incompatible with OpenSimulator 0.7.0.2 and earlier. This affects primarily Hypergrid teleports, since simulators within the same grid tend to be all in the same version. Teleports to OpenSimulator 0.7.1 and later should work.
Changes
General Simulator
- Help system reorganized so that typing "help" shows a list of different command categories (Regions, Scripts, Users, etc.) rather than all commands. Typing "help <category>" then shows all the commands in that category.
- Startup, shutdown and ad-hoc region console command scripts can now contain comments that start with semicolon (;), hash (#) or double slash (//).
- The time interval of running a periodic region console command script can now be set via the timer_Interval setting in the [Startup] section of OpenSim.ini.
- Viewers are now always sent US Daylight Savings Time by default on login, since this is what they are expecting. If you want the old behaviour where the timezone was based on the simulator's system time zone, then please set DSTZone = local in the [LoginService] config section.
Configurations
- In grid mode, new users created via the "create user" console command now get the minimum set of body parts and clothing to stop being a gas cloud on first rez. This matches existing behaviour in standalone mode.
- Bug fixed that was preventing the avatar service from being used in a different ROBUST instance from other services.
- Bugs fixed where fetching inventory and active gestures would fail on login if the inventory service was housed in a different ROBUST instance from the login service.
Services
- The "debug http" console command is now available for ROBUST services as well as the region console. Though a bit cryptic, this setting allows you to see information about the incoming HTTP requests made to a server.
- "show region at" console command added to get the details of a region at a particular map location.
- "show regions" command added to show all the regions registered.
Hypergrid
- Added ability to establish friendships over the Hypergrid without requiring both users to originate from the same OpenSimulator installation.
- osGetGridGatekeeperURI() OSSL function added to return the Hypergrid gatekeeper of the current grid (if there is one). This is the first component of any Hypergrid address, for example the hg.osgrid.org:80 part of hg.osgrid.org:80:<region-name>
- llRequestSimulatorData() will now return the final destination region co-ordinates when used for a Hypergrid location. This allows one to check that the final destination region is not more than the allowed number of map tiles away for a successful teleport (currently 4095 map tiles or less).
Objects
- Updating an objects position will now only correctly send out one update, rather than an update for each prim in the linkset.
- Bug fixed where moving a physical object along an axis without any other movement would see it snap back to its original positio nwhen deslected.
- Linking a non-physical prim with a physical prim as root will now make the whole object physical rather than making the non-physical prim phantom.
- Wrong link ordering fixed when objects were linked/delinked or duplicated on a region with a low quality network link between the viewer and the simulator.
- Issue fixed where sounds would sometimes stop playing if something attempted to play a sound not known to the grid.
- Issue fixed where a slice of a tapered box would wrongly go partly phantom.
- Textures on prims no longer rotate slightly when unrelated properties are changed.
- Bug fixed where sounds would wrongly attenuate with increasing numbers of avatars.
Mesh
- No significant updates in this release.
Avatars
- Teleport reliability improved.
- If a teleport is already in progress, any subsequent requests will be ignored until the first teleport is completed. This is not a problem with manual teleports but does resolve an issue seen when scripts execute many teleports in very quick succession.
- Avatars now correctly stand if a sitting avatar teleports to a position on the same simulator.
- Added a --force flag to the "kick user" region console command that bypasses all close checks (such as whether the avatar is in the middle of a teleport). This is sometimes needed to kick avatars that were closed before login was completed.
- "teleport user" region console command added to allow users to be teleported from the console.
- Viewers being removed from a simulator due to ack timeout no longer freeze all other avatars for a short period.
- Avatar jumping height adjusted from 5 meters to 3 meters to better match what people see elsewhere.
- When a short avatar offers a teleport to a tall avatar (luring), the tall avatar is no longer teleported to a position where it can drop through a thin floor.
- Custom walking animations not stop properly when the avatar stops walking. This was a regressio nin OpenSimulator 0.7.3 and 0.7.3.1.
- Objects attached via llAttachToAvatar() or osForceAttachToAvatar() now no longer wrongly replace permissions with the next owner permissions.
- Bug fixed where sounds would not play from attachments at the neck or avatar center positions.
- Bug fixed where HUD updates could occasionally be sent to the wrong avatars when the HUD was attached directly from the scene. This resulted in HUD display artifacts on the screen.
- Bug fixed where HUD updates could occasionally be sent to other avatars when the HUD position was changed.
- Bug fixed where HUDs attached directly from the scene would not disappear as scene objects for other avatars.
- Attachments that are rotated but not otherwise moved now retain their position when the viewer relogs.
- Avatars can now sit on a prim even when another avatar is already occupying its explicit set target. In this case, the new avatar sits in the position normally given if no sit target it set.
- Agent pausing better handled when the viewer is displaying modal dialogs such as "upload image", rather than closing the client connection after a certain period of time.
- Added an experimental "ResendAppearanceUpdates" parameter to the [Appearance] config section. If set to true, this will resend appearance UUIDs to other avatars on the same simulator every 60 seconds. This is a minimal amount of data, but has been found to fix grey avatars since some viewers ignore the first appearance update packets for unknown reasons. This will not fix other appearance problems such as complete failure to upload textures (where an avatar appears permanently as a cloud).
- The "show queues" console command will now report the number of milliseconds since a packet was last received by each connection. This can be helpful in debugging connection issues.
Physics
- The top colliders report now shows the genuine top 25 colliders rather than the first 25 objects processed that had a non-zero collisio nscore. On getting an initial report, a refresh is needed to get a realistic idea of collision numbers since they are accumulated between reports.
- Owner display in the top colliders report was fixed.
- Extra optional stats added for Open Dynamics Engine (ODE) physics plugin debugging. These are enabled by setting collect_stats = true in [ODEPhysicsSettings]. Data is made available via the monitoring module.
Sound
- Fixed sound attentuation issues when many avatars or NPCs are present.
Parcels/Region/Estates
- Windlight environment settings implemented.
- Group based access restrictions implemented for land parcels.
- Configurable spawn point routing implmented for telehubs.
- Option added to allow landmarks to override teleport routing.
- Region agent limit now checks only against actual avatars in a region instead of avatars and child agents.
- Bug fixed where terrain loading could occasionally cause IOExceptions on Windows.
- Scene statistics (e.g. physics time, agent time) is now genuinely per frame rather than wrongly being the amount of time these functions took over a second. This makes
these statistics better tally with the frames per second numbers.
- In scene statistics, frame time now covers time spent working + spare time, rather than just work time. This makes it easier to see when frame time exceeds the target time.
- A default estate can now be nominated in the [Estates] config section of OpenSim.ini for all new regions, rather than always configuration regions on the console command line.
- Estate information save performance improved on simulators with lots of regions.
- "show object name", "show part name" and "delete object name" region console commands extended with a --regex switch to allow use with regular expressions.
- The "set terrain heights" region console command can now set the min and max heights for all 4 corners of a region simultaneously.
- Console commands added to allow existing region terrain to be constrained to a minimum or maximum height.
- The "fix-phantoms" command is now available when a megaregion is freshly disabled so that correct phantom status can be set for the objects in the region.
- "deregister region" ROBUST console command added. This can be helpful for manually dereigstering a region where the simulator did not properly shutdown and its region configuration has since changed.
- Viewers can be prevented from entering specific regions depending on the viewer string they supply.
Map
- Only regions registered for a given map-coordinate can now upload images for that co-ordinate.
- Possible memory leaks reduced (and hopefully eliminated) for Warp3D map tiles.
Instant Messaging
- Instant messages are now sent asynchronously rather than synchronously. This prevents long running operations that piggyback on the IM infrastructure (such as giving an inventory folder to another avatar that contains lots of items) from freezing the simulator.
Friends
- Online/offline status fixed.
Archiving
- The objects added to an OAR when saving can now be restricted by object permissions via the --perm option.
- Fixed regression where parcel owners were no longer being saved in OARs (and hence not restored). This was working in OpenSimulator 0.7.2 but was accidentally removed in 0.7.3. If you need the old behaviour where all parcels would default to the estate owner even if the user information was found, then please use the --publish flag when saving the OAR as detailed below.
- Added --publish flag to "save oar" region console command. This strips saved objects and parcels of owner information (though not creator information), so that if they are uploaded to the grid from which they originate, ownership defaults to the region's estate owner.
- OARs now save and restore telehubs.
- Saving OARs (OpenSim Archives) now fetches required assets serially rather than concurrently and asynchronously. This appears to improve the reliability of OAR saving.
- Bug fixed where link numbers in a linkset would sometimes change order when the OAR was loaded.
- IOExceptions reduced on Windows when loading OARs or IARs (Inventory Archives).
NPC
- NPCs can now play animations that are shipped with the viewer.
- llRequestPermissions() now succeeds for an NPC if the script is owned by the NPC or the script owner is also the owner of the NPC.
- osNpcSay() extended to allow a channel to be specified.
- osNpcShout() and osNpcWhisper() implemented.
- osNpcTouch() added to allow NPCs to touch objects.
- NPCs can now take damage via objects configured with llSetDamage().
- OS_NPC constant added to supersede NPC constant, which is vulnerable to redefinition elsewhere. This is used in the llAgentSensor() method to set up sensors to detect NPCs. The NPC constant will still work but is deprecated.
- llGetAgentType() will now return OS_NPC if it is given an NPC UUID. It will also return AGENT if the NPC was created with the OS_NPC_SENSE_AS_AGENT flag.
Inventory
- FetchInventoryDescendents2 and FetchInventory2 capabilities fixed and turned on by default. These allow modern version 3 viewers to properly use HTTP inventory, fixing various inventory and outfit issues.
- Calling card support added.
- Outfit folders are now properly created when a new outfit is saved where there are already previous outfits.
- Outfit folders can now be renamed.
- The current description field is now correctly copied when users give each other inventory. Previously, the original description when the item was first created was wrongly used.
Groups
- No significant updates in this release.
Monitoring
- No significant updates in this release.
Scripting
- XEngine logging is now at INFO by default rather than DEBUG. This stops the log being spammed with script load notices. If you need to see these, please adjust OpenSim.exe.config.
- modInvoke() mechanism added to allow region modules to add new script functions without having to patch and rebuild OpenSimulator itself.
- Added the ability to create a structured JSON data store via script. This can be used by both region modules and scripts on the same simulator to share data without sending channel messages.
- Script startup time improved in situations where there are many scripts.
- There is no longer a 15 seconds pause when a script is first rezzed on a previously script-free region.
- Scripts which begin with a comment are now much less likely to trigger an annoying false "Selected engine unavailable" message. Though false positives can't be prevented completely, they will now only happen if the first comment line ends with a colon (:) where the intention was not to select a specific script engine.
- The top scripts report in the viewer will now return a more sensible script execution time based on an idealized fame time rather than a lines per second count. This is 'idealized' because OpenSimulator does not work by executing scripts within the main scene loop.
- Owner display in the top scripts report was fixed.
- "xengine status" region console command extended to show sensor, dataserver requests, timer and listener counts.
- Scripts that have been stopped now stay stopped if the containing object is taken into user inventory and re-rezzed.
- Scripts now correctly preserve their running status if an object is duplicated.
- llResetScript() now releases URLs obtained via llRequestUrl().
- llRequestUrl() no longer occasionally triggers an exception if the URL was being simultaneously released by llReleaseUrl().
- max_external_urls_per_simulator setting implemented in the [LL-Functions] config section to control how many URLs can be set up by llRequestURL() before some need to be released. The current default is 100.
- Reliability of event delivery to scripts improved.
- Scripts in child prims now receive events based on the position of that object's root prim rather than the child prim itself. This allows scripts to run in child prims that are outside of the region's boundaries.
- Sensors in child prims now correctly rotate when the root prim rotates.
- The changed() event is now fired with CHANGE_OWNER when an object that has changed owners is rezzed.
- Various e-mail function issues fixed. Largest default e-mail body size is now 4096 bytes (this can be configured in the [SMTP] config section. An e_mail_pause_time setting has been added if one wants a delay before an e-mail is sent.
- A script can no longer attach a prim if it being sat upon.
- llCastRay() implemented.
- llGetAgentList() implemented.
- llGenerateKey() implemented.
- llSetRegionPos() implemented.
- llCollisionFilter() now works for individual prims instead of just the whole object or nothing.
- llCreateLink() corrected to link alternate prims from each object being linked rather than all the prims in object 1 followed by all those in object 2.
- llInventoryDrop() fixed.
- llRegionSayTo() fixed for sending to the public channel and sneding to a target avatar and sending
- llGetMass() fixed to return the total mass of the linkset if executed by a script in the root prim.
- llGetMass() fixed to return the avatar's mass if the linkset is acting as an attachment.
- llGetObjectMass() no longer throws an exception if called for a seated avatar.
- llGetSimulatorHostname() fixed to return the hostname configured by the ExternalHostNameForLSL setting rather than the simulator's machine name.
- llGetLinkPrimParams() fixed for PRIM_POS_LOCAL constant.
- llGetLocalPos() fixed.
- PRIM_POS_LOCAL implemented in llSetPrimitiveParams() and other functions where this is identical to using the PRIM_POSITION constant.
- Bug fixed where using PRIM_BUMP_SHINY in llSetLinkPrimitiveParams() would generate an error.
- OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_TOTAL_SCRIPT_COUNT and OBJECT_SCRIPT_TIME implemented for llGetObjectDetails().
- OBJECT_ROT now returns world rotation when used in llGetObjectDetails().
- Added ATTACH_RIGHT_PEC and ATTACH_LEFT_PEC constants.
- Responses to an llDialog() can now be heard by the script from an avatar anywhere in the region, not just when it was within shout range of that avatar.
- Various problems with llSetDamage() fixed. Object with this setting are now deleted when they hit an avatar, gods no longer receive damage, volum detect does not cause damage, damage is gradually healed, health is reset when an avatar goes to a non-damage area.
- Regression fixed with llGiveInventory() where it had stopped asking the receiving avatar for an accept or decline decision.
- osReplaceString() OSSL function added to do regular expression replacement on strings.
- osGetInventoryDesc() OSSL function added to return the description of an item.
- osInviteToGroup() and osEjectFromGroup() OSSL functions added.
- osSetTerrainTexture() and osSetTerrainHeight OSSL script functions added.
- osSetRegionWaterHeight(), osSetRegionSunSettings() and osSetEstateSunSettings() can now be controlled via the normal OSSL permission mechanisms, rather than requiring one to be a god.
- osAvatarStopAnimation() will now stop an animation if given a UUID as well as a name. This matches llStopAnimation()
- osForceAttachToAvatar() and osForceDetachFromAvatar() OSSL functions added. These behave identically to llAttachToAvatar() and llDetachFromAvatar() but do not ask for PERMISSION_ATTACH. These functions can be enabled in controlled environments where OpenSimulator is being used for specific applications or games.
- osForceAttachToAvatarFromInventory() added. This allows a script to attach items to its owner directly from its own inventory without having to first rez them in the scene for another script to perform the attach. This does not ask for PERMISSION_ATTACH. This is useful in controlled environments where one does not want to give avatars general permissions to rez an object in the region.
- osForceAttachToOtherAvatarFromInventory() added. This allows a script to attach items to other avatars directly from its own inventory. This does not ask for PERMISSION_ATTACH. This is useful in controlled OpenSimulator environments which implement standalone applications or games.
- osGetGridNick(), osGetGridName(), osGetGridLoginURI() and osGetGridCustom() OSSL functions will now work on standalone simulators.
- osIsUUID() OSSL function added that allows one to test a string to see whether it's a valid UUID.
- osMin() and osMax() OSSL functions implemented to return min and max values for two numbers.
Acknowledgements
Many, many thanks to all the developers, testers and community members who contributed to this release. Your hard work makes this all possible :)