Saturday, August 28, 2010

Wiki on SL hardware requirments...

Torley Linden has just started a Wiki covering hardware requirements for Second Life. He provides generic advice for selecting computers running the major OS's and graphics cards. Definitely worth a look if you are getting a new computer.

http://wiki.secondlife.com/wiki/Choosing_a_computer

Tuesday, July 20, 2010

Student activity at University of New Orleans

Today I visited the University of New Orleans in Second Life, where Stephen Gasior (SL Stephen Xootfly) showed off his student's work in Second Life. The assignment was to select an animal and in the space of a three panel display present information about the animal's natural history, classification and phylogeny and distribution. These students are in a non majors class and did a fine job with their assignment. So you might go on over to the University of New Orleans region and have a look. You can start your tour and get a map here:

http://maps.secondlife.com/secondlife/Louisiana%20Regents/53/60/25

But it's just as much fun to wonder around. Here are a few representative displays:





































I really liked how he kept the assignment simple and focused-no building was required of the students but they did have to design their own layouts. Steve brought in judges-yours truly was supposed to be one but of course misread the starting time.

Great job students!

Friday, July 2, 2010

An SL Biology Event-call for volunteers

I just received a note from a Biology professor who is asking for volunteers to help access from student projects in Second Life.

Stephen Gasior(SL=Stephen Xootfly) writes:

Dear Biologists-

Hi. I am teaching a nonscience majors biology class in Second Life this summer. I am having my students make a presentation board about an animal. Basically 3 static textures. I am going to grade the content, but I would like to have biology faculty come talk to them about it. You can also note that they seem to know what they are talking about and confirm that they did the work. In other words, if you can tell me whether they should pass/fail the assignment.

Preferably, I would like to have other university or college faculty with a background in biology. If you would like to volunteer, please send me a link to your faculty profile page.

The event will take place in SL on Tuesday July 20th from 12:40 to 1:40 CST (10:40 to 11:40 SLT). If you are interested in helping me out, please let me know. By July 15th. Location will be on the Louisiana Board of Regents Island (look in my profile).

Thank you.

Stephen Gasior
sgasior@uno.edu

Stephen Xootfly in SL

Sounds like fun and its on a Tuesday when I am not teaching.

Thursday, May 20, 2010

Been Kind of Busy with First Life

Well some first life projects took over for about a month...but finally the semester is just about over. Yesterday I, or rather my meat avatar, met with the our IT people about refreshing our colleges's island to accommodate projects and make the island easier to use (yea!).






So to ease back into SL, I decided to revamp my JCCC office to make it cleaner in appearance, cut down on prim use turn it into more of a floating residence. This is because we are going to flatten the topography and I want my ground space free for my evolution critters.

Speaking of which now I can get back to that project. Yea!

Tuesday, March 23, 2010

Evolution Simulation IV: Mutating critters at last!

As noted in my last post I was finding all sorts of problems with my region. Turns out that these were due to two things. First to control my critters I was killing them off bu broadcasting a commmand that triggers the llDie() function. But too many prims dying at once was messing up the asset server.

Also I was duplicating the critters en mass and that I led the server to treat my critters as the dreaded grey goo. Grey goo is a term for excessive rapid self replicating prims. See this discussion of the origin of the term from nanotechnology. When Second Life, and apparently OpenSim as well, detects too rapid prim replication this is treated as grey goo and a defense against this called the grey goo fence is activated.

Open Sim apparently doesn't warn you about this and I only discovered the problem when experimenting with my critters in Second Life. Second Life does warn you about grey goo and I got the warning rezzing even a small number of critters at once. Apparently the limit is about 240 rezzings in 6 seconds. Beyond that the ability to rez those prims is restricted. My inadvertant experiments suggest that in SL the limit may be more stringent than 240 rezzings in 6 seconds.

See http://lslwiki.net/lslwiki/wakka.php?wakka=GreyGooFence for a discussion of Grey Goo and the Grey Goo Fence.

This last week I worked out how to input and represent the critters genetics and the mutation routines. In my earlier systems I had the critters read their initial genetics from a note card. Instead I use the object description field to enter and store the genetics as a string of integers.

Right now the description field has 4 digits

position 1 = "1" or "2" "1" = haploid "2" = diploid. Right now the critters are strictly haploid so this position is ignored for now.

