June 2006

You are currently browsing the monthly archive for June 2006.

If you have not already done so, I Highly Recommend that you read Hamlet Au’s piece on Seifert Surface’s “crooked house”. This very much falls into the category of “I wish I’d thought of that” - Mr Surface has created an experiential model of a four-dimensional cube (a tesseract) in the three dimensions of Second Life, by means of some trickery. One can walk through a building in a straight line and return to one’s starting point.

Watch the video first and see if you can work out how that could be done. The answer seems very obvious after you have seen it from the outside, but that is always the case with the best of such things.

For some reason this has impressed me far more than pretty much anything I have seen in Second Life so far, and stands up as a reason why, no matter what the social situation becomes with ban lines and changes and so on, SL will continue to remain something wonderful. Where else, pray tell, could one construct a hypercubic building to walk through?

I have mathematical and experimental and political and sociological interests, and whilst all of them are important to me, none entirely wins over the others. Perhaps it is my background that leads me to treat them all as intrinsically connected, thus I cannot help considering the political aspects of a technological development (and vice versa), but at times my sheer admiration for an achievement overwhelms other considerations. It may be a weakness but a dictator could gain my support by promising easy access to multidimensional housing.

I would like to briefly announce my latest product, which some people have made enquiries about - the Ordinal Derringer.

Derringer 5.jpg

(more photographs to be found here)

This is not a strict reproduction but instead is modelled on the .410-calibre over-and-under pistols known as “Derringers”. As well as the attractive finish and pearl handle - I actually designed it to go with the outfit I am seen wearing here, from silentsparrow - the weapon can be concealed in a number of different locations of the body. No, nothing requiring lubricant, but, for instance, one may select the right ankle, and then draw and hide the weapon from that location. Each position has a specific animation assigned to it. The right ankle is my personal favourite.

The concealment points are the main feature really, but the gun itself is fairly complete, with custom animations for loading, holding, aiming and firing (the shots have recoil) and two different ammunition types. One may fire a solid slug, or load the derringer with buckshot, each cartridge having three separate projectiles. There are also the particle effects that one expects from a quality firearm, muzzle flash, muzzle smoke, impact and so on.

Readers should be advised that they can view a somewhat blurry motion picture of the drawing and concealing animations being used. I would suggest selecting the arrow button bottom right and choosing “original size”, as I was using rather primitive technology. It is surprising to me how few cinematographic advertisements exist for products in Second Life, but be assured that I will be creating them for future promotional projects. It takes but a few minutes and gives a potential purchaser a much improved impression of what it is the device does.

I have, meanwhile, been making progress regarding scavenging slugs, but I wish to save that for the point when I have actually implemented the genome function that I have been thinking of, and reproduction. The sim in question, as I mentioned, is PG, but I do not think that that covers graphic portrayals of slug birth.

As we all know, the entire grid is under savage attack from free account griefers armed with freebie pushguns and unsavoury furry body parts. Sensible folk of course have banlines up on their property at all times, and ideally sit inside concrete pillboxes as well.

However, we all must go out into the rest of the world sometimes, and what is one to do on such an occasion? The device I believe you require is a Personal Ban Zone. Arm yourself in the knowledge that no damnable lower-class freeloading ruffian can get near!

Personal Ban Zone

Available for free as a public service from SLExchange, SLBoutique or the freebie box in my Caledon home.

(Please note that this product may not actually do anything at all.)

Oh, I just want to share one extra detail. Yesterday, whilst I was searching for land, I was also testing an improved model of my Blitter (a non-physical personal movement device). This appears as a sort of back-mounted device, and has much smoother movement, though it can have issues with sim crossings, which is something I need to take a closer look at.

Regardless of that, in certain areas I encountered the horrific two-hundred-metre ban-lines that I have complained about before, and of course I was unable to stop in time to avoid hitting them. However, I noticed that I was actually able to move into the banned area and in some cases through it - not easily, it was slow and jerky, but I was most definitely inside them for some seconds. I wonder why this might be? The Blitter is really a fairly simple non-physical vehicle and such a thing should theoretically not be possible.

I mentioned previously that I had thought of working on a pollution-based ecological system, and today I have taken a few steps in that direction, at least to the extent of setting up a few of the basic elements.

