Articles by Ordinal Malaprop

You are currently browsing Ordinal Malaprop’s articles.

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.

I am a patient soul. One has to be if one wishes to appropriately instruct the Difference Engine. I am quite prepared to manipulate symbols for hours on end to make the forthcoming Caledon Tram operate consistently, and have done so already, for many, many hours. At the moment all that it lacks is smooth rotation at its turning points, which should be a simple task, even given that, as my fellow scripters will know, Quaternions are the Devil’s Work and very easy to make mistakes with.

Something I am not prepared to put up with is the ridiculous frequency of unconnected problems whenever I require to test the latest version of the tram, freezing, slowing down, moving in reverse on occasion, or simply being thrown out of the universe and having to re-enter. I am sorry. As I said, I am a patient soul, but this is…

*marshals self, removes unladylike language*

nonsense. One might as well try to build things in Rausch, where at least the random removals of oneself from the area have understandable reasons behind them, enthusiastically hostile fellow-travellers. Here, it is the blind universe that I am fighting and I do not like it.

Perhaps one should only be creating small, portable things, or ones which do not move around a lot.

As per a suggestion by AngryBeth Shortbread, I have this morning been playing with an Engine-driven system that attempts to match one’s features to the most appropriate star of stage or cinematograph. I have to say that I am not entirely convinced by the results; repeated use with various pictures resulted in the following being judged most similar and appearing most often, the more common on the left:

large headshot 2.jpg
Christina Ricci, for comparison
Christina
Ricci
Or possibly Rani Mukherjee
Rani
Mukherjee
Christy Turlington?
Christy Turlington

I must say that one thing that I have never been told in Second Life is that I look like Christina Ricci, and I think it unlikely that I ever will. Still. Diverting.

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.

Well, it has happened: I have finally divested myself of my mainland property. It was really getting to the point where maintaining two plots simultaneously was becoming an absolute chore.

I shall now be dwelling on the island of Caledon, though do by all means visit my old address to see what has been done with it. I have sold the land to my neighbour, aliarna Deladda, part of a very pleasant group of people whom I am certain will not be filling the place with horrible advertisements, but rather will put it to good use, which was a major concern of mine.

It does not seem too long ago that Ms Deladda first arrived in a plot of First Land right in the middle of my Theretra area, and I confess I was a little annoyed at the time, as I had been planning on taking over that plot myself. However, one must have manners, and she was (and remains) a perfectly reasonable person - there was certainly no rancour, and after an introductory chat I was perfectly happy. A degree of land-swapping took place after this, with which I was quite happy, maintaining a contiguous plot for myself and for the growing group to the side of me.

Eventually I decided that the time was right to remove myself from the mainland, where I had been since bought First Land, expanding and consolidating. Given my well-known objection to land spammery I was most concerned that the area would not become a burden to my neighbours, thus offered it to them for what I feel was a fair price. And today we have concluded the sale. That corner of Theretra is safe from spinning ad cubes. Good luck!

Permit me a little moment of nostalgia here. It has only been, what, less than six months, but in Second Life that is an awfully long time.

I have been informed several times in the last week that my Touring Dirigible in Caledon has been found in peculiar places. Some of these places are understandable - say, trapped in a tower which has grown somewhat since I last plotted the course - but some are frankly inexplicable. For instance: even given the vagaries of the physics engine, how could a dirigible find its way inside the top floor of the Academy, when it is actually too large to enter?

I suspect that some person has been taking pot-shots at my balloon. This is not a pastime that meets with my approval. I have therefore put into place further scripting which will enable me to locate any such culprit should this occur again (as well as raising the travelling height of the balloon somewhat).

Further on the subject of balloons, various of the landed gentry of Caledon seem to have become recently most interested in the practice of diplomacy, manifesting itself in the construction of gunboats. Whilst I am at heart a peaceful soul and wish no part in imperialist endeavours, I clearly cannot let such a craze go past without contributing in some small way, lest my reputation as a gunsmith suffer.

Gun balloon Gun balloon firing

Hence the Ordinal Gun Balloon, built around a giant cannon somewhat reminiscent of my Engine Rifle, though much larger. A most diplomatic device, I’m sure you will agree, though pedestrians should be aware that it is, well, almost impossible to actually hit anything smaller than a wildebeest, except perhaps by accident.

To be honest the building was largely inspired by my desire to build a vehicle that utilised Mouselook for its guidance. Whilst not in Mouselook, one controls the Gun Balloon fairly conventionally, rotating it, moving forwards and backwards and the like. Whilst in Mouselook, however, the balloon orientates itself to point in the direction that you are looking.

This is not a terribly complicated effect to achieve at heart, merely requiring the use of llSetVehicleFlags(VEHICLE\_MOUSELOOK\_STEER);. However, I was somewhat perplexed for a while as to how, precisely, to get this to work. The mistake that I was unknowingly making involved the angular motor. The Wiki is fairly clear on this, but I had, ahem, not actually read that section.

For the direct information of those reading though, the issue is that the value of the angular motor whilst VEHICLE\_MOUSELOOK\_STEER is active is not actually the value of the angular motor, as such. Instead, the angular motor is controlled entirely by the direction that the avatar is looking in and its difference from the vehicle’s current forward X-axis - and the value of the angular motor is in fact a scaling factor for this. So, if one uses:

llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION,
<1.0, 1.0, 5.0>);

whilst Mouselook Steering is active, rotation about the vehicle’s Z-axis will be five times more responsive than about other axes. Being the silly sausage that I am I was regularly setting the angular motor to zero, thus cancelling all of my piloting mouselookery completely.

~ * ~

The vital issue of suitable hats, though, has not been satisfactorily addressed in Caledon to my mind. One cannot have naval vessels, aerial or otherwise, without appropriate headgear, and, to be frank, epaulets are needed as well. Hats first, diplomacy later.

~ * ~

I am aware that I seem to be spending less and less time here writing on the subject of the actual mechanics of scripting. I am not precisely sure why that is, but to be frank, I suspect that it is because I am now past the stage where I am constantly encountering new functions within LSL of which I was not previously aware, and am now more at the stage where one wrangles with reality itself, using the functions as a tool with which hopefully to beat the laws of physics into submitting to one’s will. Quite frequently, of course, the capricious spirits governing the natural sciences within Second Life merely laugh at the feeble attempts of mere mortals to achieve their goals, and there is little that one can do against their will.

I was wondering whether one could take a different approach to trying to beat them with Science, and instead try to appease them. Praying to their masters is sometimes effective but again, a slow process. I thought, for instance, that one might have a vehicle which, upon approaching the famously haunted borders between Sims, began a ritual chant and perhaps lit some incense. I am not quite sure what sacrifices the Spirits Of The Physics Engine really appreciate - they certainly seem to enjoy taking my balloons, so perhaps a set of smaller balloons could be launched to meet their approval.

I have found, on this subject, that when a dirigible is crossing these boundaries, if it slows down to a walking pace and begins to repeat a mantra, it is much less liable to being thrown into the centre of the Grid or otherwise discombobulated. (One cannot actually hear the mantra, but trust me, it is repeating it within its little scripted mind.)

~ * ~

I must mention finally the most appropriate movement by certain of those with Power in Second Life to remove the detritus that silts up the Events listings, sometimes involving the presence of a green and purple pony. I am not one to criticise potted meat, a fine invention, but really - it is appropriate for sailors, explorers, students, not lists of Events, where one should be able to find unique occurrences rather than simply folk playing baccarat or whatever it is people do all day in casinos.

Now, if you will excuse me, I must return, as I wish to speak to Mr Shang on the subject of a noticeboard for residents.

