Project Moonlight V Final, and Evaluation

Posted in Uncategorized on December 8, 2010 by veraska

So I now have it working on a timer, every 0,5 of a second seems to produce enough stairs a second.

It seems that the time it takes for the child stairs to decay is long enough for the staircase to make 120 steps. I’ll leave it for now, but I’ll be able to change it quite easily.

I could not for the life of me get the music working, and to top it all off, Second Life won’t even play native sound for me now. I don’t know whether the sound is screwed up in the lab computers, or whether its a dispute between versions I have at home and then at the university, but I am abandoning adding more than 20 seconds of the Moonlight Sonata working, because chances are that Sound will cease to play at all even on the lab computers for me. The coding is still in there, but it doesn’t do anything too disruptive to the stair spawning code.

I could talk about how the final stages of the project came together, but the only things I really did were to take out the checks to makes sure each part of the stairs were working. I had multiple text messages in my personal chat filling the screen, but that is gone now because I know the code works.

It’s a shame that one part of the project was not fully fulfilled, but the fact is that Second Life doesn’t provide enough attention to using sounds, and that is a sad thing, as I find in other industries like film, TV and video games, sound design is such an important part of the whole package. And composers cannot create great music without having great equipment and people in their orchestras.

I really do hope that Linden Labs creates a way to a) Upload larger sound files, or b) Queue up multiple sound files to play one after another.

Windows Media Player does it way better.

All in all, I have come to the end of the project, and despite hating Second Life as it decided to break over and over, I think that my application is quite fun, or at least a unique design and implementation of the tools that second life gives you.

I have noticed quite a funny thing about it though; it seems I can click on the original stair and the second set of stairs will follow the first set of stairs. It’s expected, but it’s quite funny to see in action.

Also, sitting on the stair takes you higher than you can physically fly, and when it hits the edge of the map, it keeps on going! Creating a pretty cool pattern, I might add.

Its creating a demonic car park!


Anyway, this ends my foray into Second Life for now, perhaps forever, perhaps a few months. Only time will tell.

Thanks for reading my blog, and have a go at some of the things I’ve told you about!


Project Moonlight IV

Posted in Uncategorized on December 1, 2010 by veraska

So yeah, it’s time to focus on the project completely.

I had come to a standstill on the music, but I should focus on the other part, the replicating stairs.

I still have the stair, so I need to spawn another item around it, and then have that create and spawn stairs underneath it.

I did notice that when they are spawned near the ground, that they can go underneath the ground. But I guess I’ll have to spawn it in the air to get a perfect staircase that can be fully seen.

The object then is to create an item that will fit around the first step. And then have that step create little child steps through a timer.

I then need to get that child step to disappear after a while (a minute), so that it produces the illusion a staircase living and moving,

I should create a platform large enough to house the first one, and add a hole to fit it in.

I don’t need to move the original, but I need to move the large one, the spawned stair every time a child step is created.

As above. I now need to create the child step; I also need to set the move distance the same size as the spawned stair, otherwise it’ll look quite weird.

Now to get them working in tandem.

Well, it works.

Project Moonlight III

Posted in Uncategorized on November 24, 2010 by veraska

So this week, after looking at HTTP Requests (I made a quick browser opening script because my project doesn’t need to store any data.)

string text = “transporting…”;

string url = “”;





llSetText(“Click, and be transported! Yours Truly, the BBC.”, <1.0, 1.0, 1.0>, 1.0);


touch_start(integer num_detected)


llLoadURL(llDetectedKey(0), text, url); //Loads the URL



I continued the problem of queuing the sound files.

I appeared to find something which could have helped me, if they only didn’t have to use the sleep function to cause the next item to play. It seems also that they cannot play in a specific order, even when being ordered to do so.

This is the code that could help me, but I need it to clip them together seamlessly to create a melody, as having a 10 second break in between parts of Moonlight Sonata stop it from being such a dramatic and awesome piece of classical music.