First of all I bought some land, which is rather useful to have for such things. I certainly couldn’t do this sort of potentially hazardous thing in Caledon. A 4,096 square metre area seemed sufficient (if not over-sufficient) and I scoured the land sales listings for such, eventually finding a spot in the corner of a mainland sim that seemed to be relatively free of clubs, camping chairs and other simlaggy enterprises, as well as free of banlines. Incidentally, this will cost me to maintain, thus I would like to make a quick commercial announcement: BUY MY STUFF. Thank you.

Coffee Linden cleans up

As an aside, during conversation with a couple of compatriots it was noted that there was an area containing various advertisements involving unclothed ladies, and though this is not Caledon, clearly there are standards to be upheld in a PG sim, both social and aesthetic quite frankly. A few reports were made to the Lindens of the matter and within mere minutes, Coffee Linden was present, recording evidence and removing the offending items! Most prompt.

Whilst this was taking place I did note some confusion on the part of the advertiser, specifically concerned one piece portraying two ladies (clearly close friends) enjoying the great outdoors but seemingly bereft of clothing, with the caption “BUY THIS WOMAN”. Quite apart from the illegal and improper nature of the entreaty, and unlikelihood of the purchaser actually receiving a lady of any sort beyond the purely pixellated and inanimate, which woman? And surely that would leave her friend without company, though perhaps she would then have the funds to purchase some clothing, perhaps a nice summer hat and a frock. Really - producers of pornographic advertisements, be aware that a strong narrative should be considered a necessity.

Scavenger slugs

In any case, back to the experiments. The plot now has a central observation tower where one may rest in safety, with the surrounding terrain both dangerous and without flight, though this is not actually significant at the moment as there is nothing more lethal than a few purple slugs. At the base of this is an outlet pipe from which are emitted small containers of the toxic effluvium that is a waste product of some of my less environmentally-sensitive machines, carefully packaged to avoid accidental poisoning but a potential source of energy for some of the creatures residing there.

The first step was to create a basic form of life that would be able to process this waste, the first link of the food chain as it were, and… well, I will let a brief portion of my notes speak for themselves there, if you would be so kind as to read on.

Read the rest of this entry »

Frozen crow Frozen duck Frozen tram

Yesterday’s grid problems (apparently, it wasn’t an attack, merely some form of database error or somesuch) made everything in Caledon that was previously moving about, stop doing so. Crows and ducks were frozen in mid-air and the tram sat by the bridge - though I have seen it do that many times in the past.

Whilst I was there and not doing anything I took a few photographs.

“Seth Mandelbrot and (hippos) are stranded on the balloon float! Oh the humanity!”

You know, in a strange way I quite enjoy being in-world when some sort of grid attack is taking place (such as right now). All of one’s communication is shut off and one is left just simply talking to anyone who is around. No instant messages, no teleportation… it is like being snowed in, and it is such a change that it is as good as a rest.

If only scripts were working as well; I was just trying to perfect an intelligent camera attachment that would detect who was speaking in a conversation and target the camera on them.

I’m also a bit lonely here.

I would just like to say that I am very unhappy with the decision to raise the height of ban lines within SL to two hundred metres, speaking as somebody who used to live on the mainland, attempt to plot balloon courses around the mainland and who is thus familiar with the number of people who just decide to set ban lines around their property for no good reason, which you cannot see in practice until you run into them, but which at least you could easily evade by flying a dozen or two metres upwards.

This does not serve to compensate those feeling the strain of increased Assault caused by Anonymous Registrations, as such people can simply re-register; it serves to further diminish the mainland as a space where it is possible to live.

It seems to me that those desirous of Absolute Privacy Even In Their Absence should perchance look elsewhere than a large populated world with few to no public roads and rights of way, and that those following the tenet of “I Can Do What I Want, It’s My Land” should perchance realise that they live in a World Involving Others, where one does not have absolute rights to do whatever one wants - at least morally - but in fact should negotiate and agree those rights with others when it affects them, which ban lines surely do.

I feel somewhat embarrassed about having left the mainland for Caledon, where there are certain basic standards - no ban lines, no sim-lagging casinos, no gaudy spinning advertisements - but really, if not for such an environment I would have left long ago. Embarrassed is perhaps not quite the right word… more disloyal. A “sell-out”. Honestly, though, given the choice between a peaceful and civilised environment full of interesting people, good conversation and creative outlets, and a chaotic advertisement-filled forest of ban lines… the rational choice is surely the one I made. I still feel guilty though.