Or maybe not.

*drums fingers*

One thing that always amazes me that anyone has ever heard of me in Second Life at all. I fear that I shall never get over the idea that anyone might remember my name or, for that matter, know it without me having met them or annoyed them in some way. I am most gratified whenever anyone does, believe me, but each time I am quite astounded by it.

Me on a tarot card

The above came to mind when I was asked by the very talented Tateru Nino to pose for the illustration on the Tower on a Tarot deck. Of course, I was immensely flattered to be asked, and I think that it ended up rather well - you can see the full set on Dwell On It. I think it’s a fascinating thing to interpret the Tarot in the medium of Second Life avatars; an activity that I am proud to be connected to. Torley as the Fool is particularly good.

I am not an expert in the Tarot and certainly not in the meaning of the Tower card, but I see from Wikipedia that:

> * To some, It symbolises failure, ruin and catastrophe.

> * To others, the Tower represents the Paradigms constructed by the Ego, the sum total of all Schema which the mind constructs to understand the universe. The Tower is struck by lighting when Reality does not conform to expectation.

> * Epiphanies, transcendental states of consciousness, and Kundalini experiences may result.

Hm. Well. This is not intended to be a conventional interpretation and thus I will not take the “ruin” elements to heart. My Lighthouse has yet to be struck by lightning, though Reality has commonly failed to conform to expectations, mostly on the matter of physics and sim boundaries.

~ * ~

Recently I have been doing many things, as always, but today I decided to take a break from speculative technology and concentrate on something that I find strangely relaxing - the replication of antiquities in Second Life.

It is a good test of one’s skills to attempt to create a functional duplicate of an object that exists in the “Real World”, and it is ideal for those moments when one is not feeling desperately inspired and full of ideas for novelties, as all of the details are already there. In fact, quite often during the process one comes up with an idea for something entirely different. Just as the way around Writer’s Block is to write, so the way around Creator’s Block is to create.

This Sunday I decided to build a replica of Dr Watson’s service revolver, something which would be of interest to a few people, I judged. There are different opinions as to precisely which model this would have been, but I settled on the .455 Webley as my choice. In actual fact I based my model around the Mark 6 version, which was only created in 1915, but don’t tell anyone that. They all look rather similar in any case.

Webley pose 5.jpg
Webley closeup.jpg
Webley broken open on table.jpg

Being myself I couldn’t help but add a series of features once the basic design and texturing were complete, so the revolver, apart from firing bullets as one would expect a revolver to, now

* has a selection of various sampled sounds attached to it;
* has custom animations for holding and firing the weapon, as I can’t stand the default ones;
* has muzzle smoke;
* breaks open when one has fired all six rounds, ejects the empty cartridges (which fall to the floor) and animates one’s avatar to engage in reloading.

You know, if one is going to spend hours scouring the Inter Net for textures and images, one should at least also spend some time scripting suitable behaviour for the device.

A couple of antiquarian friends of mine with a particular interest in antique firearms have indicated their approval of the final product, and thus I think I shall put it out for sale forthwith. To return to my original theme, that is the other thing that continually surprises me about Second Life, the idea that people will actually pay good Lindens for things that I create. I should hope that they would as I have already spent several hundred on textures, animations and sounds for this one item. It is not just a question of one payment for each component, either - it is impossible to tell whether an animation appears just right, or whether a sound seems quite appropriate, before one has uploaded it and paid to do so.

~ * ~

Now, if you will excuse me, I must return, as I wish to speak to Mr Shang on the subject of a noticeboard for residents.

Incidentally, I am selling my land in Theretra. If anyone wishes to buy a continuous plot of land there with amenable neighbours, please do contact me.

One of the things from which I have gotten the most amount of use recently is an Event Monitor. This is a very, very simple device. All it does is:

1. listen on a particular channel, in this case -122;
2. add anything said on that channel by an object with the same owner as its to a string, with a timestamp;
3. email said string to a particular address once it has reached a certain size, or when a new day has been reached.

It’s really amazingly simple to do - not being in SL right now, I haven’t access to the code, it is available from my free vendors - but if one has a number of different interactive parts of one’s build, there is nothing simpler than to add the line

llShout(-122, name + " has touched " + llGetObjectName());

for instance, allowing one to monitor how many people are interested in that object, whether it might be in an inconvenient place, and so on.

Even more information can be gathered by the use of volume detect objects. For the uninitiated, the use of llVolumeDetect turns an object phantom, and triggers collision events as appropriate whenever anyone walks through it. Such a thing is perfect for monitoring who is going where in one’s property. On that basis I have also placed a doorway monitor object in the free vendors, the script being fully commented, which will tell a main event monitor whenever someone enters or leaves a building.

Once one has an event monitor set up it becomes almost routine to add a notification to any script with which a visitor might interact. I have it in various places around my property, as well as in all sorts of touch scripts and others - for instance, the free vendor incorporates it so that I can tell who is taking what. (The Block Rezzer seems to be popular for some reason. Well, it is quite amusing I suppose.)

The result of all of this is a deeply seductive voyeuristic experience. I look forward to the reports each day, telling me who has gone where and touched what while I have been asleep. I am not entirely sure that this is healthy.

I would just like to say that I cannot believe that anyone took the time to score 770 on my Steel Pigeon Projector. I re-engineered it to record the highest score so far, and clear the scoreboard every day, but really. 770? Even if all of those were double-scoring red pigeons, that’s 335 of them to be shot down.

*shakes her head in amazement*

Still. I certainly mean no criticism. If it is seen as entertaining enough, then by all means shoot as many as you desire… they feel nothing, it is not cruel.

Seeing as how my Duelling Pistols seem to have attracted some interest, I have put the entire system up for sale for anyone wishing to take advantage of it themselves, with a few modifications:

* Custom poses exist (for those who have not seen them as yet);
* The powder load is now variable, to deal different levels of damage, and can be selected by the duellists concerned;
* Pistols for retail, as standard, can be reloaded from any ammunition box, or their damage changed using any damage selection device. If anyone wishes to have pistols that will only respond to objects owned by a particular person (as is the case on my Duelling Ground - one can only load the free pistols from my cartridges) they need only make the request and I will be happy to create pistols modified to their specifications.

duelling_pistol_03.jpg duelling_pistol_06.jpg

The Duelling Pistols crate comes with all of the devices required for a duel, as well as two pistols, one copiable (for the owner) and one transferrable (to be passed to his or her opponent). Additional transferrable pistols are a mere L$25 apiece.

~ * ~

Commercial announcement completed: I can now speak on other matters. I was pondering possibilities regarding the Following Camera in Second Life, and found it odd that it was always the movement of the camera that was determined by the direction of the vehicle or person moved, which would tend to ignore the camera angle. Why not the other way around? Or near to it in any case. With this in mind I built a Giant Glass Pinball.

Giant Glass Pinball

Englobing oneself allows one to move around by changing flux density in response to the Grid’s magnetic field; so nothing unusual there, then. And there is some fun to be had just from bouncing around the landscape and watching oneself spin dizzyingly. However, one will notice when using one’s forward, backward, left and right controls that they move in relation to the current camera position. Forward will move you away from the camera, backward towards it and left and right perpendicular to its direction. (The pinball has been modified so that it will not launch into the air or attempt to drive itself into the ground, though by bouncing off solid objects one can achieve some amusing heights and tumbles.) Thus if one holds down the backwards key, one will repeatedly travel towards a certain point, pass through it and then go backwards.

The suggested process to see this properly would be to rez the Pinball, move the camera to a suitable position - I would suggest a high-up one - then Englobe oneself, locking the camera there. It can be released for repositioning or locked again by simply touching the Pinball.

