Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Cross Sim Teleporter

Philo Hatfield
Registered User
Join date: 18 Mar 2005
Posts: 91
05-22-2005 15:06
Is a cross sim teleport system possible?

If so, I'd love to implement this. My new mall complex is situated in three different sims. Would be nice to set a teleport system to various locations throughout the three.
Thili Playfair
Registered User
Join date: 18 Aug 2004
Posts: 2,417
05-22-2005 17:05
To far, anything over a certain distance 256m ?, and it will fail, you can use multiple ones but i never really tried that (tp , land on another one wich tp you to next and so on)

Odd way of doing it, so i would say no :rolleyes:
Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-22-2005 21:07
If the sims are interconnected, yep! And I've seen it done across the mainland.

I won't leak how, because the method is proprietary and not my own. You should see something about it sooner or later, though. :D
_____________________
---
blaze Spinnaker
1/2 Serious
Join date: 12 Aug 2004
Posts: 5,898
05-22-2005 23:34
Jeffrey, you've seen something that actually teleports you reliably across multiple sims in the way sittarget did?

Or something that just tries to fly you?
_____________________
Taken from The last paragraph on pg. 16 of Cory Ondrejka's paper "Changing Realities: User Creation, Communication, and Innovation in Digital Worlds :

"User-created content takes the idea of leveraging player opinions a step further by allowing them to effectively prototype new ideas and features. Developers can then measure which new concepts most improve the products and incorporate them into the game in future patches."
Philo Hatfield
Registered User
Join date: 18 Mar 2005
Posts: 91
05-22-2005 23:46
From: Jeffrey Gomez
If the sims are interconnected, yep! And I've seen it done across the mainland.

I won't leak how, because the method is proprietary and not my own. You should see something about it sooner or later, though. :D


The sims are all connected to each other. Sammamish, Desire, and Cochran. Would really like to be able to solve this issue!
Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-23-2005 19:03
From: blaze Spinnaker
Jeffrey, you've seen something that actually teleports you reliably across multiple sims in the way sittarget did?

Or something that just tries to fly you?

It flies you there rapidly enough to be considered a teleport. I would tell you how, but I would be breaching confidence.

I will forward this thread to the creator, though.
_____________________
---
Ardith Mifflin
Mecha Fiend
Join date: 5 Jun 2004
Posts: 1,416
05-23-2005 19:09
From: Jeffrey Gomez
It flies you there rapidly enough to be considered a teleport. I would tell you how, but I would be breaching confidence.

I will forward this thread to the creator, though.



Does this have something to do with a combination of llSetForce and llSetBuoyancy? I have understood that certain combinations of these functions can result in speeds in excess of 1000 m/s, which would certainly be quick enough to qualify as near-instantaneous teleportation...
Francis Chung
This sentence no verb.
Join date: 22 Sep 2003
Posts: 918
05-23-2005 19:21
Thanks Jeff for letting me know about this thread :)

Rathe and I have developed a system we've called "ROAM", which will be part of Wet Ikon's collection of services.

Among its features, it boasts a sim pathfinder. So If you're in, say, Mocha and you want to get to Ahern (or any other sim), you can say "/go ahern" and it will take you there.

It also supports a bookmarking system, so if you have a particular destination in mind you can say "/go pixeldolls" and it will drop you in Nephilaine's boutique.

In its current state, it functions as an attachment. It's meant to be a replacement for teleporting, but you can think of it as an auto-pilot system. As long as you can fly from A to B, it will be able take you automatically from A to B.

It's actually 100% feature complete at the moment (and has been for months) but we still need a few things do get it ready for sale.

Part of our business strategy is to license our technology to people who can adapt it to do what they need. It might be a good solution for what you want.

This is something that I can imagine as a solution for your purposes if you want to transport someone to, say Joe Foo's store:
1) Rez a cube (think of it as a taxi)
"Please sit on me to go to Joe Foo's store!"
2) They sit on it. The taxi takes them to Joe Foo's store :)