That is all.

As a minor thing of note, readers interested in the Science of Automatic Vehicles might also be interested in visiting the Third Year Anniversary Celebrations, as detailed on the Second Life Wiki. The monorail that you may travel upon there works upon a similar system to the Caledon Tram, which is not terribly surprising, as I scripted it. The actual car itself was not by me, but by Merle Widget, and the fabulous monorail stations and track are by Lethe Naumova. (The overall style, if there is one, of the Third Year Anniversary Celebrations, or “Three Yak” as I have taken to calling them, I consider to be somewhat “retro” but of a later period - what I term “Gernsback” - than my more usual one. I would say, ’30s to ’50s.)

Plotting monorail course 1.jpg

As with the Tram, one can watch the progress of the monorail and travel directly to it by visiting the Monorail Status Page, and also laugh when it decides to misbehave (which as yet it has failed to do, though I expect it will today after our Regularly Scheduled Down Time). Be warned, if you decide to teleport to its location, that it is somewhat high in the air.

I have “tagged” a group of images with the term “monorail” for your hopeful amusement and interest, to which I will be adding forthwith. One may find far more images in the journal of Ms Mera Pixel.

I do very much advise any reader to visit this Exhibition, even if they despise trams and monorails, as there really are some exceptionally impressive creations to be found there just on a brief wander - not to mention the events that will be taking place. An extensive timetable of the latter can be seen in this entry by Mr Hamlet Au.

Recent viewers of the Tram Status Page will have noticed that it has grown a map, indicating where the tram is, rather than than there simply being a SLurl link.

Tram status page with map

I decided to investigate the Second Life mapping API and, you know, it’s not actually that hard at all. One only needs to know some fairly basic Javascript and one is away. All sorts of possibilities come to mind… perhaps the tram map could include other landmarks, say, or indeed scan so that one might see people around the tram at that time.

Hmm. Really, it is again infuriating that there are not enough hours in the day. There are the camera things to be working on, and changes to the tram itself to make the spelling more correct and it more easily sat upon, and derringers to release, and third birthday monorails to discuss, and… perhaps some reader would be kind enough to offer me some sort of patronage as an official court inventrix? No? Ah.


Edit: Well, at least you will now see that the spelling is correct on the tram, and that sitting on it should be a much easier task. Also, if you are privileged enough to be present when a new tram is rezzed, you will see it fade into existence as it is drawn out of the world of the Asset Server into Second Life. Surely, there are manifold universes within this simple one.

I mentioned in my very late post yesterday that I had introduced a “tram ping” system. This is indeed the case, and I will now say a few more words on the subject.

The Caledon tram has an unfortunate habit of occasionally vanishing, being returned to my inventory when a parcel becomes full, and suchlike. This is obviously inconvenient for passengers, particularly as it is most likely to happen in the busy hours - the evening for North American participants - when I am asleep, and thus cannot pop back to restore service. I have not yet mastered the art of Second Life Somnambulism. It would be possible for me to delegate responsibility for this to another but really, why should they be bothered either?

I had thought for a while that I might put in an automatic system to solve this problem but, as usual, the distractions of passing shiny objects have meant that it is only now that I have done so. The principle is really quite simple. A script is added to the tram which sends, every minute, a message via llHTTPRequest to my Tram Ping Server, with its current location. The server then records this information in a file.

A tram. In Wales. The Tram Rezzer, an invisible phantom block lurking near the Chessboard, checks with the server every two minutes to see when the tram last checked in. If that length of time is greater than two minutes, it assumes that the tram has met with a mishap and creates a new one, which begins on its course once more. Some extra time is granted as a margin of error - it might be that the tram failed to check in due to some networking error, but it is unlikely that this will happen more than once. (If somehow the whole llHTTPRequest structure fell apart and the tram was unable to ping at all, the rezzer would also be unable to check and would not rez any new trams until it was able.)

So far, this system seems to have worked and not flooded Caledon with a plague of trams. (I have a horrible nightmare in which the rezzer goes insane and begins sending out a new tram every two minute until the entire route is a solid mass of smokestacks.) One can also observe the process in action by visiting the tram status page, from where it is possible to get a SLurl to the tram’s current location.