It should be noted that this is not technically a vehicle at all, merely a physical object propelled by llApplyImpulse, and as such its facing is entirely irrelevant, as can be seen by the peculiar angles that one englobed within it finds themselves at.

The Pinball may be found in the Gadgets dispenser at either the Laboratories or Ordinal Enterprises, along with whatever other ridiculous things I’ve made since the last time I wrote here - I think there was a drunkenness attachment as well, for instance. I am sure that regular readers know the sort of nonsense that I tend to create.

Ordinal Enterprises is proud to announce an Easter event of sorts: the Easter Egg Cannon.

Easter Egg Cannon

Merely find and touch the above device (which should not be a matter of great difficulty) and… well, what to do should become clear.

I am not planning to make a huge amount of steam-powered confectionery in the future, and know of no-one else in the business of doing so, thus this will likely be your Only Opportunity to acquire such a thing - and for No Charge! How can this be resisted by a rational lady, gentleman or other?

(go there directly)

Product not for internal use. Ordinal Enterprises is not responsible for diabetic comas or coal poisoning.

Edit: Well, if you, the reader, did not pick one up, I fear that you will never obtain the item. My apologies, but I did say that it would only be available for a limited period.

I had thought that I would wait until I had actually completed something new related to the power generation system before I made another post but, with typical dilletantism, I have done very little on that front, preferring instead to:

(a) build a scanning device to detect the “Magic Money!” items, which have been spoiling the pristine look of much of the grid, or, more realistically, adding three more ugly, shiny, spinning, exploitative prims to the environment. This device is available, with full permissions, at both of my locations for No Lindens At All, and whilst these particular parasites will not be in existence forever, the device might at the least prove educational for anyone wishing to look at a basic sensor device that also uses a dataserver call;

(b) play with chemical weapons. Ahem. ‘Tis nothing unethical. Unfortunately, I have been encountering some quite significant problems with the basic Engine of Second Life here, and I will wait to see if that can be resolved before posting on the matter of the simulation of the physics of gas clouds;

(c) creating a Duelling Field. Once paralysed by peculiarities of the physics Engine, I decided to concentrate on something a little more conventional, the creation of an area specifically for duelling - the settling of scores by the skill of arms.

I have created an area specifically for this purpose, just across from my rapidly-expanding home in Theretra, at Theretra 177, 168, 98. What concerned me (apart from a simple “ring out” system) was that weapons should be balanced for this purpose, and so I have provided duelling pistols for general use.

These pistols are designed in a manner such that their activities are easily documented. One can only load them with bullets by touching a specific ammunition box, and every bullet loaded causes the pistol to say on a public channel that it has been loaded, and with however many bullets. Thus, one can always be sure that one’s opponent is keeping to the correct rules.

In addition, the pistols will publicly state when the wielder has been struck, so that there can be no doubt who has drawn first blood. (It must be said that one can also use one’s own weapons in this area, there is no requirement to use mine.)

The matter of shield devices has been concerning me. Most shields are gaudy things that are quite noticeable, but it would certainly be possible to have one that merely nudged an approaching bullet out of the way, and this would be difficult to detect. I am working on this particular issue. I also have a rapier that is usable for less clumsy, random duels, and I will be putting this out for general use in the near future.

Edit: The duelling system is now for sale.

~ * ~

I would like to mention before closing that Roger Wake has used the windmill code to build his own wind turbine, of a more modern nature, which you can see at Arah 76,147. I am extremely flattered that my scripting has been of interest to others and would encourage anyone to visit this particular creation.

As mentioned, I constructed a windmill that draws power from the movement of the wind, and was considering also building a solar panel, but then I thought: what sources of renewable energy are exclusive to Second Life? Why limit oneself to those existing in the Other World? I therefore created the latest generator, one that taps energy from the movement of frames. After all, frames mostly do nothing, there is plenty of excess power there for the taking. As long as the framerate remains high, it will continue to generate a reasonable number of Ordinal Energy Units.

One can find these items, as well as the battery, in the Engine Room at the Caledon Lighthouse. Please feel free to take a copy for your own examination. At the base of the lighthouse is a transit chair to take one directly there - one can also fly upwards, should one not have a great sensitivity to banging one’s head.

~ * ~

A couple of other things of minor note: a neighbour of mine in Theretra very kindly offered to swap her plot (which was right in the middle of my other land) for a part of mine next door to it, which was advantageous for the both of us; I now have a large, continuous piece of land, and she is right next door to her friends without my firing range getting in the way.

I was not too sure as to what I was going to do with the increased area. I did have an idea concerning a ruined “steampunk cathedral”, but a problem one faces when constructing things out of geometric primitives is that it is hard to actually make rubble without it involving a vast number of them - and so in the end, I simply built a sort of non-ruined cathedral.

It doesn’t look terribly like a cathedral from the outside at the moment - I would like gargoyles and similar flim-flammery, and more rivets are clearly required - but I am running out of prims I’m afraid, and I do actually wish to put some objects inside it as well. Inside, it does, at least a little more. My plan, vague as it is at the moment, is to incorporate much in the way of gears and machinery, and also a miniature museum of computational history. (I’d like to build an Enigma machine in LSL, for a start.) It may, however, be a little blocky in appearance.

This would all be a lot easier were the land next to me not apparently Linden-owned, but set to sell to only one person. Dash it. There are several plots in that state nearby and, while on one hand I relish the peace of empty plots and dread the appearance of some appalling casino or other lag establishment, on the other, if I wish to extend myself I need to be able to actually buy these things. I could purchase random plots around Theretra simply for their prim allowance, but I would prefer to have continuous land, as stated above.

If only my prim mine did not simply distribute prims to other parts of the grid, but rather allowed me to keep them. I should really have thought of that, I now see.

~ * ~

Ah. Yes. One final point. I did also speak with a gentleman on Sunday who was interested in my Touring Dirigible script, visible in Caledon at the moment. I promised to inform him when said work was publicly released, only, rather predictably, I failed to take his name down. I do most humbly apologise and would ask him, if he is reading this particular piece, to contact me forthwith. ‘Tis not actually publicly released as yet, but likely will be shortly, as soon as I decide on a price and arrangement for it. Clearly it should be copiable, as vehicles are prone to all sorts of mishaps, but on the other hand, should the smallholder wishing a brief tour of his or her land pay the same as the landowner using it for ferry tours across multiple sims?

Oh, Second Life is too short to worry about such stuff. I shall just pick a sum and sell at that.

As is so often the case, the butterfly nature of my mind has led to me completely forgetting to continue work on any of my past projects, and I have, instead, been working on something completely different today - a power distribution system. Clearly if one needs to have such large items as a lighthouse lamp working, one needs a power source, and as of the current moment, it is powered by a windmill.

Windmill close-up

The windmill itself generates electrical power which is then transmitted to, and stored in, a battery of my own design. (All power connections are safely buried underground or otherwise well insulated, do not be concerned.) The lighthouse then takes energy from the battery whilst it is lit.

Windmills do not actually generate an awful lot of power, but I take advantage of the peculiar cycle of day and night in Second Life here. Astronomers have calculated that a day lasts for three hours, whereas night lasts for only one - thus the windmill has three times the length of the nighttime when it is not required to power the lamp, and can therefore charge the battery.

For any parties interested in how this particular arrangement is scripted, it is a fairly simple three-part arrangement of shouts and listens. Only one permanent active listen is required, in the battery itself, on channel -70809.