Contact Rathe or myself if you're interested. I think Rathe would probably be your best bet. He manages the accounting/database/Internet communications, whereas I do the stuff at the end-points.
_____________________
--
~If you lived here, you would be home by now~
Chage McCoy
Aerodrome Janitor
Join date: 23 Apr 2004
Posts: 336
05-23-2005 19:30
I have decided that ROAM is too boring a name.

From now on it shall now be known as the "Fransporter" :D
Urusula Zapata
I love my Pugs!
Join date: 20 Mar 2004
Posts: 1,340
05-23-2005 21:59
WOW! I can't wait till this is for sale :)
_____________________
Get your decorated jeans, shorts and shirts at Jeans & Things by Urusula. Don't forget to check out Lecktor's Crappy T's while you are there. Jeans & Things by Urusula at Healy (190, 247) Shorts and shirts on SLBoutique.
blaze Spinnaker
1/2 Serious
Join date: 12 Aug 2004
Posts: 5,898
05-23-2005 22:12
I've seen examples of this. They have a tendency to drop you during sim crossings.

I would be interested in seeing how reliable this is.

One reason I am a little doubtful that they have it operational is that they'd probably would have installed it in the MetaAdverse billboards by now.

After all, what could be more useful than clicking on a billboard and getting transported to the place being advertised?

Though, note, Rathe & Francis are two of the most capable residents in SL. If they can't do it, I'd be surprised if anyone could.
_____________________
Taken from The last paragraph on pg. 16 of Cory Ondrejka's paper "Changing Realities: User Creation, Communication, and Innovation in Digital Worlds :

"User-created content takes the idea of leveraging player opinions a step further by allowing them to effectively prototype new ideas and features. Developers can then measure which new concepts most improve the products and incorporate them into the game in future patches."
Rathe Underthorn
Registered User
Join date: 14 May 2003
Posts: 383
05-23-2005 23:03
Actually it's been functional for a long (long... sigh too long) time. The delay in a release has been more for personal time constraints and scheduling of the both of us. Curse first life! But that shall soon change! I'm working on the final packaging right now and hope to have a release very soon.

And yes, I have always planned to integrate its technology into MetaAdverse but wanted to first see ROAM released. So stay tuned.
Torley Linden
Enlightenment!
Join date: 15 Sep 2004
Posts: 16,530
05-23-2005 23:07
Is ROAM an acronym for something? :)
_____________________
Francis Chung
This sentence no verb.
Join date: 22 Sep 2003
Posts: 918
05-23-2005 23:29
*grins Chage* I don't think Rathe would be a big fan of that name :p

We've been experimenting with sim crossings for months. We've come up with something pretty reliable, I think. (You don't want to know how many tricks we had to make that work ;)

I did a quicky conversion of my attachment script into a vehicle script. It was a very inelegant 5 minute hack, but I successfully turned a plywood box into a transporter for two :)

It wasn't pretty, but it was effective. I took Jeffrey for a ride from Parce to Mocha :)

Right now, like I said, our prototype is 100% feature complete. But the thing is this, we want ROAM not so much to be a successful product, but a showpiece for all our technology. We have something special in the works for content creators, and we want to pull it all together into ROAM, so you can see how it all works together :)

Our end goal is to sell absolutely nothing ourselves, but to license all our work to other people so that they can make wonderful things with it :)

PS. Keep the feedback coming! You've gotten Rathe excited, so maybe we can actually finish this thing soon!
_____________________
--
~If you lived here, you would be home by now~
Marcos Fonzarelli
You are not Marcos
Join date: 26 Feb 2004
Posts: 748
05-24-2005 08:23
I am very interested in this. Yes indeedy. :)
Kyrah Abattoir
cruelty delight
Join date: 4 Jun 2004
Posts: 2,786
05-24-2005 08:28
R.O.A.M (tm) Really Odd Avatar Movement
_____________________