Position 2, 3, 4 are three loci each with 9 possible alleles represented by single character "0" through "9". For the haploid critters, this means there are 1,000 possible genotypes.

Since I mean my evolution simulation to be visual the genotypes in the three loci are used to make a vector that can be used with the llSetColor function.

So in the object description field the legitimate genetic description would be
"1045" . When a new critter is rezzed, the description can be passed to the offspring through the parameter in the llRezObject function.

I also wrote a mutation function:

string mutation(string start, float mforward, float mback)

Where the string is the genetic description, mforward and mback are forward and back mutation rates going forward to the next allele and mback the back mutation rate to the previous allele. So I assume if the allele is "7" then forward mutation would lead to a change to "8", and back would change from "7" to "6".

In addition another function setcolor(string thedata) takes the genetic string, isolated the loci and uses them to set the color of the critter and display the genetic description as using llSetText. I did this because just as in real populations most of the genetic variation leads to subtle variation in the population phenotypes over the short run.

The image shows the results. The critters started out with the color <.9, 0 .9> which sort of a light bluish green. After 4 generations of mutations if you look at the image you can see subtle differences resulting from successive mutations.

The critters still don't really interact with each other and wander around randomly, but not leaving my region. I did some work streamlining this routine so it was much more efficient.

Next up....adding simple natural selection to the mix.

Monday, March 8, 2010

Evolution Simulation III Devastation in Science Sim!

Well not quite. But I was testing my critters to see how big a population my parcel in Science Sim could hold. Everything was fine until I went to delete them using a listen event with llDie triggered by a chatted command. Guess what, 600 prims dying all at once causes the asset server to have a fit: a bit disconcerting but Mic Bowman got things fixed....




And immediately after Mic's fix:

















Thigs were still loading at this point. What Mic recommended is that I use a random number to determine when a particular critter is going to die so that when I issue the command to die the critters don't all die at once.

In SL this bit of code gives a quite realistic movement for my critters:

vector newpos = newcoodinates(llGetPos() ,3.0);

llSetRot(llEuler2Rot(<0,0,-pi/2>)*llGetRot());

llLookAt(newpos,1,0);

llSetPos(newpos);



But in OpenSim the critters don't seem to turn toward the target in response to llLookAt as they do in SL.


Thursday, February 25, 2010

SLPro Conference Day 3 Invasion!

Just down the road from my project is this collection of marvelous insects made with scupted prims...and they are flyable according to the menu options. But I guess you have to be the owner to fly them.








The Dragonfly is spectacular!
















The builder by the way is Strat Inshan.

Wednesday, February 24, 2010

SLPro Conference Day 2

My humble entry into the Shared Media competition.

Don't expect to win the $L 10,000 but I had fun putting together a little chi square demo showing how Google's Spreadsheet can be used on a prim. The hard part was working around the limitations of Google's Spreadsheet.

Sorry Google, you may be taking over the world but you ought to spend some time improving your spread sheet especially protections. I can't believe your programmers couldn't figure out how to protect just part of a spreadsheet!

I finally figured out that I can protect my original spreadsheet and have people access it and copy it and just work with the copy.

Grrrrrr......

Tuesday, February 23, 2010

SLPro Conference Day 1: A Rocky Start but...

The key note got off to a rocky start with most participants not able to get audio and video for much of the time. But the big announcment is SL's Viewer 2 which we get to preview! Looks like a cleaner interface and my impression is that Viewer 2 renders graphics more rapidly than the current viewer.

But what is really cool is the viewer's shared media feature. One thing that I and other "content devlopers" in Second Life have groused about is the inability to display interactive sorts of media such as, well web pages. With the current Second Life viewer the user can display a web page by replacing using the llLoadUrl function but you can't interact with it. But now you can.

After the keynote we got to play for example with a drawing program and we could all interact with it in real time even though it was displayed as a texture on a prim. If you use a web page as a texture you can not only see the web page but you can scroll through the web page and even open new links just as with a standard browser!

Ahhh but there is more. Currently when you display a web page it uses you're parcel media feature which means only one medium per parcel. So if you are a teacher and want to display say multiple web pages you can't have them all display at the same time unless you subdivide your parcel into smaller parcels. Now you can!

This is a big deal for SL content providers and really integrates SL with the web. I just had to try it and works as advertised. So this image shows two of my blogs on separate prim's and these are all on the same parcel. You can do the same thing with media such as Flash sites opening up a new potential for gaming in SL.