One thing that I am concerned about is the possibility of more than one tram existing, and thus I am thinking of instituting a system whereby each tram that pings the server must have a key on an approved list, and commit suicide out of sheer despair if told by the server that it is not welcome - or perhaps, we might actually want more than one tram, in which case rezzers would have to be able to check for a particular key. Certainly as Caledon grows in size, a central page from where one could view the progress of each public transport route would be most diverting for visitors.

Here’s a thing - why do I have no pictures of the tram in my current gallery? Bother.


A demonstration of the principle has just occurred! In the log (currently on the status page) you can see two lines…

[12:01:46] Tram last pinged 136s ago, trying to rez new one
[12:01:46] New tram rezzed, key b372b1d4-1ee3-0a3e-682d-42fa7c5586d7

These coincide with the message that I received just beforehand:

Date: Thu, 15 Jun 2006 04:59:42 -0700 (PDT)

The object ‘Second Life’ has sent you a message from Second Life:
Your object ‘Caledon Trolley v0.36′ has been returned to your inventory lost and found folder from parcel ‘Commonwealth of Caledon’ at Caledon II 93, 190.

Why this happened, who can say? However, the system seems to have worked perfectly in correcting the matter. Beforehand, there would have been no tram for six or seven hours.

  • pollution for power generators - they should produce some form of waste product

    • waste prims
    • plants that grow on waste prims
    • herbivores to eat the plants
    • carnivores to eat the herbivores, and also any unwary passers-by
  • carnivores can’t tell when they’ve eaten someone

    • if someone leaves sensor range directly after an attack, they’re probably dead
  • the tram keeps disappearing at odd times, after sim resets, and so on

    • an automatic rez device is a good idea
    • I wrote one
    • the tram pings a server with its current location every minute if it is alive
    • the rezzer asks the server when the tram last pinged, and, if it is not within a certain time, it assumes that the tram has died somehow and rezzes another one
    • see the status page at http://ordinalmalaprop.com/caledon/tram/
  • ankles I need to spend some time on my appearance for a change

    • I have bought a skin from Robin Sojourner, who was most helpful and kind when it came to modifications and information
    • most skins don’t have freckles
    • anyone having seen me will know that freckles are a major part of my appearance
    • freckles were not a problem to add, but I need to have them added on the body as well as the face, which was something that I forgot and now need to have done
    • Ms Sojourner has been very accommodating as to this request as well
    • I have bought a modifiable hair set from her as well which I have tinted and tailored to my own style
    • I am currently wearing clothes called “The Alchemist In Verde”
      • I can’t remember where they came from (later edit: they are from Silver Rose, by Yuriko Muromachi)
      • they are also meant to be worn by gentlemen, but never mind, they look good on me I believe
      • I am also wearing two-tone anthracite/black boots from Lassitude & Ennui, which are terrific
    • I feel slightly embarrassed about such vanity, concentrating on parts of myself which nobody else will ever see, but, really, not very embarrassed
  • I really need to put some of the products that I have been developing up for sale, such as the Derringer and perhaps the Flare Gun

    • and I also need to pay attention to issues relating to Second Life’s Third Birthday Event
    • it is odd when one’s reality is younger than one is

Mr Dominic Webb has been working on a different sort of power distribution system, vaguely related to my own, and was kind enough to give me a demonstration.

webb-power-2.jpg

My current power system works mostly on the basis of channels - each channel represents a discrete circuit, but since requests for and deliveries of power are delivered via llShout, there is no barrier as to distance as long as all are on the same channel.

Mr Webb’s power system works more on the basis of distance. Generators will give power to transmitters or batteries within ten metres, transmitters will give power that they have received to other objects within ten metres and so on. There is no restriction as to channel; items merely look for suitable targets within the correct range.

This means that “chaining” of power transmitters becomes automatically possible. A battery connected by two different power transmitters to a lightbulb allows that lightbulb to take power from it without modification, whereas under my system, this would not be the case (mind you, it would work automatically if it were within 100m of the power source).

I am aware that there are many readers who are interested in this effort of mine, and I would encourage anyone falling into such a category to visit Janus (6, 204) to see the system in action. Do get in touch with Mr Dominic Webb should you require further information.

