Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
InWorldz Halcyon 0.9.20
This update provides full support for materials, LSL script support for materials and projection lighting functions, increased LSL script memory limits (128K per script), lower Land Impact calculations, and many reliability and performance improvements.
- Adding support for materials, for adding materials to a scene, Thoosa protobuf serialization, and the caps to support viewer set/get.
- Added a cache for the calculated value for MaterialID and only recalculate it when the data in the material changes.
- Added test cases for render materials to and from Thoosa serialization for bytestream serialization.
- Added missing materials-related tunables to SimFeatures for the viewers on region entry.
- Many additional changes to further tune and tweak the materials implementation.
- Increased the memory limit of scripts from 64K to 128K. This is due to the possibility that some (large) scripts from Second Life may not function under Phlox, due to strings being UTF-16 instead of UTF-8, and provides additional memory for other cases.
- Added full support for LSL materials constants, including their implementation in llSetPrimitiveProperties, llGetPrimitiveProperties and their variants.
- Added new (InWorldz/Halcyon-only) support for scriptable projection lighting. See viewtopic.php?f=19&t=21955&start=0 for more.
- Fixed functions accessing prim inventory to try to locate the item by name first. Allows an inventory item named like a key to be used by name.
- Fixed script errors being disregarded by the viewer.
- [R5868]: One of the recent updates caused llRegionSayTo messages to be heard by everyone in the region, contrary to the "SayTo" part of the name. (This can potentially reveal information that was not intended for all, such as tip jars reporting the user and amount to everyone rather than just the DJ or host, etc.) This update restores the correct behavior of sending the message only to the specified recipient.
Land Impact calculation
- The calculation for Land Impact has been changed to ensure lower values even when mixing prims that have extreme combinations of higher streaming cost vs higher server weight.
- The new calculation is based on the historical lower value of either, in each prim.
- It now usesa summed value of each of those individual (prim) to calculate overall Land Impact (object cost) so that linking prims generates expected LI values.
- Previously prims that had each of those costs at opposite ends of the spectrum could generate larger LI. Fixes Mantis #3113.
- [R5853]: Fixed a problem in botFollowAvatar where a failure to find the target avatar by name would allow the code to try to continue without an apparent error. It now correctly returns BOT_USER_NOT_FOUND.
Reliability and Performance
- Fixed a regression that caused bot profiles to not be found. The fixes for user profile caching missed a special exception case for temp profiles which left them unable to be returned from a search. Special check restored, and fixes missing bot names, profiles, and ability to create a second bot with the same name, etc.
- Use the new immutable timestamped items for the the byte buffer pool, and implemented aging. This should hopefully prevent garbage collection activation in cases like the UDP stack, where items will be rapidly requested and returned to the pool.
- Implement cache aging for the asset cache. This allows regions to use much higher cache values, helping to negate any negative performance impact from cloud storage of assets, while continuing to enjoy the many benefits.
- Fixed local chat messages from objects to have the correct owner ID for viewer use (when you clicked on the chat source).
- Significant improvements to the way avatars were tracked as chat sources.
- Significant rework of object parts lists (prims) to replace all locking with the use of lock-free immutable collections. This should reduce lock contention, avoid possible future deadlock conditions, and also improve performance slightly.
- Fixed a deadlock case (seen on Events Scenic 35).
- Fixed parcel checks for avatar movement to properly test descent into parcels from above in all cases.
- Fixed a problem managing local profiles and temporary profiles.
- Removed unnecessary locking from the LRU cache, since all callers are either single-threaded, or do their own locking.
- Fixed a problem seen during beta testing (Mantis #3149) in the mesh uploader that resulted in confusion between uploaded prim parts, seen in testing the new immutable collections change above, but may have also occurred in the past in some cases (however it believed to be new in this update, either way, fixed now).
- [R5848]: Fixed user session information not being cached by region servers. Caused significant performance and lag problems when attempting to terraform.
- [R5851]: Fixed IMs sometimes not being able to follow users for a period of up to 5 minutes after the IM recipient has moved to a new distant (non-neighbor) region. Fixes problem reported in the forum thread here.
- [R5851]: Fixed some server-side problems handling the Export permission exposed by IW3 testing and reported in the forum thread here.
- [R5855]: Added support for viewers that pass new land access flags. This fixes problems loading the Access and Ban lists in the land properties form (About Land) when opened in IW3 and other recent viewers.
- [R5868]: We have a possible fix for a region crash in the physics code handling collisions with objects being deleted. (This crash was seen on the Mare Volcani region about a week ago.)
Other Fixes and Changes
- Implemented AGENT_CONTROL_STOP in the viewer status update (viewer "airbrakes").
- Improved support for OpenSim-compatible OAR files, especially in the area of archived mesh (courtesy of the MOSES team).
- Added server-side support for web-based user profiles. (Now TPV viewers on Halcyon servers won't be trying to connect to SL servers for avatar profiles.) Viewer is informed only if a web profiles URL is provided; this does not add web profiles to InWorldz, but would allow it in the future without server changes.
- Fixed a deadlock and local/temp profile problem.
- Cleanup of AbsolutePosition calls, to avoid calling the calculation three times. (It's an expensive operation.) Also fixed some related code to be thread-safe.
- Cleaned up unnecessary config options from the Halcyon.ini file that were already covered by the region XML file.
- Lots of other cleanup, tidying and small tweaks to the server code itself for better maintainability in the future.
- Fixed some admin console messages related to user teleports that indicated the wrong information.
- Added support for Basic Physics on Linux-based Halcyon servers, in order to enable native testing of other code changes.