My name is Ale Fernandez. I live in Barcelona, Spain and I'm Chilean and Italian.
I am a web developer, artist and technical researcher.
I've lived in Scotland, Italy, Spain and England and career-wise I am interested in distributed systems and their applications to improvised performance and ecology.

Twitter

9/09/2009

A tree spirit for Opensim / Burning Life


I want to make a self replicating distributed bot + attachment system, which is coupled with a physical computing version of itself which my friend Mat Dalgliesh is making as a physical creation.

Here is the spec:


The tree idea is a reflection of a physical computing tree, created using arduinos, sensors and motors.

Leaves are attachments with a built in fall script. When they fall, they slowly degrade, becoming darker until they become a particle effect and delete themselves. New leaves take donations from users. If they get donations, they grow bigger and live longer. They pass this donation to the trunk who divides it around the rest of the plant.

Here is a little bit of a proto-leafgen script:

// Rez an object on touch, with relative position, rotation, and velocity all described in the rezzing prim's coordinate system.
string object = "Leaf"; // Name of object in inventory
vector relativePosOffset = <2.0,>; // "Forward" and a little "above" this prim
vector relativeVel = <1.0,>; // Traveling in this prim's "forward" direction at 1m/s
rotation relativeRot = <0.707107,>; // Rotated 90 degrees on the x-axis compared to this prim
integer startParam = 10;



default {

state_entry() {
vector myPos = llGetPos();
rotation myRot = llGetRot();

vector rezPos = myPos+relativePosOffset*myRot;
vector rezVel = relativeVel*myRot;
rotation rezRot = relativeRot*myRot;
llSetObjectName("Leaf");
llRezObject(object, rezPos, rezVel, rezRot, startParam);
}

touch_start(integer num_detected) {
llRequestPermissions(llDetectedKey(0), PERMISSION_ATTACH);
}

run_time_permissions(integer perm) {
if (perm & PERMISSION_ATTACH) {
llAttachToAvatar(ATTACH_RHAND);
}
}

}



Fruits are controlled by all the other parts: they accumulate currency, and can spawn more of themselves when small. When big, they have a drop script. It becomes a little ball that gives something nice, like textures, or sim currency when picked. Just before it drops, it transfers any remaining goodness inside it to the trunk



The trunks are all bot avatars, run after being prepared by humans. Each time the tree needs to grow by another bit, another avatar is needed to be attached to a linking attachment. By use of animations, they could even be intertwined with each other. It uses currency to upload textures of it's older self - used in all other parts. If restarted, the bot scripts will start from seedling.

The avatar is heavily made up: it will have trunk and root- like attachments. sounds and animations, and then generators for the fruits and leaves, It is a bot, communicating with the attachments it wears via hidden channels. Maybe that's how a tree spirit should.



Roots are born when the tree is on some land. They could be non physical and locked to a place, so they function as an anchor. It can be engineered that only way it could be moved would be by the addition to the tree of a rooting script, temporarily making the tree physical. Not sure if these will be needed really though.

To kill it, because it can respawn trunks which automatically wear leaves and accumulate money, you would have to ddos all the bots that run it, and they can be connecting from different servers, which could make it quite a resilient little plant.

So this is an opensource project at the moment. It is a cross between content, character design ecology and commerce. It should be fun! Let me know if you'd like to be involved!

No comments:

Label Cloud