I have just started working with this feature so don't have more to say about it...but it looks like web on a prim is here finally. and I think it is really going to improve the immersive experience in Second Life. I can almost forgive the keynote glitches for this.

Monday, February 22, 2010

NMC SL Pro Conference...

The NMC SL Pro conference begins tomorrow and I will be there in amongst my first life teaching and meetings so I think my laptop will be my special friend through Thursday. The focus is on scripting...so hope to get some good tips. The schedule is here:

http://www.nmc.org/2010-slpro/program

Saturday, February 20, 2010

The Selfish Herd: OpenSim Evolution Simulation II

Been a bit distracted by academics but this week worked a bit on my evolution simulation. First I put limits on my critters so that if they escape my parcel they die. Next I set up a controller that uses or at least attempts to use llGetParcelPrimCount in a timer event to count my organisms and kill them all if the population grows beyond a certain size.

The script is straightforward:

But the script does seem to update the prim count properly in OpenSim unless I touch the prim with the script. What's weird is that I have used a very similar script in SL and it updates fine.

The other thing I have been working on is the duplication script itself. I am using the basic script givenn in the LSL Wiki at this link.

http://lslwiki.net/lslwiki/wakka.php?wakka=ExampleSelfReplication

This gives a pretty complete list of precautions if you want to make self replicating critters. So should you decide that you need some sort of self replicating critters pay real close attention lest you get the grey goo.

Right now I have the basic replication scheme worked into my code but right now the critters replicate only on a command from me...so they are on a pretty tight leash. The picture accompanying this post is after 8 doublings from a single critter. My critter sensing prim did not pick up that there were more than 128 critters so it is good thing I am not letting these things replicate on their own! The critters remind me of a herd hence the Selfish Herd after W. D. Hamilton's famous paper: Geometry for the selfish herd. J. theor. Biol. 31:295-311.

Thursday, February 4, 2010

OpenSim Evolution Simulation I

This is the first progress report on what's going on with my OpenSim Artificial Life/Evolution simulation introduced in this post.

Since I am interested in social behavior I think a good place to start is simulating a population where prisoner's dilemma is operating. The term "game" here used in the game theoretic sense, gets its name from the following scenario:

Two suspects are arrested by the police. The police lack enough evidence for a conviction. The prisoners are kept separate and the prosecutor visits each of them with the same deal. If one testifies (defects from the other) against the other, and the other remains silent (cooperates with the other prisoner), the betrayer goes free and the silent accomplice receives the full 10-year sentence. If both remain silent (they cooperate with each other), each gets only six months in jail for a minor charge. If each betrays the other, each receives a five-year sentence. Each prisoner must choose to betray the other or to remain silent. Each one is assured that the other would not know about the betrayal before the end of the investigation.