tired of XStreetSL? try those!
apez http://tinyurl.com/yfm9d5b
metalife http://tinyurl.com/yzm3yvw
metaverse exchange http://tinyurl.com/yzh7j4a
slapt http://tinyurl.com/yfqah9u
Travis Lambert
White dog, red collar
Join date: 3 Jun 2004
Posts: 2,819
05-24-2005 08:35
Just a few dreams:

-Independant taxi drivers hovering at the welcome area, after a town hall, or at common meeting places - ready & waiting to whisk residents away to their destination of choice.

-Advertisements that rez a single-use 'taxi' directly to where the advertised product is located... even if its deep inside a mall.

-A virtual mall that is physically located in several locations throughout the mainland - near seamlessly logically linked via quick-transporters

-Preprogrammed "Newbie Tours" that would automatically take folks to 6 "10 minute locations" for 10 minutes at a time - for a one-hour overview of Second Life. Maybe even with automated llOwnerSay descriptions of each "stop" on the tour :)

God I love Second Life :)
Margaret Mfume
I.C.
Join date: 30 Dec 2004
Posts: 2,492
05-24-2005 10:42
From: Francis Chung
PS. Keep the feedback coming! You've gotten Rathe excited, so maybe we can actually finish this thing soon![/QUOTE


I pray for both of you and your families while waiting to relog after falling victim to a fly-by security script. What else can I do for you? I guess I'll go to the cathedral in Mocha tonight and light some candles.
_____________________
hush
Forseti Svarog
ESC
Join date: 2 Nov 2004
Posts: 1,730
05-24-2005 11:12
ooh I want a fransporter! I mean a rathmatron!

either way, sounds very cool. anything that speeds up my transportation time on well-trod routes (i.e. non-exploratory) would make me very happy.

so whether I get the system and build it into something (fran, I'm no LSL whiz -- is that required here?) or buy someone else's implementation, I am excited :)
Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-24-2005 15:42
From: Travis Lambert
Just a few dreams:

-Independant taxi drivers hovering at the welcome area, after a town hall, or at common meeting places - ready & waiting to whisk residents away to their destination of choice.

-Advertisements that rez a single-use 'taxi' directly to where the advertised product is located... even if its deep inside a mall.

-A virtual mall that is physically located in several locations throughout the mainland - near seamlessly logically linked via quick-transporters

-Preprogrammed "Newbie Tours" that would automatically take folks to 6 "10 minute locations" for 10 minutes at a time - for a one-hour overview of Second Life. Maybe even with automated llOwnerSay descriptions of each "stop" on the tour :)

God I love Second Life :)

Fran's teleporter is more exact, but I also have my own pathfinder script that functions more as an "autopilot vehicle" than a teleport. If you're looking to make a taxi, feel free to use the beta code I wrote.

CODE
// Edit these variables here:

// Target Sim:
string region = "Rose";

// Location in Sim
vector loc = <100,100,50>;


// Advanced Variables:

integer max_tries = 100; // Max number of traceback routines
float fly_height= 400; // Height to fly in world units
integer speed = 20; // Speed for physical movement
integer same_sim_tries = 5; // Failsafe count before use back is triggered

// Standard Flags:

integer use_back = TRUE; // Depending, this might help the pathfinder WORK!
integer use_phys = TRUE; // Use physics
integer ignore_init = TRUE; // Ignores initialization movement

// Physics Flags:

integer drunk_driver = FALSE; // One wild ride!
integer use_exact = TRUE; // Use exact coords; countered by drunk_driver
// Set drunk_driver and use_exact to FALSE and use_phys to TRUE to initiate
// my best attempt at a vehicle-less autopilot. Enjoy!


list path = []; // Lists path already taken. Good for statistical data or,
// here, knowing if we came from a sim already.
key sim_stuffs = ""; // For Data Request

