Tuesday, February 7, 2012

A Heartfelt Plea

Please, please, please, nice Linden people, please get the bugs out of llSetRegionPos so that people can use that instead of sit-target teleporters that bounce you off the walls and the floor and the ceiling at your destination.

: : retires, muttering darkly and nursing her bruises : :

... oh, all right.  The llSetRegionPos thing is a scripted function that has been in the works for a while now, and will, when it's ready, do exactly what it says on the tin - set an object's or an avatar's position within a region.  So, you will be able to put out a scripted object that, when someone touches it (or whatever), teleports them to a position you choose.  (I presume - well, I hope - that it will request permissions to do so first.)

Currently, we have three options for teleporting, mainly:-

The simplest one does not actually teleport you at all, it just opens your world map for you and invites you to teleport yourself.

Sit-target teleporters take advantage of the fact that every prim has a settable sit target - a position, relative to the prim, where your avatar will appear if you sit on it - and that sit target can be placed quite a long way from the prim itself.  Like, anything up to three hundred metres away.  So, a sit-target TP relies on you sitting on the item, which then promptly un-sits you - only it un-sits you from its sit-target position.  Mostly.  Assuming there are no rounding errors in the process, and the bounding box of your avi doesn't collide with anything else's bounding box at the destination point.  It is little details like that which make sit-target TPs such an occasionally bruising experience.

Probably more common, because more flexible, are warpPos teleporters.  These things use the llSetPos function; they rez a prim, which you sit on - you may see that as stepping into the beam of a teleporter, or through the swirling portal of a magic door, or whatever SFX people put on these things - and it llSetPos-es itself to its destination, where it unsits you.  The thing is, llSetPos is supposed to have a range of only ten metres.  The warpPos method really takes advantage of a bit of - well, a useful bug - in the system, whereby, if you make a lot of calls to llSetPos in quick succession, SL does not actually bother rendering the moving object until it's stopped moving - you don't see all the intervening ten-metre steps.  There is still a practical limit on warpPos teleporting, basically the point at which SL says "stuff this for a lark" and refuses to shift you any further*.  This method is also vulnerable to a few things, like trying to cross parcels which are full or have bars to object entry, or to random lag in the system which makes the server pause and the traveller materialize at one of those intervening points.  Somewhere I have a picture of what can happen when this thing goes wrong - oh, yes, here it is:-

I had to relog to get myself unstuck from that floor.

Anyway.  Yes.  High time for a simple, reliable, not-abusable teleport function that takes a person from grid position X to grid position Y without messing about.

*Technically minded people will realise that I am oversimplifying horrendously here.  Though why a technically minded person should bother reading my pifflings, I really don't know.

No comments:

Post a Comment