So, yeah, I got a Second Life account of my own finally, despite not having home internet or a computer that can run it, but I can play it at the cybercafe where Sylph goes (funny how getting a job and moving to California changes the meaning of $10).
Sylph made a broken umbrella, using a friend's script for making rain with the SL particle system (sorry for the crappy phonecam shot):
Some things someone could build:
- A patio umbrella that opens and closes. Sylph's umbrella is pretty round, despite being made of sections. It'd be nice to make a more real articulated umbrella, then have it open and close with script.
- A rain machine. Rain particle settings are still pretty new, at least in Sylph's group, so it'd be neat to make a machine for your land that unfurls some cloud objects or effects and drops rain on your land. Plus then you'd have a use for the umbrella.
- An XML-RPC or email communicator object that lets you chat from another world or service. A friend of Sylph's already has something like this, but it's a stationary object that picks up all nearby chat. You could do something like that but mirror to an IRC channel or similar. My chatter MUD has a similar thing that uses email, mainly for use with SMS, which was great on my long netless drive.
- An Animal Crossing tree: you drop/plant a piece of fruit that grows into a tree over several days, then grows fruit that you can take and grow into more trees. I don't recall the rules about objects on other folks' or unclaimed land, but it'd be interesting to see if you could make the fruit drop and scatter and grow more trees elsewhere automatically.
Linden Scripting Language is pretty cool. It's kind of an ECMAscript pidgin like S2, but instead of breaking it where it works they add something cool, namely state orientation. Sylph wanted me to script a door that opens and closes when you touch it, and this was my first hack at it:
integer opened = 0;
open_to(vector rot) {
llSetRot(llEuler2Rot(DEG_TO_RAD * rot));
}
default { // state "default"
state_entry() {
}
touch_start(integer blah_blah_blah) {
if(opened) {
open_to(<0,0,90>);
opened = FALSE;
} else {
open_to(<0,0,0>);
opened = TRUE;
}
}
}
It was kind of painful because it doesn't let you have state variables, only script-global and function-local. Then I realized this is the definition of stateful behavior, so the language could do all the heavy lifting:
open_to(vector rot) {
llSetRot(llEuler2Rot(DEG_TO_RAD * rot));
}
default {
state_entry() {
open_to(<0,0,90>);
}
touch_start(integer blah_blah_blah) {
state open;
}
}
state open {
state_entry() {
open_to(<0,0,0>);
}
touch_start(integer blah_blah_blah) {
state default;
}
}
Unfortunately there's no function that both rotates an object over time (llSetRot works in a set amount of time) and rotates around the master object (the other function I used rotates around the "center of gravity" which I guess is decided by volume), and using several llSetRots made the door go chk-chk-chk open instead of smoothly and slowly. So I couldn't quite get what Sylph wanted. Oh, well!
Comments
comment
llAxes2Rot: http://www.sluniverse.com/lsl.html#AEN1024 (or maybe llAxisAngle2Rot)
Also note rotation arithmetic: http://www.sluniverse.com/lsl.html#AEN259
comment
For the record, I didn’t say that SL was tanking; I don’t have financials for the company and can’t speak for them. :-)
I said that, as they are today, they haven’t found the way for a social avatar world to succeed as a business yet (and no one else has, despite multiple attempts [myself as archetype]) - and part of the problem is their current model.
One thing Phillip and Cory and the crew have done is show an amazing resiliency. So did Communities.com right up until the end.
Randy
comment
Oh. Thanks for the clarification. :)