Generator objects such as the windmill send energy to the battery by shouting a positive number on this channel. The battery then adds a number of OEUs (Ordinal Energy Units) to its store. At the moment, it is limited in capacity to 100,000 OEUs - more than this is released as a harmless shower of particles, though I would not expect it to ever get there.

Battery in lighthouse

The windmill’s script is more complicated as it also alters the speed of the rotation according to the current wind velocity, and produces different amounts of power depending again on wind velocity, but a simple example of this sort of object would be the Etheric Generator, a fairly simple device producing energy through ambient ether flow (unfortunately, not powerful enough to light the lamp).

Consumer objects such as the lamp request energy from the battery by shouting both a negative number and a randomised channel for a response, for example “-300,-2379845″. They then start to listen on their randomised channel for the battery’s reply, because the battery might not actually have enough energy to fulfil their request. The battery removes either the given number of OEUs from its store, or all of the remaining ones, whichever is less, and shouts back the number of OEUs provided.

Flare Bulb and Etheric Generator

Again, the lighthouse lamp itself is rather more complicated than is necessary to illustrate this point, seeing as how it must also rotate and check for sunset and sunrise, but I have constructed a simple and inefficient Flare Bulb which takes power and wastes it by merely spitting out particles.

At this point, you, the reader may or may not be curious as to the scripting of these things, and in case of the latter you may see relevant scripts in the “Power System” category of my “Ordinalpedia”.

So relatively simple, but more interesting things could perhaps be done with these basic principles. Note how the Flare Bulb only requests power once per minute usually, for efficiency, but if it does not receive its maximum, it will request more power once that has run out. On the matter of efficiency, as long as we do not have dozens of these devices or ones running at high timers, there is only one open listen, and the system should have relatively little impact on sim performance I would judge.

- - -

What is the purpose of this, I hear the gentleman at the back ask? Yes, you, sir. You look to me like some sort of clerk or other man of business, possibly even an accountant. Where is your soul, sir? Do you have no appreciation of the joys of simple creative activity? Begone with you, and run through the park with no shoes on until you have re-united yourself with the pleasures of experience rather than commerce, or until you tread on a squirrel, at which point you may stop so as not to cause further harm.

The latest version of the model of the proposed Steampunk Sim can now be found in the back garden of the Manor at Caledon.

Steampunk Model - new home

The old location has disappeared, but this is a more appropriate place. Whilst there, why not visit Ordinal Enterprises and take advantage of the Steel Pigeon Projector (plus free rifles for sporting folk) or perhaps, take a ride on the Touring Dirigible, newly updated to process around Caledon?

Yes, some actual scripting posts soon. I have been working on a polite “Do Not Disturb” notifier which simply tells visitors that you do not wish to be bothered and would prefer it if they would leave - a civilised alternative to security devices. More significantly, I am also writing a key database system, which will allow one to store a practically indefinite number of keys, using linked scripts and rezzing of more when necessary. And there are always other projects on the hop, as it were.

I have to say that, while the update to version 1.9 has been delayed for three hours, which will likely cause my fingernails to become practically non-existent, looking at the video by Ben Linden regarding camera controls - a sizeable Quicktime file - gives me hope that I will be able to tailor the view inside of the lighthouse to make it perfectly possible to view the interior, rather than the visitor’s camera bouncing through stone walls in an unfortunate manner. This should be an extremely interesting thing to play with, in any case. Top show, Linden Labs! (At least I say that now, on the assumption that other problems will not be broken. It does not do to take a negative outlook on these things when one has no hope of actually affecting the outcome.)

I foresee that it might perchance become used a little much generally, but hopefully the necessity to script it will restrain some of the more egregious uses. And of course, one can always refuse to allow an interloper to control one’s worldview.

Edit: Well, looking at the details, it appears that only attachments and vehicles can control the camera as yet, which is something of a blow. But I’m sure something will arrive at some point. Meanwhile, there are other things to consider.

Recently I have been spending most of my time in Caledon, where one can be assured of good and polite conversation and fine design. I do occasionally pop back to the mainland when I wish to design something that explodes, but not too often these days.

I referred earlier to my confusion as to what to do with the plot; this has not really disappeared. Mr Desmond Shang, the landowner, provides every resident with their choice of one of his fine houses - I originally selected the Fogg Residency, which is extremely impressive but also, well, far too large for me, really. For a while it sat there, intimidating me with its immense open spaces, and while I made some pathetic efforts to furnish it, it became clear that I was unlikely to ever do so in a manner that would satisfy me.

There are those that have an instinct for interior design and the building of furniture, and I am afraid that I am not one of them. I can also be both ridiculously perfectionist and extremely tight-fisted. I was aware that I would not be able to build enough quality furniture of my own to decorate the place, and I was not prepared to spend the time and Linden Dollars necessary to select and buy it from others. (One might contrast all of this with Mr Gould’s fabulous work on the Manor nearby - well worth seeing.)

I therefore removed the Residency (do not be concerned, it is still in my inventory and shall doubtless find its way out at some point in the future) and engaged in some extensive landscape gardening.

The Lighthouse, Caledon

The relatively flat terrain of Caledon has now developed a small hill, atop which is a lighthouse. I think that a lighthouse is a more suitable home for an inventor, really. As noted on the photograph above, the top deck, designed for socialising, supports one of my Champagne Waiters (now for sale) and a small table, though should really also have some chairs and perhaps a telescope. The lamp itself detects the rise and fall of the sun and, once it dips below the horizon, lights and begins to rotate. Inside the tower one can find transit chairs to take one to the different decks, as well as a vendor of my free items.

The issue that I have at the moment is that I have decided to begin a small career as a merchant, and really, the inside of a lighthouse is not a particularly good commercial environment. It is difficult for a customer to look around without their viewpoint going outside of the tower and their being presented with a blank stone wall, unless they enter mouselook, that is, in which case they lose many of the camera controls that they are used to. Baffling one’s customers is not a terribly effective commercial strategy and thus I think that if I am to sell any of my creations, an exterior building might have to be, well, built. For the meantime I will be placing them in a separate vendor.

For posterity, here is a short list of other things that I am working on or plan to release soon:

* A non-physical ground vehicle script, enabling a design to be more stable and controllable than current ground vehicles in Second Life (which are, well, not) and also of greater than 31 prims. This works fairly well but unfortunately ignores the presence of other objects, which is amusing but not that desirable. I think it may emerge that physical vehicles and flattish terrain are the best solution. Given this, I expect that I shall be putting out the script for general inspection as a freeish item.

* A bubble machine, and associated scoreboard which counts the number of bubbles popped. I may have mentioned this earlier; it was a toy that I was working on a while ago and recently remembered. I find it rather diverting and others have as well. This will be appearing at my home area and in the appropriate vendor.

* I have also put my Steampunk Car up for sale, a large and unwieldy vehicle that nevertheless some people expressed an interest in. I think the wheels need a little work, as they are currently unsupported by spokes of any sort and look a little bizarre.

* The Cranial Pistol, a concealed device mounted on the side of the head. Upon entering mouselook, an protective monocle and barrel appear, and one can fire a series of small, somewhat inaccurate projectiles. This will be another that I shall be selling closer to market prices.

* I shall also be putting out the Mk909 Engine Rifle, which I really must stop fiddling with and just sell for heaven’s sake.

* I had a request for a simple chat relay script - a chat relay is a device that allows the owner or another person to listen to speech from an area that they would not normally be able to do so. For this end I here publish two scripts - a simple chat relay, and an advanced chat relay which detects whether the owner is offline or within range of the relay device already. Be warned! Simple as it is, this script can be used for surveillance, which can land one in trouble should those being eavesdropped upon not appreciate it. Pay attention to propriety and simple good manners.