pathTo(vector location)
{
integer same_sim = 0; // Same sim count. Failsafe.
integer try = 0; // Initialize our first try variable
integer traceback = FALSE; // Traceback variable if we dead-end
vector init = llGetPos(); // Initialize our position
init.z = fly_height;

if(use_phys)
{
llMoveToTarget(llGetPos(),0.3);
llSetStatus(STATUS_PHYSICS,TRUE);
}

if(!ignore_init)
{
if(!use_phys)
{
while(llGetPos() != init)
llSetPos(init);
}
else
{
while(llVecMag(llGetPos() - init) > speed)
llMoveToTarget(llGetPos() + llVecNorm(init - llGetPos()) * speed,0.3);
}
}

while(try < max_tries) // Start up the meat of our function
{
vector global = llGetPos() + llGetRegionCorner();
vector diff = location + <0,128,0> - global;
vector target = <0,0,0>;
integer is_next = FALSE;
if(llListFindList(path,(list)llGetRegionCorner()) == -1)
path += llGetRegionCorner();
else
same_sim++;

if(llGetRegionName() == region)
{
thisSim();
return;
}
if(llAbs((integer)diff.x) > llAbs((integer)diff.y))
{
if(diff.x < 0)
{
if(!llEdgeOfWorld(<128,128,0>, <-256,0,0>) && llListFindList(path,[llGetRegionCorner() + <-256,0,0>]) == -1)
target = llGetRegionCorner() + <-128,128,0>;
else
{
if(diff.y < 0)
{
if(!llEdgeOfWorld(<128,128,0>, <0,-256,0>) && llListFindList(path,[llGetRegionCorner() + <0,-256,0>]) == -1)
target = llGetRegionCorner() + <128,-128,0>;
}
if(target == <0,0,0>)
{
if(!llEdgeOfWorld(<128,128,0>, <0,256,0>) && llListFindList(path,[llGetRegionCorner() + <0,256,0>]) == -1)
target = llGetRegionCorner() + <128,384,0>;
}
if(target == <0,0,0>) traceback = TRUE;
}
}
else
{
if(!llEdgeOfWorld(<128,128,0>, <256,0,0>) && llListFindList(path,[llGetRegionCorner() + <256,0,0>]) == -1)
target = llGetRegionCorner() + <384,128,0>;
else
{
if(diff.y < 0)
{
if(!llEdgeOfWorld(<128,128,0>, <0,-256,0>) && llListFindList(path,[llGetRegionCorner() + <0,-256,0>]) == -1)
target = llGetRegionCorner() + <128,-128,0>;
}
if(target == <0,0,0>)
{
if(!llEdgeOfWorld(<128,128,0>, <0,256,0>) && llListFindList(path,[llGetRegionCorner() + <0,256,0>]) == -1)
target = llGetRegionCorner() + <128,384,0>;
}
if(target == <0,0,0>) traceback = TRUE;
}
}
}
else
{
if(diff.y < 0)
{
if(!llEdgeOfWorld(<128,128,0>, <0,-256,0>) && llListFindList(path,[llGetRegionCorner() + <0,-256,0>]) == -1)
target = llGetRegionCorner() + <128,-128,0>;
else
{
if(diff.x < 0)
{
if(!llEdgeOfWorld(<128,128,0>, <-256,0,0>) && llListFindList(path,[llGetRegionCorner() + <-256,0,0>]) == -1)
target = llGetRegionCorner() + <-128,128,0>;
}
if(target == <0,0,0>)
{
if(!llEdgeOfWorld(<128,128,0>, <256,0,0>) && llListFindList(path,[llGetRegionCorner() + <256,0,0>]) == -1)
target = llGetRegionCorner() + <384,128,0>;
}
if(target == <0,0,0>) traceback = TRUE;
}
}
else
{
if(!llEdgeOfWorld(<128,128,0>, <0,256,0>) && llListFindList(path,[llGetRegionCorner() + <0,256,0>]) == -1)
target = llGetRegionCorner() + <128,384,0>;
else
{
if(diff.x < 0)
{
if(!llEdgeOfWorld(<128,128,0>, <-256,0,0>) && llListFindList(path,[llGetRegionCorner() + <-256,0,0>]) == -1)
target = llGetRegionCorner() + <-128,128,0>;
}
if(target == <0,0,0>)
{
if(!llEdgeOfWorld(<128,128,0>, <256,0,0>) && llListFindList(path,[llGetRegionCorner() + <256,0,0>]) == -1)
target = llGetRegionCorner() + <384,128,0>;
}
if(target == <0,0,0>) traceback = TRUE;
}
}
}


if(traceback)
{
try++;
integer path_back = llListFindList(path,[llGetRegionCorner()]);
if(llListFindList(path,[llGetRegionCorner()]) == -1)
path_back = llGetListLength(path) - 1;

// See if any sim is open nearby if use_back is set
if(use_back || llGetRegionCorner() == llList2Vector(path,0) || same_sim > same_sim_tries)
{
if(!llEdgeOfWorld(<128,128,0>, <-256,0,0>) && llListFindList(path,[llGetRegionCorner() + <-256,0,0>]) == -1)
target = llGetRegionCorner() + <-128,128,0>;
else if(!llEdgeOfWorld(<128,128,0>, <256,0,0>) && llListFindList(path,[llGetRegionCorner() + <256,0,0>]) == -1)
target = llGetRegionCorner() + <384,128,0>;
else if(!llEdgeOfWorld(<128,128,0>, <0,-256,0>) && llListFindList(path,[llGetRegionCorner() + <0,-256,0>]) == -1)
target = llGetRegionCorner() + <128,-128,0>;
else if(!llEdgeOfWorld(<128,128,0>, <0,256,0>) && llListFindList(path,[llGetRegionCorner() + <0,256,0>]) == -1)
target = llGetRegionCorner() + <128,384,0>;
same_sim = 0;
}

// If all else fails, go back along the path we took
if(target == <0,0,0>) target = llList2Vector(path,path_back - 1) + <128,128,0>;
traceback = FALSE;
}

if(ignore_init && llVecMag(<location.x,location.y,0> + <128,128,0> - <target.x,target.y,0>) < 10)
{
is_next = TRUE;
target = (location + loc) - (1 / 5 * (loc + location - llGetPos() - llGetRegionCorner()));
}

if(llGetStatus(STATUS_PHYSICS))
{
while(llVecMag(<target.x,target.y,0> - <global.x,global.y,0>) > speed * 5)
{
global = llGetPos() + llGetRegionCorner();
vector place = llGetPos() + target - global;
if(!is_next) place.z = fly_height;
if(use_exact)
{
llMoveToTarget(llGetPos() + (llVecNorm(place - llGetPos()) * speed),0.3);
llLookAt(llGetPos() + llVecNorm(place - llGetPos()) * speed,0.3,0.3);
}
else
{
vector between;
between = llRot2Euler(llRotBetween(llRot2Up(llGetRot()),llVecNorm(place - llGetPos())));
if(!drunk_driver)
{
vector between2 = llRot2Euler(llRotBetween(llVecNorm(place - llGetPos()),llRot2Up(llGetRot())));
if(llVecMag(llVecNorm(between) + llRot2Up(llGetRot())) < 1.1 && llVecMag(llRot2Up(llGetRot()) + llVecNorm(place - llGetPos())) > 1)
between = between2;
}

rotation two = llGetRot() * llEuler2Rot(0.1 * between);
llLookAt(llGetPos() + (<0,0,1> * two),0.3,0.3);
llMoveToTarget(llGetPos() + llRot2Up(llGetRot()) * speed,0.3);

}
llSleep(0.2);
}
}
else
{
while(target.x != global.x || target.y != global.y)
{
global = llGetPos() + llGetRegionCorner();
vector place = llGetPos() + target - global;
place.z = fly_height;
llSetPos(place);
llSleep(0.1);
}
}

}
}