Edit: Mr Webb has composed his own entry on the subject, elaborating on the process to a much greater degree.

I thought that I might experiment, yesterday, with the recording of video in SL, and thus I did so.

I have no other tool to record with apart from the built-in “save to movie” option, which I find is somewhat lacking. Whilst it will record, unless the window is set to an extremely small size, for me at least the results are unusably jerky or fuzzy. What is more, it does not record sound. But it does work, at least.

I recorded with the window at 320×240 (well, that is reasonably sized for a compact Aethernet Presentation) and then edited the results with HyperEngine-AV, adding a few captions and a relaxing soundtrack.

It is a simple piece as an experiment in the whole process, hardly art, but what I found most annoying (apart from the poor quality of the source) was the camera; with practice one can swing one’s camera around with great ease in SL so that it is positioned and pointed precisely where one desires, but each time there is a short pause, and a graceful, sweeping pan or circle of an area is rather difficult without some sort of scripted device, which I don’t have. I tried to do this manually at one point, and it was something of a failure, I’m sure you can tell where.

The best results seemed to be to gained in third-person view, holding the mouse on one’s avatar and moving it around to look in appropriate directions.

I think I may try to put together some form of gadget which automatically pans or circles a point, or spirals away from it, or has a number of different effects, though one problem may be controlling it whilst recording and not having this be visible. Perhaps a combination of control keys (say left and right at the same time) could turn an effect on or off, but otherwise controls would be left untouched.

I am not given to excessive complaint…

…well, that is not entirely true. I frequently am moved to complain about almost anything, but I find that rarely does it make any difference in practice, thus usually confine myself to bitter sarcasm in conversations between myself and associates. Really, any reader thinking that I complain at times here about the physics engine should hear me in Second Life itself.

I do like to think, though, that I am able to take a balanced view regarding changes and their import; I may have preferred some small detail as it was but really, it’s hardly the end of the world. It is also not a worthwhile pursuit badgering people with abuse regarding something, even if it is actually quite serious: “I am still extremely concerned about the changes in permissions that mean everything I own now belongs to someone else, and would like an update on when it is going to be fixed” rather than “how could you DO THIS? don’t you IDIOTS ever CHECK THINGS before releasing UPDATES? WELL???”. The former carries information, the latter is a noise, and one does not have the right in polite society to make noises at other people simply to make oneself feel better.

Having said all that, an hour or so of trying to put on and remove clothes and having to close all inventory folders and then search anew each time has driven me rather close to the line. I am aware that this issue has drawn Linden attention and thus I won’t rant about the situation (too much) but there seems to me to be a fairly simple principle at work here: if I open a folder, or select something, I do not expect the folder to close or the selected object to change until I change things myself, deliberately. If I deploy a filter and then remove the filter, I expect my view to go back to how it was before deploying the filter. That’s all, really.

I would say that this was a generally applicable principle - if I change something it shouldn’t change back unexpectedly. I am sure that there is some academic term in the field of Human-Computer Interfacing to describe it, though I am by no means an expert in that area.

Looking at this principle in the broader spectrum of scripting within SL, designers are aided by the fact that scripts tend to keep their state even if one detaches or takes an object and then re-rezzes it. It does mean, though, that one should be careful with anything that might reset a script. It is sometimes useful to have

on_rez {
    llResetScript();
}

in a script, but really, in many cases it is idleness, not wishing to update variables or indeed having lost track of all of the variables concerned. It is quite common, for instance, for scripts to keep the key of the owner in a variable which needs to be reset should the owner change, but all that means is that one needs to have

on_rez {
    owner = llGetOwner();
}

rather than having to reset everything. For simple scripts this does not matter, but I was reminded of my own breach of my principles yesterday when considering the HUD attachment that I use to plot courses for my automatic vehicles, which clears the current course and also the email address to send it to each time it is rezzed. This is not good design. (I did, in my mitigation, write that script an awfully long time ago.)

(recently rewritten so that it is more informative and not unreadable rubbish)

Hello and welcome to my new Journalling Environment! At the moment, it is a fairly basic affair, but I assure you, dear reader, that its sophistication and appearance will both improve in the coming weeks.

