Monday, May 15, 2006

Unphysical Tram-Pushery

Anyone walking the paths of Caledon on Sunday might well have been greeted by, first of all, the sight of myself perched upon a fair-sized tram; second of all, the sight of said tram repeatedly and awkwardly colliding with buildings and newspaper dispensing devices and rental payment machines as it attempted to turn ridiculously tight corners; and thirdly, my cursing the damned thing and the damned layout of Caledon and the bridges and everything under the simulated sun.

The construction of a reliable, vehicle-based transport system inside an existing landscape designed for people to walk around is simply not practical. Either one knocks down a number of houses, hopefully evicting the tenants beforehand - unlikely to be popular - or one uses vehicles which are not reliant on infrastructure (*ahem*, balloons, *ahem*) or one simply does not use vehicles.

Much as I vastly prefer having moving objects in Second Life being physical, the time does come when one must accept the limitations of physical objects and particularly vehicular physics. They hate travelling between sims, for a start, and routinely behave bizarrely. They frequently stop working inexplicably when asked or forced to sleep. They are easily knocked off-course, blocked by a simple plywood cube in their path or pushed around by vandals, and yes, even Caledon has experienced a number of attempts at vandalism - Port Caledon, I am told, was attacked by hundreds of beachballs on Saturday.

Simply put, physical objects are at the mercy of almost everything, and this is not something that makes for a good, regular, transit system. I certainly cannot be there at all times to put the things back in place myself, and whilst mechanisms for self-defence and self-correction can be scripted - my touring dirigible, for instance, corrects its own course and can easily survive a few unexpected bumps - they will never be perfectly satisfactory.

In contrast, a non-physical vehicle, one that is moved and rotated by a number of tiny calls to llSetPos and llSetRot, is almost impossible to vandalise, considerably more reliable and precise, and can effectively ignore the presence of obstacles (since it moves through them). Why are such things not used more often? Well, the last point really is also a flaw - a vehicle which moves through all solid objects is just not very believable, and also not terribly useful in environments possessing "fake ground" (prims textured to appear to be ground or rocks or suchlike).

Vehicles should not move through solid objects without a very good reason, and it is not practical to have them look for objects in front of them first, since it is currently impossible to detect the size of an object with a sensor. Say, for instance, I am standing in front of a wall. If I wish to detect its presence with a sensor I must first of all have the centre of the wall inside the arc in which I am detecting. Secondly, when llDetectedPos tells me the position of the wall, it will be the position of that centre. Which is frankly not a lot of use given as I have no way of finding out the extent of that wall. It could be one metre long, ten metres long, who can tell?

Really, LSL needs a function which takes two points and tells you what, if anything, is between them. Surely this would not be too difficult. I have simulated this using, ironically, physical objects - I have a "detector gun" which shoots out a projectile in a straight line that informs the firer of what it has hit - but I suspect that using that continuously to tell a vehicle whether it is on top of something or bumping into something is not practical. (Remaining on top of an object for instance I can see as particularly problematic; how can one fire a projectile downwards when there is no room so to do?)

Dear reader, I do understand that you are probably now most tired of these complaints of mine, and thus I will conclude this piece. Rather than continue to grapple with the production of a physics vehicle tram I shall be creating what I believe is known as a "proof of concept" design, illustrating that one moved non-physically can be both graceful and reliable, and in many cases nobody would ever notice the difference, particularly if a gentle push were involved should one happen into its path.

My balloons, however, will remain physical, as they are my own personal toys rather than the backbone of a public transportation system, and encounter fewer obstacles such as litter, pedestrians etc. Ducks, occasionally.


Anonymous Anonymous said...

How about an overhead Monorail, then you would be above the houses, trees, and suicide ducks.

And the beachballs, maybe the old TV show " The Prisoner " has come to SL


5/15/2006 08:53:00 PM  
Anonymous Aldo Stern said...

Shock beat me to the punch on this one--as soon as I read your entry, I thought, "well how about taking a 19th century approach to solving the probelm--seeking a franchise from the local government to erect and operate a narrow gauge elevated railway?"

Then I go to post this brilliant idea and see that the charming Ms. Plasma's already pitched a variation.

An elevated track has the advantage over building at grade is that you can make arrangments with landowners to build the line over property, ponds and obstructions where you want to make larger more gradual curves than are possible by following the foot lanes.

I know I tend to think way too literally for my own good or the necessity of SL physics--but how about for the tram itself using a single car steam dummy with a small engine in front and passenger seats in the back--then ther's no problem with electric power lines etc. or connections between multiple cars.

5/17/2006 08:57:00 PM  

Post a Comment

<< Home