thisSim()
{
float ground = llGround(loc - llGetPos());
if(llScriptDanger(loc) && loc.z < ground + 20)
loc.z = ground;
else if(loc.z < ground)
loc.z = ground;

if(llGetStatus(STATUS_PHYSICS))
{
while(llVecMag(llGetPos() - loc) > speed)
{
llMoveToTarget(llGetPos() + llVecNorm(loc - llGetPos()) * speed,0.3);
llLookAt(llGetPos() + llVecNorm(loc - llGetPos()) * speed,0.3,0.3);
}
}
else
{
while(llGetPos() != loc)
llSetPos(loc);
}
llSetStatus(STATUS_PHYSICS,FALSE);
llStopLookAt();
llStopMoveToTarget();
vector rot = llRot2Euler(llGetRot());
llSetRot(llEuler2Rot(<PI + PI_BY_TWO,rot.y,PI_BY_TWO>));
}

default
{
touch_start(integer total_number)
{
sim_stuffs = llRequestSimulatorData(region,DATA_SIM_POS);
}
dataserver(key query, string data)
{
if(query == sim_stuffs)
pathTo((vector)data);
}
}

Not to steal Fran's fire, this sort of "trick" is considerably slower and may attempt several paths before making it to the target if travelling long distances. Fran's, on the other hand, parses all the path data externally, so it's a lot faster.