That now over and done with I would like to write on the matter of my latest project. I have been motivated by three things:

  1. wishing to learn how to use the new function llHTTPRequest, and finally having Hosting Space with which to experiment;

  2. the constant concern that the “Find” tool inside Second Life is a little… well, unreliable, due to it being exploited by various operators of Chairs and Roulette Wheels and other Devices. In addition, it provides little except a list of which are, in theory, the most “popular” areas, and that in itself is of limited use. Just because a place is popular is no guarantee that you will like it. After all, most people have no taste;

  3. a comment replying to one that I made on an entry in the journal Ogle Earth by Jerry Paffendorf, in which he says:

    One idea might be a dynamic mainland composed of all the most popular places (generated by time people spend there and tagging systems), so you can get the topsight view of the most interesting places all in one glance, helping you navigate what you’re most likely to like easier than just links.

Now, I think that a completely dynamic landscape, while interesting, would be extremely confusing and not something that would be very livable in for any length of time. Imagine if you woke up one morning and looked out of the window to see that your neighbourhood now adjoined somewhere completely different, because of some change in “interestingness”. It also makes little sense to me, when considering that the “sim” is an entirely artificial unit of space in any case, to change the way that sims connect to each other when spatial relations inside each sim remain the same. Sim boundaries should, really, be entirely invisible to residents, with only the name of the sim changing, and the way space operates across them should thus be the same as it is inside them.

I did, however, become interested in the idea of sim tagging, and so I thought about a system which would allow for this. I came up with a simple HUD device with four buttons. One gives the user an informative notecard; one sends the user to the web page listing the tagged results (more on that in a moment); but the most important ones are marked “Vote” and “Clear”. The idea is that the wearer clicks “Vote” if they like a sim they are in for whatever reason. Perhaps they think it is beautiful, perhaps they like a shop there, perhaps they live in it, perhaps someone has paid them to, it doesn’t matter.

That vote is then sent to the voting server via an HTTP request and recorded. The data gathered are visible from the sim voting results page on this site. The initial page of this is simply a list of sims ordered by votes received - something which I might remove, it doesn’t really give much useful information as to quality - but there is a link marked “similar” by each sim name. Clicking this will send the viewer to a page listing all of the other sims that people who voted for that one have voted for, ordered by the total number of votes. For example, here are sims that people who vote for Caledon also vote for.

Note also that there is a “visit” link by every sim, using SLurls, allowing easy travel.

Given enough data from users, I think that this has the potential to be very handy in suggesting places to visit based on places that you already know you like. I have always found “people who bought this item also bought…” services very interesting and useful in other contexts, myself.

If you would like to participate in this it would make me extremely happy. The system requires a large number of contributors. You don’t need to spend ages marking every sim that you like and keep the HUD on all the time - if you only visit some of your favourites and vote for them now, then forget about the whole thing, that would still be terrific. And if you do obtain one of the objects, do consider giving it to any friends of yours who might also be interested - it is free to copy and transfer.

The HUD is available from:

The Caledon Tram is now complete. Well, it is at least running, trundling the streets of Caledon, Caledon II and Port Caledon and occasionally stopping and tinging a little bell for folk to jump onto it. It is also operating, it seems, reliably, which is really rather important for public transport and something that I wish would be more appreciated by Transport Ministries in the Other World.

It has taken me some time to script this device, which perhaps it should not have, given its relative simplicity. The core of the tram is the same notecard reader which powers my balloons (the Touring Dirigible is still at the Lighthouse, incidentally) but the movement is, this time, nonphysical, as I believe I have mentioned before.

I recently discovered that there are people unaware of the difference, so, a quick description: physical movement involves physical objects, which must pass through intervening space, may collide with other objects, bounce off them, twist through the air and so on. One can set the physics flag on an object quite simply from the “edit” menu, and then grab said object and throw it about if you so desire, or use scripting functions to apply forces to it. Physical Non-physical movement involves nonphysical objects, like the majority of the scenery that you see around you in Second Life. These can be repositioned using the function llSetPos, and rotated with llSetRot. They do not react to the presence of other objects unless scripted to, which explains why, if one stands in front of the moving tram, one is not actually flattened by it but instead startled as it passes right through one’s body.