(modified from http://en.wikipedia.org/wiki/Prisoner%27s_dilemma)

Now this scenario may not seem related to evolution but it turns out that this is exactly the sort of thing that happens when two animals related or not might have choices to cooperate or not with other animals either of the same species or sometimes other species.

A couple of design issues revolve around topics like how to link the organisms' behavor to genetics, represent the genetics of the interacting organisms and how to pass that genetics to offspring. To get a feel for the general strategy I have used in the past, go to this post.

One new technical issue is that unlike my genetics activities and my discrete generation evolution simulation, the organisms I am using here have to be able to replicate themselves independently of some command from me. Now that a scary thought since I don't want to over run a sim with thousands of little evolving critters.

Fortunately the LSL Wiki gives a good rundown on how to make non invasive self replicating critters. For instance have them be killed if they get out of your parcel. Right now my critters are able to detect the parcel boundary and turn away from the boundary....but I will add the kill feature as an additional safety.

One of LSL's safety features isn't going to work in my case. LSL recommends using a counter that is decremented by 1 each time an offspring is replicated from the parent. The value of the counter is passed as the integer parameter in the llRezObject function and when the counter reaches zero say after 10 generations the critter dies rather than replicating. The problem is that I use this parameter to pass the genetics from parent to offspring.

So I need to figure out how to prevent non invasive critters from over running my parcel. My first impulse was to have each critter sense the number of critters in the parcel and stop them from replicating when the parcel count gets to a certain point-kind of a parcel carrying capacity. And that might be a good idea but the simplest way to do it might be to have one object track the number of critters in in the parcel and periodically send that to all the critters using llRegionSay on a private channel and have the critters individually adjust their replication as required.

A more interesting option might be to use a sensor event to get the number of critters in a set radius around the sensing critter and use that to adjust the rate of reproduction, perhaps make it negative. So critters in a region with few others would be able to multiply more rapidly than those at higher densities. I already use a sensor event to let the critters detect each other so I could modify that to do this as well. This would actually be quite realistic since organism's reproductive rates are often affected by density dependent factors.

So here is what I am thinking on the replication issue:

1. Implement a die if beyond land owned by me along with my current boundary detection routine.
2. Implement a central controller that determines how many critters are in my region and either kills them all or stops them from reproducing further if they get too numerous beyond some large population size say 4,000.
3. Implement the sensor option to determine the density of critters and adjust the rate of local reproduction. Should be possible to tweek this so the population's maximum would tend to run at a lower limit than 4,000, say 2,000.

Maybe I am being paranoid but who knows what sort of chaotic things can happen with 2,000 artificial life forms run around a sim unchecked. It would be the equivalent of pythons in the Everglades and probably really annoy my neighbors.


This may be interesting in its own right as a simple population growth model even with out the complication of prisoner's dilemma! If you want to join the fun and see what's going on, IM me as Paul Decelles in ScienceSim or as Simone Gateaux in SL . Remember, you need to configure your client for OpenSim and set up a user account. Also Avatars do not port between SL and Opensim.

The ScienceSim site will get you started.: http://www.sciencesim.com/ Make sure you read and follow the directions and rules carefully.

PS: SLurls don't work in OpenSim as far as I can tell but if you are in OpenSim I am in
Oregon North 47, 184, 23 in the ScienceSim grid.

Saturday, January 30, 2010

I know I have been quiet...

But there is a lot going on. First of all I am busy moving and tweaking some of my projects from Spring and its always interesting to revisit scripts with a bit more maturity and say to one's self. "Gee that's sloppy" or "hmm why didn't I do it this way".







At any rate
some of my online students will be able to work on my college's island and use some of my materials for their course work and I will be using some of the simulations in lecture as well.

Also, as if that isn't enough, I have a six month land grant for a larger scale project at INTEL's Science Sim using OpenSim and am starting an artificial life type simulation to visualize some of the interesting effects spatial distribution and simple behaviors can have on group properties and evolution. This is inspired both by my Second Life sabattical project on evolution but also by my interest in social insects where complex group behavior arises from simple individual behaviors. And it is inspired by Aaron Duffy's work on fern genetics at Science Sim.

The difference between my project and Aaron's is that his is a special purpose project focused on fern genetics while I am working on visualization of more general sorts of models that visitors can work with and watch evolve over time. My project is more like some of the Artificial Life described here:

http://en.wikipedia.org/wiki/Artificial_life

So this is quite different than my earlier simulation which uses population wide parameters such as fitness to determine what mix of critters to have as you go from one generation to the next. It is also a bit like the now defunct (unfortunately) ecosystem project in Second Life. One big difference is that I am going to use LSL and Opensim functions to change the characteristics of the critters (within certain limits so as not to blow stuff up and crash servers) in response of changes in an underlying "genetic" system. So organisms of different sizes, shapes and with different rates of movement and types of behavior would be allowed to mutate and evolve.

I will be reporting on this throughout the Spring. The attractiveness of OpenSim is that depending on your server many of the limits of Second Life such as the small number of prims available to the user in a parcel. For instance I have use of an OpenSim region that supports 6,000 plus prims. This is all part of INTEL's land grant program. If you are interested you can learn more at http://www.sciencesim.com/wiki/doku.php or at:
http://shenlei.com/2010/01/03/sneak-preview-of-settlement-land-in-sciencesim/

If want to see what can be done at ScienceSim in terms of large scale simulations check out these pictures of the ScienceSim model of Yellowstone Park: Yellowstone without the bears. The picture in this post show me, actually my ScienceSim Avatar, and some of the critters I am working on. These guys look to me a lot like Paramecia but one visitor thinks they are more like banana slugs. Right now they don't do much but wander randomly around the parcel and when they encounter each other they stop for a bit and alternately blink red and white. I will not tell you what my wife thinks they are doing ...that may be a bit TMI.

For those interested here is a bit more about using geological data with OpenSim at ScienceSim.

As always, you can contact me in SL as Simone Gateaux or now in ScienceSim as Paul Decelles.