* And probably a number of other things which I have entirely forgetten.

Oh, I nearly forgot! The makers of SLurl have now officially incorporated my SLurlBuilder page into their site - thus no longer will one have to visit scrappy Geocities in order to access it. I have added a SLurl for the Lighthouse at Caledon to the side of this journal in honour, and hope to continue using this fine service whenever referring to a place in Second Life.

I am most gratified by the number of people who have mentioned to me, during conversation in Caledon and elsewhere, though mostly in Caledon itself, that they have read this particular “blog” and, amazingly to me, continue to read it and even find it not completely worthless. Dear reader, your correspondent is most flattered indeed, and will certainly try to continue producing whatever it is that people actually come here for.

As to my current activities, well, I have been and continue to be somewhat busy, though not producing an awfully large number of actual products as such. One thing I have done is construct a Pepperbox Pistol for Professor Jefferson Gould. This is a six-barrelled firearm, designed to be used at close range, perhaps across a poker table.

A pepperbox pistol, from both sides ‘George Bemis . . . wore in his belt an old original “Allen” revolver, such as irreverent people called a “pepper-box.” Simply drawing the trigger back, cocked and fired the pistol. As the trigger came back, the hammer would begin to rise and the barrel to turn over, and presently down would drop the hammer, and away would speed the ball. To aim along the turning barrel and hit the thing aimed at was a feat which was probably never done with an “Allen” in the world. But George’s was a reliable weapon, nevertheless, because, as one of the stage-drivers afterward said, “If she didn’t get what she went after, she would fetch something else.” And so she did. She went after a deuce of spades nailed against a tree, once, and fetched a mule standing about thirty yards to the left of it. Bemis did not want the mule; but the owner came out with a double-barreled shotgun and persuaded him to buy it, anyhow. It was a cheerful weapon–the “Allen.” Sometimes all its six barrels would go off at once, and then there was no safe place in all the region round about, but behind it.’
- Mark Twain, “Roughing It”

I have decided to make all of my projectile armaments use (at least) two seperate scripts in the same prim for firing and control, as this eliminates the awkward and somewhat unpredictable sleep after each projectile is rezzed. One script is merely something along the lines of the following:

// Firing sub-script
// Ordinal Malaprop
// 2006-03-08

float gBulletSpeed = 60.0;

default
{
 link_message(integer c, integer n, string msg, key id)
 {
  if (n != 0) return;
  vector rot = llGetRot();
  vector dir = llRot2Fwd(rot);
  llRezObject("Bullet",
  llGetPos() + dir + <0.0, 0.0, 0.75>,
  dir * gBulletSpeed, rot, 1);
 }
}

and with the other, whenever one wishes to fire a bullet, one simply calls

llLinkMessage(LINK_THIS, 0, "", NULL_KEY);

from one’s main firing script. (One would also likely trigger a sound and activate other special effects.) In the case of the Pepperbox Pistol, the accuracy must be reduced, which is done by modifying the third parameter in the above script - the velocity of the bullet - by a random vector, thus making it travel in a different direction. For completeness it would be better to apply a random factor to the rot variable and thus rez and point the bullet precisely in its direction of travel, but really, in this case, it makes no practical difference.

The other element is to add a chance that the pistol will discharge all of its ammunition at once. For this purpose, we use an llFrand check whenever the trigger is pulled and, if this succeeds, instead of issuing one link message we issue a number equal to the current number of bullets left:

do {
 llLinkMessage(LINK_THIS, 0, "", NULL_KEY);
} while (--gAmmo > 0);

The beauty of using link messages for this purpose is that they queue up whilst the fire script is asleep. Recall that after every llRezObject call, there is a short pause, depending on the mass and velocity of the rezzed object. If we had these calls issued from the main script the whole thing would sleep for a while, but given that it doesn’t, we can do other things whilst the pistol is chain-firing. Any controls or sensors, for instance, would still activate, say one that detected whether the owner had left mouselook. (In this case there are no other things to be doing, but I can certainly imagine cases where one might.)

One does not wish to have one’s master control script ever pausing any more than is absolutely necessary, and this holds even more true when one is considering such particularly sleepy functions as llGiveInventory and, God forbid, llEmail, which pauses for twenty seconds at each invocation. The use of link messages and sub-scripts is a vital tool for any complex scripting, and if I ever become organised enough to put together a scripting class for Withnail Academy, as I have occasionally muttered about doing, I shall certainly devote a lesson or more to it.

Whilst not actively scripting, building or taking tea with like-minded folk, as I have mentioned previously, I am known to be involved in politics, much as I’m sure that many of you find that a bore. Occasionally I am known to engage in events such as political debates, helping in the construction of a Black History Month exhibit, or, in the case of last Sunday, a protest rally regarding the shameful laws recently passed in the state of South Dakota. Whilst I am not personally affected by the laws of the United States, it is a matter of both principle and international solidarity.

Merely touch the image below to view photographs of the event:

At the start

We visited Democracy Island, the Neualtenberg Marketplatz and the Welcome Area, pursued by a helicopter from the Metaverse Messenger and a selection of our regular team of griefers, who were actually relatively quiet and unobtrusive (once muted, anyway). It was only upon reaching the Welcome Area that we received a little opprobium from those around us - I believe that they were put out at their in-depth and wide-ranging debates on science, ethics and the Arts (these are standard topics for conversation at Welcome Areas) being interrupted by a squalid team of ragged Communists. For which I can only apologise.

Despite having Linden approval, I and many others ended the rally being frozen by a Linden; I was forced to leave Second Life due to technical issues anyway at this point. Certainly, it was an interesting experience and, I consider, worthwhile, though as with all rallies one is never quite sure whether one has made a blind bit of difference.

In a fit of enthusiasm last night I rented a large plot of waterfront land in Desmond Shang’s new Victorian sim, Caledon. (This is not the steampunk sim that I and others have been discussing, but a number of us can be found there regularly.) It is an extremely pleasant sim generally and well worth a visit, even at this early stage. However, this morning I must admit that I have absolutely no clue as to what I am going to do with this plot.

I really have been spending money insanely on Second Life this month, buying land and L$, increasing my tier and so on, and the time has come for my accountant to grab me by the scruff of my neck, haul me back and wag a finger in my face, saying “Malaprop! Stop immediately! Spend a cent more and I’ll have your guts for garters!”

So, hm. I shall probably put a shop there of some sort, selling my more complex and decorative items for a price. I am not giving up my old land or stopping building freebies and toys, they will always be available, but I have to make a little money or I will end up in debtor’s prison at this rate. I think I may also build a café. I did also have another idea but I’m not sure of the demand for it… sorry to be cryptic, I shall mention it if I do go ahead. I’m sure that, as more people build there, ideas will start to come to mind.

I shall provide a direct link to the area once there is actually something there to look at. And there will be no more tier boosting, no more huge Lindex purchases. Well. Okay. There is one more thing to do. Don’t look at me like that! It’s really important, and it’s a great investment, it will boost the value of my existing land… what are you doing with that ledger?

(Exit, pursued by an accountant.)

Goodness, it’s been a while, hasn’t it? Well, I have been reasonably busy, though that is not a very good excuse, I know. Conversing with my fellow steampunks takes up quite a bit of time, as has building various pieces of gadgetry - the Prim Mine in my home area, for one. As I say to new residents, you don’t think prims come out of thin air, do you? No, they have to be extracted by dint of hard labour, sorted, and distributed across the grid.