Regardless, feel free to use it for said "taxi service" if you'd like.
_____________________
---
Travis Lambert
White dog, red collar
Join date: 3 Jun 2004
Posts: 2,819
05-24-2005 16:01
Thanks, Jeff - That's awesome! :)
Francis Chung
This sentence no verb.
Join date: 22 Sep 2003
Posts: 918
05-25-2005 05:30
*grins* The story of how we got stuck on the name "ROAM" is way too long to get into here, and really not that interesting.

As for Rathe and I's status, we are soooo close. If we can't finish this thing Real Soon Now, I'm going to have to bust some pixelated kneecaps :p

Travis, those are some great ideas! This is why we totally want to see what people can come up with. I'm getting warm and fuzzy just thinking about it :)

Forseti, as far as LSL goes, it depends what you want to do with it. If you want a fleet of automated tour-buses, say, you might need to know some LSL, or hire a contractor. On the other hand, if you want to create a new model for ROAM, or maybe make it part of an avatar, that should be just drag and drop :)

As you can see from the attached screenshot, this is what the ROAM pack looks like. Of course you can easily make it invisible, but it's definately not to everyone's aesthetic tastes. We'd totally be happy to have people make and sell their own attachments/models with our scripts under the engine :)

Oh, and I just ran a test - Parce to Ferne (pretty much the two farthest sims) in 3 minutes, no relogging issues.

EDIT: PS, forgot to mention. Jeff took me for a ride from Mocha to Parce with that script. It is a really neat hack :)
_____________________
--
~If you lived here, you would be home by now~
Frans Charming
You only need one Frans
Join date: 28 Jan 2005
Posts: 1,847
05-26-2005 08:14
First of all, Fransporter is mine, I have written it down somewhere, i'm sure. ;)

I have to say Pretty cool. Instead of malls you could now have a group of high class content creators, band together and have transports right to each others place.

Or what if you have a shop but you want to expand but can't find land in the sim. Now you can just buy some land in a other sim and build your expandtion there.

Or some big land baron buys a plot in every sim puts adverticing and shops there and then gives away the transporters with those coordinates, as a quicker transport than the lindenhubs. No more long flying, you will always transport close to where you want to be.

I have dreamed about some of these thing, even worked it out a little. But never started the scripting. I hope to see some great uses of it.

Keep up the good work. :D
Francis Chung
This sentence no verb.
Join date: 22 Sep 2003
Posts: 918
05-29-2005 14:52
"Fransporter" was a suggested name for this thing, when we started this project, last year - I have proof! ;)
_____________________
--
~If you lived here, you would be home by now~
Lash Xevious
Gooberly
Join date: 8 May 2004
Posts: 1,348
06-08-2005 09:20
Oooh, I've been waiting for this since last year. I hope it comes out soon! :D
1 2 3