#SL Scripting News Week 46

This week Kelly Linden’s Scripting meeting covered a couple of interesting things.

Region Crossings

The server update with the region crossing infrastructure improvements did not make it to the main grid because of problems, something with vehicle crossing issues. Check the Server news later this week.

llSetKeyframedMotion( list keyframes, list options );

This function has run into some use problems. It seems there is some problem moving numeric data between SL and Havok that results in serious numeric round off errors. The problem causes objects being moved to drift out of the intended position.

See llSetKeframedMotion() for the scripting details.

For a discussion of and work-around for the drift problem see the SL Forum: llSetKeyframedMotion – turning a corner. Falcon Linden commented in the thread saying:

I have a hunch that the cause of the drift is related to the simulator’s fixed time step and the fact that llSetKeyframedMotion is implemented in terms of frames and not real time. This decision was made in order to produce more deterministic results. Before giving up on this method of animation, can you try changing your delta times to be integer multiples of 1/45s? [SIC] Let me know if this resolves the issue. If not, please file a jira.

That information is now part of the LSL Wiki page.


SCR-31 – New LSL function: llGetParcelMusicURL(). Kelly took this item into his to do list.


SCR-199 – Reduction/removal of llCastRay limitations. A fix and discussion of the function limits has been in progress for a time. The item is on Falcon’s to do list. Fixes have rolled out to the main grid. It is unclear what has been decided on the limits and how that fits with the current code on the main grid.


SCR-154 – llRezObjectFast() and llRezAtRootFast(), rezzing functions with zero delay. To understand the complications related to this item one must understand what Grey Goo is in Second Life. From the Wikipedia:

Grey goo (alternatively spelled gray goo) is a hypothetical end-of-the-world scenario involving molecular nanotechnology in which out-of-control self-replicating robots consume all matter on Earth while building more of themselves,[1][2] a scenario known as ecophagy (“eating the environment”).[3]

If you watch Stargate, it’s the Replicators. But, the individual parts are way smaller.

In Second Life griefers make scripts that rez things to crash the region and simulator. The Lab makes what they call the Grey Goo Fences to stop the griefing. The logic to prevent Grey Goo is spread though lots of difference aspects of SL scripting and rezzing code. So, removing the delays can have lots of unintended consequences.

Also, rezzing things is a lag producing activity. Kelly and Andrew have been considering the problem. Kelly related;

The problem I see with rez is we have a lot of ‘grey goo fence’ logic that may rely on the current behavior to be effective. Rez also is one of the few (only?) script actions that still uses “energy” which further rate limits. When I talked to andrew about this last the conversation quickly turned to a bit more radical an idea – llNoFunctionSleeps to disable function sleeps entirely instead of continuing the piecemeal function at a time approach. The goo fence is a complex system that takes a LOT of factors into account to attempt to differentiate good goo (ALife) from bad goo (grief attack). Some of the factors used by the goo fence is the number of different rezzers and the generation of the objects. Reducing the need to split scripts will have an effect on the fence. So, it isn’t that we can’t do it, it is just that it really needs to be well thought out and there may be unintended consequences. That fence has evolved over many many years in a constant battle between “ack they took out my sim” and “but my fish need to breed!”

The result of the discussion is the JIRA item SCR-154 is placed in deferred status.

Hierarchical Linking

Hierarchical linking is how our avatars are built. The hand is attached to the forearm, which is attached to the upper arm, which is attached… etc. Any movement of the upper arm affects the forearm and hand too.

While we can link prims, there is no hierarchical linking. If we rotate the 3rd prim in the set, the 4th and 5th are not affected.

This subject came up in the scripting meeting. Several people would like to see it added. Kelly and Andrew have looked at adding hierarchical linking. While it is possible and the Lindens have some interest in adding it, it is a complex feature to add. While it would be handy for builders, it could breal lots of existing content.


SCR-79 – llMatchGroup() – Checks if an object or agent is active in a specified group. This came up in the meeting. Kelly said,

I think this is a thorny issue because of the strong desire for privacy around SL and things in SL. I can definitely see people not wanting others to know some of the groups they are in. And there is stricter requirements for an object being in a group than just knowing the UUID of the group. The check for whether or not they are in (as opposed to have active) a group that matches the objects group seems a bit easier. But that isn’t SCR-79.


SCR-30 – llGive* feedback and transaction event. This is something Kelly has started and is partially implemented. He is considering what to do with it… how to do it… something.

Leave a Reply

Your email address will not be published. Required fields are marked *