I cannot hope to equal the output of some of the great Linden-owned prim mines, where the suspended are put to work (this stuff about “the cornfield” is nonsense, they hand the miscreant a pick and shovel and don’t let them out until they’ve come up with the required number of toruses). However, I do have a steady flow of prims emerging from the ground now, which gratifies the heart.

My distribution system is causing me some irritation, though, and I can’t see why. One can’t let the prim reservoir overflow so, at regular intervals, a balloon takes off from next to the mine, ascends to a specified height and then shoots the prims off in all directions - a noisy process, but one which takes place quite high in the air. It then returns to await the next load.

I could simply have moved the balloon with llSetPos but I felt that this would be cheating. Instead, I made it into a self-piloted vehicle, like my tour balloon. The cycle is quite simple really, it all depends on the actions of a timer, which every time it ticks reasons thusly:

Am I within 2m of my current target? If so…
If the current target is the mine:
I’ve returned home. Turn physics off and use llSetPos to make sure I’m precisely at the home position - also, this way I can’t be pushed about while asleep.
Go to sleep for sixty seconds.
Set current target to 100m up.
Turn physics back on again.
Toot whistle, announce departure.

Otherwise:
I must be at the top. Shoot prims out in random directions and make a lot of noise.
Then set current target to home (the home position is stored in a global variable at state_entry).

If not within 2m of my current target…
Calculate direction from current global position to global position of target.
Set velocity to be that divided by my rotation (I think that’s what it is, I hate rotations).

It’s quite simply really and while it took me a while to get working, that was just me being a fool.

What I’m finding rather annoying about it now, though, is that it is quite simply lazy. When I’m actually there, watching it, following it or sitting on it, it seems to perform as required, toot, up, bang bang bang, down, toot, up and so on. However, when I leave and return I invariably find that it is not at the mine. I take a quick jaunt upwards and what do I see? The balloon sitting there motionless. I have to give it a “push” somehow to get it moving again, either by sitting on it, touching it or, bizarrely enough, right-clicking and just selecting the edit option, not actually making any changes. Any of those things sends it down again and the cycle resumes.

I thought the idea of mechanical servants was that they didn’t need watching all the time, that they wouldn’t slope off for a fag whenever your back was turned, and then have the cheek to sit there insolently until you actually pushed them back to work. Clearly I was mistaken.

There are a couple more devices available at the showroom, a blank sign for protestors which is scripted to let one hold it in a reasonable posture rather than just dangling it vaguely, as avatars are wont to do if not given specific instructions, and a balloon, also for protestors or advertisers or anyone having a message to annoy others with, which follows its owner at a set (yet changeable) height above the owner’s head. This balloon is much more obedient. Perhaps it knows it is being watched.

There is perhaps a serious point here that for purely cosmetic systems, one might consider that there is no actual point in them being active and laggy in situations where there is nobody around to see them. I prefer the idea that my balloon is actually active while nobody is around, certainly considering that sim resources in Theretra are hardly taxed, but were they to be I might incorporate a sensor that activates on returning home. If nobody is around, it turns the timer off and enters a waiting state, where it scans once a minute for avatars, and if any are around it wakes up and continues.

Vitruvian plywood I have often complained about the lack of suitable animations in Second Life of use to a designer of mechanical items, such as myself. I have often complained at quite tedious length, in fact; I was doing so just yesterday. The issue is that the standard method of creating these thing is a program called Poser, which I’m sure is a fine piece of software but seems not only over-featured for use with SL, but also overpriced.

I was therefore extremely pleased to come across a forum thread devoted to a free animation production program called Avimator. It is claimed that it is still in an early stage of development but I found it perfectly adequate and, indeed, intuitive for the production of custom animations and poses. For instance, my Mk909 Engine Rifle and swordstick (both unreleased at this stage) now have holding poses more suitable for their designs than the standard, and I produced a “lunge” animation for the swordstick far more appropriate than the existing `sword_slash_r` (only a very poor fencer would swish their blade about in such a manner).

Those who publish pieces regarding Second Life on the internet will be interested to learn of a service known as SLurl, which allows one to easily link to a location in Second Life and have the viewer taken to a map of it and given the option to visit, whether they have the Second Life client installed or not.

I consider this a most useful service to provide, and a simple SLurl is just of the form:

http://slurl.com/secondlife/Acontia/56/186/86/

which one would hope that anyone could construct. However, the building of a customised SLurl that utilises the full range of other options is somewhat time-consuming and a little daunting to the novice.

To save time in this matter, I have created what seems to me a useful web page that allows one to simply fill in the blanks on a form and produce a SLurl. It is called SLurlBuilder. Please feel free to use it as desired.

Me with paper aeroplane

If anyone was concerned with the progress of my paper aeroplane investigations, I can announce that I did, in the end, come up with a design for the aeroplanes that seems to provide reasonable results. Rather than calculating the angle of attack each time, I simply assumed that it would always be zero given that the plane does turn to face its direction of movement anyway.

The plane now basically works with lift and drag, both proportional to the velocity. Lift applies in its local Z-axis, and drag in its local X-axis. Using llSetForce with the local flag set really does save a lot of time as far as calculating the correct co-ordinates is concerned.

The resulting item is now available at Ordinal Laboratories, but one can also scan the aeroplane code here and now should one wish (pretty colourised HTML version).

I confess that I have been building weaponry yet again, and this time some of the most devastating and immoral devices ever created. Yes, I have been building paper aeroplanes.

small paper plane The basic launching device is quite simple, just a paper aeroplane that you hold in your hand and which throws a sub-aeroplane of identical appearance but quite different behaviour. The sub-aeroplane (which I shall term the plane, as opposed to the launcher, for convenience’s sake) is the issue here. It’s quite simple to give the plane a high buoyancy and just let it fly across the landscape or classroom:

// Simple paper aeroplane script
// Ordinal Malaprop
// 2006-02-21

default
{
 on_rez(integer param)
 {
  llSetBuoyancy(0.9);
 }

 collision_start(integer n)
 {
  llTriggerSound("pop", 1.0);
  if (llDetectedType(0) & AGENT) {
   llWhisper(0, llDetectedName(0) + " has been hit by a
   paper aeroplane from " + llKey2Name(llGetOwner()) +
   "!");
  }
  llDie();
 }

 land_collision_start(vector pos)
 {
  llDie();
 }
}

(Note the telltale element there in the script, designed to prevent pupils from pretending that it was not they who committed the offence.) This looks perfectly fine and would allow one to rain paper aeroplanes on Philip Linden quite effectively - as long as one throws them horizontally. At a steeper angle, however, they look a little ridiculous. Firstly they travel quite happily at the same speed a great distance into the air, which real aeroplanes do not do. Secondly, as they fall, they retain the precise same angle that they had at launch, which again, real aeroplanes do not do.

It would seem that the best idea would be to have a simple simulation of aerofoil lift combined with the “point in the direction of travel” mechanism described in my previous post concerning rocketry, and on investigating this I really do mean simple. Lift appears to be proportional to the square of the speed, and I plan to simplify the lift co-efficient drastically, so that it simply goes to zero after the plane goes outside a certain angle. I shall remove the buoyancy too, as I am not actually using Cavorite-impregnated paper.

A useful enhancement to the launcher here would be to allow the wielder to hold down their mouse button to increase the speed at which the plane will be launched, releasing it to throw, as this will affect its behaviour.

Please do not ask how I plan to deal with planes that have rolled around their forward axis, because I will make a face as if sucking on a sherbet lemon.