list soundlist = ["9a6b7166-0eb5-8e61-d6a2-888cf6bd2c46"    ,    "632dd9c9-0a24-3acf-2df1-233675717fa6"    ,
                  "3c554abb-6c3c-a8b6-01e9-4a2b909b74f4"    ,    "47421b54-7114-f816-a05e-b79552f24184"    ,
                  "1ba27f6f-50eb-64f2-3171-0158b783e5b6"    ,    "81e26ae6-83ed-a88c-6d3f-dd2003058d7e"    ,
                  "b7045a20-ad0e-c083-a077-7a6e3048e638"    ,    "65f038c8-3284-a616-8817-e4f4c60be496"    ,
                  "194f1b76-bb9b-733c-3c81-ce6c83fcbd33"    ,    "2cf4add7-5317-8d66-4dbd-f902c1399597"    ,
                  "45e4ec4c-9215-3b96-72f7-673d4d817cc7"    ,    "98e8673a-b646-b2f5-dd27-0a394483fc88"    ,
                  "c96ea102-4d6e-57b2-61ce-4226fc4888d6"    ,    "2320f451-3ba9-7f03-cf15-20c14c16a232"    ,
                  "89f1244f-467d-e562-3cde-9dcff044b96c"    ,    "0c472a6d-2085-5f91-2262-cf2e585448d0"    ,
                  "9f4b90f1-3f3e-81a4-6fc2-1a39e1d2d2cc"    ,    "b61a7317-1c0c-e9ae-4bc0-077d40e1ea73"    ,
                  "01d82e0b-2dbb-3992-72f7-d4859427541c"    ,    "fb56b288-927d-75f9-26bb-8743f1fce736"    ,
                  "d157afac-9441-c060-aa91-2983ce56778f"    ,    "8d308920-73e2-c6d4-ae59-9762ac23815f"    ,
                  "ad189678-f343-295d-e5db-bea55b2ee7cf"    ,    "8a4be045-ed73-5f58-2c1e-d1ceb3146ead"    ,
                  "a7e62701-5787-3d1e-b156-de99671715ac"    ,    "4000333c-0c50-d528-63fd-a226894bbc58"    ,

        integer all;
        integer listlong = llGetListLength(soundlist);
        llPreloadSound(llList2Key(soundlist, all));
        while((++all)< listlong);
    touch_start(integer detected)
        if(llDetectedKey(0) == llGetOwner())
            integer all;
            integer listlong = llGetListLength(soundlist);
                llPlaySound(llList2Key(soundlist, all), 1.0);
            while((++all)< listlong);

Seems other people are having the same irritation.

I’m starting to think this sound playing is more trouble than it’s worth.

Project Moonlight II

Posted in Uncategorized on November 17, 2010 by veraska

So this week, after messing around on animations using Avimator (it was quite difficult creating a stable animation that didn’t have an arm mysteriously detach from your shoulder)

What weird and freaky models they use; they are really unnatural mannequins. *shivers*

I continued with my project.

The thing that I wanted to get sorted out this week at least were the ten second segments of Moonlight Sonata. After looking around I found a very good program called Goldwave, allowing me 2000 actions (whatever they are) before the trial ends.

It seems really good at editing and creating clips; the main trouble I had was finding what sounds Second Life would let you upload.

It says wave format, but really they want specifically WAV PCM Stereo Unsigned 16Bit at 44100 HZ.

What a pain. I only found this out after I created 36 WAV PCM Stereo files at varying Hz.

It seems Second Life really doesn’t want you to use their sound upload system.

And 10 seconds? Really? How hard is it to include a minute upload option?

Never mind.

A bit of a pain to manage 36 files.

I also found out that Preloading Sound works, but only for two files in one prim at a time?! Seriously how broken is this environment?

I shall have to figure out some other way.

Project Moonlight I

Posted in Uncategorized on November 11, 2010 by veraska

So, main project. Based off of my proposal, the first thing I did was to create a suitable step.

Wood was far too cliched, so I chose glass.

I wanted to find some cool textures as well, I wanted to find some space age material, but found this pretty cool package of space and sci fi textures, including the one that looks like a demonic portal.

Looks pretty cool, isn;t it.

I might make all the stairs spawn with this, and hopefully I’ll have some spooky demonic stairs made out of glass, like the stairs in those higher class design homes, but with extra red.

Shame I can’t find a decent moonlight/night texture, it would fit the Moonlight Sonata better.

HUD – Heads Up Display

Posted in Uncategorized on November 3, 2010 by veraska

This week we were asked to create an onscreen HUD.

This sounds a lot easier than it seems; the only process used is to create a prim, and then paste a picture on the top. To change elements of the HUD, you rotate the box the HUD is on.

Second Life also has an inbuilt HUD system, where you pick up the box in question, and ‘attach it to the HUD’. It then will show the front side, on a 2D plane.

An example is below.

Also, work began on my final project. I’m going to name it Project Moonlight.

Data and Lists

Posted in Uncategorized on October 27, 2010 by veraska

For this week, we were asked to create data, and create a list function. This was done through the use of a list function in code, and then we were meant to add data into it as well as record it.

The easiest thing to do was to record the velocity and name of the person that collided with the object, and so I did just that.

The code is following below…


list mylist = [];


// llSay(0, “Hello, Avatar!”);


collision_start(integer total_number)

llOwnerSay(llDetectedName(0) +”::”+ (string)llVecMag(llDetectedVel(0)));

string name = llDetectedName(0);
float vel = llVecMag(llDetectedVel(0));

mylist = [name, vel] + mylist;


touch_start(integer total_number)
llOwnerSay((string) mylist + ” “);


And that’s it. Nothing too complicated, stores data of the avatars that collide with it, and then stores them in the list initialised at the beginning of the code.

The list is then recalled in a long string, as formatting in the chat box is not possible (as far as I know.)