The tram’s linear motor is really a timer that triggers a number of subscripts via linked message, each one calling llSetPos to move it a tiny distance ahead, so that the overall effect is of relatively smooth movement… this is not actually as smooth as physical movement but in practice, not so bad. One peculiar quirk of nonphysical vehicles seems to be that, if someone is actually controlling them directly, they traverse SL in a manner far more smooth than if they are without a controlling avatar… however we do not really have the option of a permanent tram driver (perhaps, a profession for new residents in the future?)

The instructional notecard mostly contains a series of waypoints between which the tram moves, and its behaviour is predictable upon reaching each one:

1. read for the next waypoint;
2. find out its direction relative to the current position;
3. turn on the spot to face that direction;
4. repeatedly move forward a small fraction of that directional vector until reaching it.

The turning part gave me an appalling headache and the process exemplifies, I think, the simple principle “don’t believe anything you tell yourself“. The sub-process of turning can be laid out as follows:

1. which direction am I facing in now? (llRot2Fwd(llGetRot()));
2. which direction should I be facing in? (llVecNorm(targetPos - llGetPos()));
3. what is the angle between these two directions? (llAngleBetween(direction1, direction2));
4. if this angle is not within one turning increment, repeatedly rotate around the Z-axis by that increment in a suitable direction until it is;
5. do one final rotation to face the target.

Now, clearly if the destination is clockwise of the actual facing of the tram, one should turn clockwise, and similarly for anticlockwise, or the tram will spin around far too much and look daft. However, and here is the embarrassing bit, I had become convinced for some unknown reason that llAngleBetween would return a value greater than PI if one vector was to the left of the other. I have absolutely no idea how I decided that this was the case since it isn’t, but I had taken that as one of my hypotheses and did not question it for ages, with the result that the tram rotated on the spot in an annoying fashion with me shouting “ARGH WHY ARE YOU DOING THIS YOU STUPID THING” when in fact it was I who was the stupid one. Let this be a lesson to you, dear reader - we are all idiots, particularly me.

The tram, however, regardless of script untidiness and possible improvements, is now running, and people have told me that they enjoy riding it and find it a most pleasant addition to Caledon and that makes it all worthwhile. (I have been invited to possibly develop a similar system for Second Life’s Third Birthday Celebrations, so it may reach a wider audience.)

~ * ~

Whilst I did script the tram, the actual building and texturing work was done by those master craftsmen Reitsuki Kojima and Shaunathan Sprocket, and it is they who one needs to thank for its elegant two-wheeled steam-powered design. Scripts are nothing without an actual tram to put them in and those gentlemen deserve the lion’s share of praise. If it were left up to me doubtless the trolley would be a box with rivets on it, and nobody would think it pleasant to ride at all.

~ * ~

Those of you hoping for a view of my Stretched Metaphor may have to wait for a little while, as I have become distracted, but I can tell you that it involved eggs.

The Aethernet company “Yahoo!” have apparently closed my account with their “GeoCities” service, on which I was storing certain script files referred to in this journal.

Despite my annoyance I know better than to try to argue with an enormous corporation based on another continent with undoubtedly no interest in my affairs whatsoever, and thus I will be looking for alternative storage of some sort. In the meantime, cached versions of these scripts can be found through the services of another enormous corporation based on another continent with undoubtedly no interest etc:

I have also been informed that this journal is of Most Peculiar Appearance when viewed with a peculiar, antique Aethernet Browsing Device known as “Internet Explorer”. Imagine my surprise upon discovering that this malfunctioning gadget is actually amazingly popular! I cannot for the life of me see why it is that this “i.e.” (as I’m told it is abbreviated) refuses to correctly draft my writings, but clearly something must be done, thus I have changed the journal’s appearance temporarily until such time as I know what the necessary modifications might be.

I regret boring you, dear reader, with these mundanities but I feel that notice needs to be given. I shall however be boring you with relative non-mundanities forthwith. Hamlet Au’s latest post regarding Laukosargas Svarog’s virtual ecology has reminded me of a few further developments of my own humble system of more technological ecology which I have been mulling over, and feel that the time is right to now mull more publicly. Be warned that the piece contains possibly the most strained metaphor ever attempted.

**Edit** (2006-06-11): Botheration. I left it too long to take copies of said scripts, and now they have disappeared from Google’s cache, it seems. I shall have to get them from the actual objects in-world. Most vexing.

Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.