I have recently expanded and redeveloped my showroom area and to celebrate this, have constructed a device of great social import - an Automated Champagne Waiter, controlled by its own specialised engine and the most accurate thermometers available to chill the vintage champagne to the perfect temperature and pour it as if one was in the finest Paris hotel. Moreover, it has the capacity to top up one’s glass as often as desired. (It will not actually follow one around doing this. That is a project for later I feel.)

Champagne machine

I think, though, that it could be improved. Dear reader, what is it that you would most like to see from a champagne device? I’m at a bit of a loss for ideas for improvement.

Incidentally, I would hope that no visitors consume so much champagne that they come to believe that damaging the highly volatile fuel tank on the dirigible deck is a good idea. A few impacts from high-velocity items such as bullets and… well, I’m not responsible for the consequences, and my lawyers confirm this.

I would also appreciate it if they did not use the high-speed transit chairs if their stomachs are feeling a tad unstable, as there is nobody to clean the area apart from myself, and I am a modern woman who does not feel it is her place to do such a thing. We are not living in the eighteenth century any more. I trust that anyone becoming ill after a jaunt will bring their own mop and bucket.

More practically, I note that folk are still complaining about the interference of ne’r-do-wells in their home areas, and I agree that it is most improper occurrence should someone return again and again to taunt a lady or gentlemen, and take photographs of their bedroom activities, which I am informed is a common pastime of such people. With this in mind there is now a Defensive Panopticon available, easily updatable with specific names, that warns one when any of those on the list of unwelcome people is around.

Defensive Panopticon

Of course, there is always the ban tool on a land parcel, but that does not help anyone who has chosen to make their home some way above the ground, and if one has a somewhat small area it is quite possible for a ruffian to sit very close and listen in to one’s private conversations. For this reason, the Panopticon alerts people whenever offenders come within ninety-six metres, over one’s land or not, and has the potential (if so desired) to eject them at any altitude should they trespass.

I have often pledged never to produce any so-called “security” item that is indiscriminate in its effects, throwing pilots out of aeroplanes and so forth, but one which requires specific names to be added I feel is quite legitimate. This is a simple device, which I designed some time ago, and have been meaning to release for some time once it has developed a friendlier interface.

It must be said that it might be considered somewhat, well, intimidating in appearance.

A polite notice

Vending devices in Second Life are often distinctly brusque and indeed even rude, as well as being festooned with garish floating text. Last night, whilst designing a device of similar purpose for my own potential use - I have not made up my mind - I decided that in any case mine would be more polite.

(Also note a new spinning FOR SALE sign… *sigh* I really need to move out of this area.)

A perpetual problem for myself and others whose body clocks are tuned to Greenwich Mean Time is that of communication with other residents of Second Life. A gap of eight hours between London and the Western coast of the Americas means that, when dealing with those resident in the Colonies, one spends much of one’s time asleep when they are awake, and then wakes and is eager to speak, but is unable to actually enter Second Life due to the demands of work and has to wait for many hours, tapping fingers irritably and perhaps forgetting what one meant to say.

(This is not to mention the much greater irritation caused by not being able to attend events, but there is little to be done about that apart from demanding that they start earlier. LSL doesn’t have any time machine functions it appears.)

an old telephone There are also other occasions when one is trapped in the Other World for extended periods - say, on account of one’s Powerbook having broken down again - with access to email but not to Second Life itself. It would be nice to be able to at least initiate messages, and at the moment one cannot do this. Most people are aware that instant messages from within Second Life can be forwarded as email, and many of those people are also aware that replying to the email will send an instant message back.

What fewer people are aware of is that the address that one replies to is actually only a temporary session one, and is not reliable for long term use. Normally, to send an email into Second Life one addresses it to key-of-the-recipient@lsl.secondlife.com, and when one receives an email from an instant message, the reply address is similarly key-of-the-sender@lsl.secondlife.com.

And that’s all well and good when dealing with objects. Objects retain their key indefinitely, so I can save the key of an object somewhere, send it emails until the end of the world at the same address and it will always pick them up. But this does not work for communicating with people - the value of key-of-the-sender above when they send you email via IM is not their actual key.

I am not sure whether addressing mail to actual-avatar-key-of-the-recipient@lsl.secondlife.com works, but it’s inconvenient to carry around an address book, or keyring I suppose, full of impossible-to-remember keys. If this doesn’t work, and it’s only temporary keys that do, which may be an attempt to limit people harassing others via email sent from the Other World (laudable intention, annoying results for me) there is no way to initiate a conversation from outside.

(Yes, Ordinal, get to the point.) So, anyway, here is my temporary solution - a script that waits for email and turns it into instant messages. Say I wanted to send a message to my friend Professor Jefferson Gould but was unable to log on. When I first set the object going, it said three things which hopefully I recorded somewhere:

Email-IM Gateway: My email address is some-key-or-other@lsl.secondlife.com
Email-IM Gateway: Security key is *12345678* - include this as the subject of the email
Email-IM Gateway: Polling for email every 60.00000 seconds

Actually I don’t need to record the last one, that’s a bit irrelevant, but the first two I do. I compose a short message to Professor Gould and send an email in the following format:

To: some-key-or-other@lsl.secondlife.com
Subject: *12345678*
---
Jefferson Gould//Mr Watson - come here!

The gateway receives the email and sends two instant messages to Professor Gould:

Email-IM Gateway: Ordinal Malaprop has sent you the following message - please use the IM tool to reply to them directly
Email-IM Gateway: Mr Watson - come here!

“Aha!” I hear those of you who script thinking, “How does it know the proper key just from the name Jefferson Gould? You need a key to send a message with llInstantMessage. You’re cheating, aren’t you?” Er, that’s the problem really. There is no way of getting a key directly from a name in LSL. So I have to have keys and names listed in a notecard, and the script reads through the lines of the notecard until it finds the right name, then takes the key from that. Which is a pain because they need gathering first, which means that I won’t be able to send an email to anyone whose key I have not already obtained, unless I can find a public key database somewhere.

I’ve not tested the script for this so I won’t post it up right now - in any case this entry is getting rather long. Once I do so, though, I will, and also the script for the key harvester that I use, and they’ll be in the showroom as usual, which could get a bit crowded. Maybe I should script a vendor too so that not all of these things need to have their own prims, even if I do quite like the current layout.

The issue of keys and names is an interesting one. People do feel protective about their keys being recorded. I wonder how much of that is just simple suspicion at surveillance. Perhaps that’s something for another entry.

*thinks* I might integrate this into my existing “contact me” object, to produce a Multi-Functional Communications Engine.

Edit: I’ve been informed that there are public name to key databases in existence that can be used for this purpose - for instance, the one maintained by Ulrika Zugzwang or this one on w-hat.com. These are not entirely complete, and would take a long time for a script to search if fully included - but the public web lookup pages give one the option of finding a key from a name and then sending to that. I shall modify the script so that one can specify either a key or a name to send to.

.flickr-photo { }.flickr-frame { float: right; text-align: center; margin-left: 15px; margin-bottom: 15px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }

Tip jar
Tip jar,
originally uploaded by Ordinal Malaprop.

I have changed the manner in which my showroom operates. Instead of having a few free things and the rest being all very cheap (nothing over L$50), items are now either free or cost L$1 - the latter helping me keep records of who has bought what.

In the corner is the Lurking Crate, which reacts… unusually for a crate, when approached. This contains random items that I’ve designed but which aren’t serious or detailed or working well enough to warrant my building a whole retail box for them. These are all free.

Almost everything should be full mod/copy, although doubtless I’ve failed sometimes since I am appalling with permissions. Let me know if anything does not meet this standard. New scripts should now have the following licence header however:

// ---LICENCE START---
// The latest version of this script is always available for free
// from Ordinal Malaprop via dispenser in my home area or directly.

