I believe I am at the stage where I can write up a final evaluation or reflection of how the build went.

The screenshot below shows the all the objects that make up the build.




There are essentially four groups of objects. The building, the two go-karts (one red, one blue) and a group of eight markers. The building acts as the controller to the other objects, from it a player can rez the go-karts, setup a track, receive copies of the objects, and clear the rezzed objects.

Rezing the go-karts is a very simple matter, when the user selects the menu item the script in the building simply rezes and positions each kart inside the building.

Setting up a track is a bit more complicated. I grouped all the markers into a single package, which is rezed slightly in front of the building. The script then sends a message over the a custom chat channel e.g. “position curved”. This message goes to every marker and tells it to position itself somewhere in relation to the building. It isn’t difficult to add many different positions to each marker, however it is quite time consuming an tedious to position them correctly. For demonstration purposes I built a very simple curved track, though it turned out more like a square.

The user can also clear all the created objects using a menu item in the building. All this does is send two chat message over two chat channels to every go-kart and marker. The object then calls llDie().

The light markers are quite simple, each one has a script that controls it’s position as well as providing a light source. Initially I had it that the lights could be toggled, however due to technical reasons it didn’t seem to be possible to reliably turn on/off the lights that were far away from the building.


This has been a complex interactivity focused build with with some visual complexity. Therefore I needed to write a fair amount of code in order to control the various parts. There are three different scripts in the project, however those in the markers all have slightly different values for colour and position.

Building script

This was written virtually entirely by myself, I started off with a script that we used in the class for making signs, however I needed to modify it extensively to get it to do the various requirements. These requirements were, keep track of nearby visitors, IM them encouraging them to race someone else nearby, provide a menu system, rez go-karts and track, clear rezzed objects. The script is capable of keeping track of who is nearby (within 10 feet), once someone moves into range of the build it will message the person telling them to race another person who is also within range. The script should only message a person once while they are range, it will message again if the user moves out of and then back into range.

Vehicle script

This was originally from the Vehicle Laboratory, however some values were tweaked a bit and I also added a bit of code for deleting the kart.

Marker script

This is a simple script that sets up a light source and listens for position/delete messages from the building.


Problems found

There were three major issues encountered during the build.

The first was the 31 prim limit on vehicles. This caused a lot of issues since it was found quite late in the project after a lot of work had gone into the go-kart. At the time the only solution seemed to be to strip of anything that wouldn’t be absolutely required. However I could of actually made a non moving, high prim version for when the kart is standing still.

The second issue was with the code that keeps track of people that are near the building and sends out messages as people arrive suggesting they challenge one of the other people that was randomly selected. This was problematic because it involved correctly adding people to a list and then removing them if they go out of range. I’m not sure if my solution was the best way of doing it, however it seems to work reasonably ok. The process essentially works by keeping a list of people that are currently nearby. The script generates a temp list every few seconds that it can use to remove people from the main list. I can’t remember exactly why I ended up doing it this way, however I’m pretty sure it was to prevent spamming the user with IM’s every time the sensor fires.

The last problem was with the vehicle physics, and will unfortunately remain unresolved. I suspect the issue is mainly with Second Lifes physics engine, along with the number of prims in the vehicle and possibly nearby. The issue doesn’t make the kart undrivable, however it is a bit of a pain to control. If I had time I could probably of tweaked some of the scripts values a bit more, however I doubt it would improve it much.


Scripting so far

Work on the go-karts has largely finished, I can’t add much more detail to them due to the prim limit, and I’m not going to change much in their scripts, besides tweaking some values.

Most of the work now is going into building a structure that acts as the “starting” part of the race. This will be used to rez each cart and hopefully detect who wins the race. I’m not quite sure how I’m going to do a detection script for a winner since it will require a very high refresh rate due to the speeds of the karts. I suspect I will have to leave it with controlling the start of the race

Hit prim limit for vehicles

I’ve hit a technical limit while making the go kart, vehicles are limited to 31 prims + a driver. Due to limits imposed by the physics engine a vehicle cannot contain more than 31 linked prims. I wasn’t aware (or had forgetten) of this issue and it has caused me to rethink the design of the cart.

Because of time restrictions I don’t really have enough time to remodel most of the more complex parts into a sculpted prim. However the seat and the petrol container can probably be merged into a single sculpted prim fairly easily.

I would like to add some sort of cover to the front, might try out a basic sculpted prim.

Progress so far

The screenshot below shows my current progress with the assignment. So far I have the basic shape of the kart done, however there is still quite a bit of work to do. I need to build a seat, probably a good use of sculpted prims? The engine also needs to be finished off, with the exhaust, and other details. I’ll probably also build some sort of frame for the sides, instead of the current wall things.

My Project

I’ve been a bit slack about making a start on this assignment, I wasn’t too sure what I actually wanted to build for it.

I’ve decided to build a go cart track for the assignment. This should quite easily meet the build requirements since it will require a lot of prims to make up both the carts and the track. Along with a lot of scripting for controlling the cart and parts of the track.

Assignment 3

This is unfortunately a very late blog post since I’ve been unable to decide what I want to do for assignment 3.

The project will be something to do with Content Creation, however exactly what I will be creating has been difficult to work out.

Ideally I would like to somehow do some sort of build in Minecraft, either an extensive build of something (with a lot of redstone for interactivity) or more likely a combined complex build with a custom Bukkit plugin to provide the interactivity/scripted content.

There are two main issues with using Minecraft thought. It doesn’t quite reach the current build requirements set out in the assignment document and Minecraft 1.6 is expected within the next day or so.

The first issue could be solved with a bit of discussion about alternative requirements for the build. Such as a minimum number of different block types used, minimum build size (i.e must be greater than 30 blocks long, 30 blocks wide, and 100 blocks high), etc.

The second issue is problematic because new versions of the game will usually not work with the 3rd party Bukkit server until the Bukkit developers have released a new version, this can take 1-2 weeks on average. However this won’t be a problem provided the client isn’t upgraded to 1.6.

If it turns out that Minecraft doesn’t meet the requirements I will do a build in Second Life or Open Sim, the specifics of which I’m still deciding on.

Permissions in Second Life

What are the Permissions?

Permissions control how an object can be modified, copied, or transferred. They are an extremely important tool in maintaining control of both free and commercial content.

The modify permission determines whether the next owner is allowed to make any changes to object.

The copy permission allows the next owner to make copies of the object. The new owner cannot modify the permissions in the copied object. An object’s copy ability is affected by any objects that are stored inside it. If one of the objects inside the main object is not set for copying the main object will be unavailable for copying. However the reverse doesn’t apply.

The transfer permission determines if the new owner can the give the object to another person.If this option is not set the user cannot transfer the object legitimately in any way.

Permission Examples

In a situation where the user wants to sell a object, but doesn’t want to the new owner to modify the object, see the script or give away/ resell it, they would set the permissions as follows.

Object – Modify: off – Copy: on – Transfer: off

Script – Modify: off – Copy: on – Transfer: off

If a user has created an object that they want to give away under a free licence in which they can modify the object, cannot modify the script but can give the new object away they would set the permissions like this.

Object – Modify: on – Copy: on  – Transfer: on

Script – Modify: off – Copy: on – Transfer: on