// This script may be distributed as desired and used as desired
// under the condition that:

// - this header licence information is not altered;
// - it is clear in the documentation of any item using it that
// the script is being used, with author (just a quick mention
// is fine, e.g. "Uses <script name> by Ordinal Malaprop");
// - it is not sold BY ITSELF, UNMODIFIED.

// I would appreciate it if you let me know if you are using the
// script yourself, but that's not part of the licence.
// ---LICENCE END---

If you are a past customer and I have not already contacted you regarding a refund, do please let me know and I will send you back the difference in prices.

The only real income that my establishment will now generate is via the tip jar. If anyone feels that products from here are useful or entertaining or otherwise worth something, and feels like expressing their appreciation, that is one option. One could also rate me up if one was moved to spend - I do appreciate this as well.

My lovely Powerbook has just this afternoon gone in for repair, and may be some time (well, hopefully it will be back before the end of the week). Until then however I will not be Second Living, so don’t complain if you need to speak to me and I’m not around.

My last act was to modify the rocket mentioned below so that it fires out submunitions on detonation which themselves detonate in random colours half a second later, providing a rather extensive and messy shower of particles.

Well, colour me an embarrassed shade of mauve - after lots of faffing about with llSetTorque et cie, I find that llRotLookAt does work with physical objects, it’s just that you need rather inflated parameters to get it to do anything.

If we declare

float strength;
float damping;

at the top of the script, and set those variables to be

strength = llGetMass()*3;
damping = strength/3;

in state_entry(), things work out quite well if we just add the instruction to rotate to set_engine, which now looks like this:

set_engine(vector dir)
{
    vector vel = llGetVel();
    vector drag = vel / gMaxSpeed;
    rotation rot = llGetRot();
    llRotLookAt(rot * llRotBetween( * rot, vel),
    strength, damping);
    llSetForce((dir - drag) * gAcceln * gTimer, FALSE);
    gFuel -= gTimer;
    if (gFuel 

And thus we have a rocket that now moves to point in its direction of travel, calculating the rotation between its forward axis and the velocity using llRotBetween, multiplying that by its actual rotation and then turning there. Don’t ask me how that works. I really don’t understand rotations very well, still, I’m afraid. I got a lot of that from the wiki page about llLookAt.

Firing and ejecting

I also added a longer detection spike, to let the maximum speed go up a bit, and added a little more flash to the launcher - now, once you run out of ammunition, the Harlequin ejects the empty cartridge (which bounces about for a bit on the ground and emits smoke) and you go through a reloading animation. I think it looks rather good, personally.

What remains is to give the rockets a slight heat-seeking element, pointing them a little towards the nearest avatar. This will probably just make them miss, but should help at long ranges. Not that I can see anything past 96m in any case.

Readers interested in Victoriana, steampunk or just good taste and design might be interested to see the preliminary model of a dedicated steampunk sim that is being planned at this very moment.

Jefferson's sim plan model

This impressive maquette was built by Professor Jefferson Gould and continues to grow every day. If all goes to plan I shall personally be involved in the scripting of some of the infrastructure - automated hansom cabs, balloon tours, communications, that sort of thing. Obviously there needs to be investment in the project, but given that everywhere that the model goes people, flock around it and make comments such as “that looks great, when can I visit?”, “I’d rent a house in a place like that”, “I’d love to set up a shop/gallery/other there” I believe that it would definitely be economically viable.

There will be more publicity for it in coming weeks, but for now, here are a few photographs. You can see the full-size model quite frequently on evenings in Cordova Sandbox; I’d host it myself but alas, I do not have the spare prims in my home area.

Edit: The model has found a home at Acontia 52,186,86 - click to visit it. To see the whole collection of pictures, including the latest design, visit my gallery on the subject.

Edit: Turning problems detailed in this post have been solved, and some of the conclusions proved incorrect - see above.

One would think that llLookAt and llRotLookAt would be the ideal functions for use with a guided physical projectile that one wishes to have pointing in a certain direction. Certainly, in the wiki, it says “this function works for both physical and non-physical objects”.

Does it? No, unless I’m doing something horribly wrong.

This evening I have been engaging in a little rocket science, trying to build a projectile that

(a) accelerates constantly in the direction that it is pointing until it runs out of fuel. This is fairly straightforward, it just requires using llSetForce. I added in a drag co-efficient that represents air resistance, proportional to the current velocity, as well, so as to limit the speed.

(b) moves to point in the direction that it is moving in, more or less. (Aerodynamic objects tend to do this - think paper aeroplanes.) It’s easy to make vehicles do this, there are automatic parameters to set, but for physical objects I can’t see any mechanism apart from applying a force or impulse myself. And that’s where I’m having the problem.

Me with rocket launcher

First things first; the basic motor. (I was told earlier on today that I didn’t post enough code examples so I’m doing a little of that now.) Here are my global variables:

float gFuel; // current fuel
float gFuelMax = 10.0; // seconds of flight time
float gMaxSpeed; // calculated based on FPS
float gAcceln = 10; // metres per second per second
float gTimer = 0.2; // check every X seconds

On entry, gFuel is set to gFuelMax, and gMaxSpeed… well, that is set to llGetRegionFPS() * 1.5. Why? Well, the rocket itself has an invisible central prim that is 1.5m long, for collision detection, and I am assuming that llGetRegionFPS() will give me the physics framerate. Any faster than the above and there will be “gaps” between the positions of the rocket meaning that a collision might not be detected. See the previous post that I made about bullets for more on this.

Crucible rocket

Anyway, also on entry we set a timer with a frequency of gTimer. All that the timer event does is call set_engine(llRot2Fwd(llGetRot())), to set the engine going in the rocket’s current forward direction. set_engine is a function that takes a direction as a parameter and consists of the following code:

set_engine(vector dir)
{
    vector vel = llGetVel();
    vector drag = vel / gMaxSpeed;
    llSetForce((dir - drag) * gAcceln * gTimer, FALSE);
    gFuel -= gTimer;
    if (gFuel 

The value of the vector drag varies depending on the current velocity, and is a push in the opposite direction to the rocket’s current movement - note, not the direction parameter sent to the function. At maximum speed, drag will have a magnitude of 1, which should cancel out the rocket motor if that is acting in that direction. Okay, the drag should really be different for different directions, since the forward drag on a rocket is much less than the drag on other axes, but give me a break, it’s only alive for a few seconds. Er, I mean, that’s an optional project for advanced students.

That all works fairly well it seems. The problem is that the rocket should really turn in the direction of movement - real rockets do that. Only I can’t seem to get that working. I can’t use llSetRot, that’s only for non-physical objects, and when I try to use llLookAt or llRotLookAt, they just don’t do anything at all. I tried building a sensor object that used those functions to look at the nearest avatar to test this. When it was non-physical, it turned fine (and I’ve used this many times before). When it was physical, it just didn’t move.

I don’t know if I’m screwing up some parameters or not - I’m sure I’ve used llLookAt with physical objects before - but it is annoying me greatly at the moment. Once I find a solution (if ever) that doesn’t involve the use of llApplyRotationalImpulse, which I don’t understand and which scares me, I’ll post something on the matter.

As a post scriptum, hold_R_bazooka is all very well as an animation, but why on earth does aim_R_bazooka have to involve your left hand entirely changing position?

Two outages within twenty four hours? I am entitled to permanent service from Linden Labs, all day, every day. God dammit, I pay their wages. Haven’t they ever heard of customer service?

I demand compensation for this outrage. It just isn’t good enough. Linden Labs are a disgrace. They release clients with critical flaws like, um, the