Hopefully you can excuse the long delay between posts. My reasons for the slowdown in my activity are many, some of which I will attempt to explain here. Despite any reason I may give however, it's not a failing interest in the subject that has struck -- merely that I am not exempt from the constraints of time. I mostly find myself asking why I don't seem to have enough time as of late...
My first reason for not posting in a while is that my activity in Second Life in general has declined for the past couple of months. Where I once logged in almost daily for a year and a half.. I went down to logging in a few times a week.. and now I log in about once or twice a week for a couple hours each session. It seems that the days of logging in for 8 hours at a time are gone. As are the all-nighters and all-SL-weekends.
This lack of time is partly due to the fact that indeed, I'm no longer completely self-employed. I do work full-time now. It is also in part to the exponential rise in real-world projects I have found myself taking on. In no sense of order I am currently: writing a short-story (that could turn novel on me...), creating three websites (not including all the ones I work on at work), working on a short album, re-launching my record label, and gearing up to do some creative video work with SL. Even for me, a guy who's always working on some thing or another... this is quite a bit.
Another thing is work -- it's really busy right now as the small tech company I work for expands. I'm putting in a lot of overtime right now trying to help everything get to the next level. My longterm reason for this is that if things go well, I could get rewarded by better career choices... and I must humbly admit (with the utmost humility bordering on embarrassment) that I hope to one day be nominated for the Google/O'Reilly Hacker of the Year award. Getting to that point will be a lot of work -- but it doesn't mean no play!
Lastly -- an increase of games that I'm actually interested in playing have finally hit market. It took me a while, but I finally found Rome: Total War.. and more recently, the Quake 4: Special Edition. Sorry... but once in a while I relapse into gamerdom and such. Sue me.
So... I hope you understand that right now, my further experiments may take a bit of a back seat while my other projects take hold. Eventually I will get back around to this -- I really do still have high hopes. In the meantime... if anyone is interested at all in Artificial Life... please contact me. I really want to move this blog away from being a place to read about my personal inane experiments and towards becoming a forum for artificial life developers. So again... get in touch with me if you're into creating/modelling/discussing anything to do with artificial life.
All the best!
Artificial Life: Does it have a social function?
As I develop steering behaviours and deal with object avoidance, I have been quietly wondering what social applications these developments could have in a world such as Second Life. Would anyone even notice them? Would they be detested and forced to private experiments?
I have been musing of a flock of hypothetical lag-avoiding birds. They would be coded to detect signs of lag and flock to sims with the best performance. They'd also take off in startled flight in the case of a simulator reaching conditions that might cause it to crash.
This hypothetical flock of birds could have a direct impact in giving notice to local avatars about possible sim down-time. It could also lead avatars to lag-averse areas. And it would be a flock of birds -- meta-living creatures other than avatars to fill up the landscape.
However, there have to be other useful applications in online worlds alone for virtual life. There could be games, playing with ideas of genetics, interaction, behaviour learning, etc... so I'm putting it to all interested aLife enthusiasts -- what do you think are some of the potential uses for artificial life in Second Life and other virtual worlds?
KISS -- What is the simplest way to pathfinding?
My first answer to this is behaviour -- don't make the object moving through space analyze a series of paths and choose one. To me, this is a simple matter of fact. It's also one of those "set in stone" boundaries I have to work around with in SL. Scripts just don't get much memory and nowhere to store information outside of their allotment.
For those of you who don't know, KISS is an acronym for, "Keep It Simple, Stupid." The common meaning of this acronym extends from the philosophy that often the best and most efficient way to accomplish something is to do it in the most simple way possible. Therefore, rather than teach a dumb box how to plot, graph, and map an optimal path given a specific set of rules, I'd rather give it a few rules and let it loose -- it doesn't have to analyze and "pre-think" anything; it's behaviours and complexities will emerge from the initial rules.
The first problem is with the way prims are constructed in SL. When detecting their position, one can only query their centre vector from the sensor event. Circumference is a bit of an issue since it would be extremely easy to just avoid a one-dimensional vector.
There are a few ways one might approach this issue --
- Create a larger invisible and phantom prim and set the pathfinder at its center. Then use a collision event to detect surfaces and transfer the information through a linked message.
- Use a circumference protocol for obstacles. Obstacles would store their size and shape information -- when the object then detects the object in its approach vector, it would query for the nearest point and the normal; allowing it to readust its course.
Personally, I perfer solution number two -- it would allow the object to move about an environment and avoid object regardless of thier shape and the size of the space the object is contained in. However, it means every prim the object is to avoid must have a script which leads to a couple of other problems:
- The pathfinders would only be able to exist within a controlled environment.
- More scripts means more server resources
- Communcation may not register fast enough for objects to avoid collisions
So I have a course set up in Gibson and am currently working on implementing the second solution to pathfinding. My ultimate goal will be to keep the code from this phase as elegant and stripped down as possible -- it has to be extremely thin and lightweight so as to not add too much baggage when I reach the later stages of the evolution of these creatures.
Any discussion and suggestions are duly welcome -- as are other virtual life experimentors! Remember: if you have a project you'd like to discuss or experiences/knowledge to share; you can write about it here. It is my hope that this blog will become a community hub for artifical life designers, developers, and enthusiasts. Just send me an email or message me in-world!
Links -- Pathfinding
I'm currently working on Phase One at this point which is proving difficult. And it's not because developing an elegant and efficient 3D path-finding system using LSL is hard -- it's finding time to do it. The past week and a half I've been forced into a lot of overtime at work dealing with various events and emergencies. So things are a little crazy for me, but fear not -- I am still progressing.
In fact, check this out to see where I'm getting some of my reading material for this project from.
Basically, these critters will essentially be robots -- except their physical selves and environments are simulated. Later on I will introduce more "organic" behaviours, but for all intensive purposes at this stage I just need robots.
Anyhow, before it gets too late I must go -- so I leave you with some reading material. If you're interested, I highly reccommend checking it out. Lots of goodies in there that may help you with your own projects!
Space and pathfinding...
Satisfied with my fish for the time being, and while parasites are on hold with the giant floating jellyfish; I have decided to move my efforts to a more terrestrially constrained environment -- one I'm sure many may recognize almost as a clichee...
Behold the maze!
Itself also not complete, but it won't take long as I've been through building something like this before... the question this time is what I shall do with it. First of all, I'll tell you that I won't be torturing avatars or anything of the sort. This time I will be experimenting with pathfinding and territory.
This is will be my second big project.. the first being the ongoing development of a evolving genetics system (which will definitely take some time). Maybe I'll introduce self-replicating and evolving food sources for the critters on the side of this experiment. However, the focus will be on navigating space intelligently and forming territories.
- The first phase will have critters navigating the map by themselves.
- The second phase will have critters navigating in search of food.
- The third phase will introduce a "home" territory
- The fourth phase will introduce competing clans.
- And the final phase will allow the critters to harm one another in a vie for dominance. :)
I don't have the system entirely worked out yet, but I want to maintain the ideal of "less code, more behaviour." If anyone is interested in helping on this one -- feel free to drop a line.
Following the Politics of Creation and this discussion here (Second Life forums, signup required -- sorry) and with the limits of processing power and physics available to us in Second Life; I figure that it would be most prudent to move some of my larger experiments offline.
I'm in the process of considering which 3D engine to use and what language to program it all in. Personally, I'm in love with Ruby these days, but am just as comfortable in C, PERL, or Python amongst others. I've already looked into Irrlicht and Torque for rendering and have yet to see to physics.
I'd perfer something open-source if possible..
Yes, this is a plea for suggestions. If there is something out there with Ruby bindings I would be ever-so-grateful.
The politics of creation?
Following the reaction to my recent post I had been set to thinking... are there politics involved in everything we create in Second Life?
For example, a major concern I had forseen was the complaint that free-roaming artificial organisms would cause undue lag on other residents. While that is a perfectly valid concern, it did strike me a little deep. The notion of entitlement everyone has to their "fair (and unobstructed)" share was the first thing to cross my mind, but that is only the skin of the problem IMO.
The real problem I think is a growing collective notion that the space we occupy in Second Life is our property. There are many things that tend to intrude on that perceived property; to which we naturally would take offense. Age old wisdom realizes that posession is the grimy core of existence. We tend measure our importance in posessions... and not just physical ones it seems -- money, influence, relationships.. and now it seems even computational cycles.
Where there are resources to use, there are politics...
It is enivitable as history has shown us. So now I'm curious about the politics surrounding resource usage in SL. And while this has happened before, it seems to be taking on a more subtle form. IMO these new resource politics are creating a sort of "isolationist" thinking -- one where any possible way for a person to encroach on that perceived property in SL constitutes some form of offense. From experience, this offense is stronger in somer than others, but it is still distressing.
For one thing -- I do ask the question honestly -- does it breed a quagmire stigma against development and experimentation outside "your property?"
If we envision this sense of property as a bubble around each of us walking through a busy street, we might get a better idea of what is happening in my frame of mind. So this street is made up of our collective bubbles and parts of it change as we move through it. We may pause from time to time, our bubbles may increase or decrease momentarily, but we never stop moving in any permanent way. So the street becomes a constantly transitioning single space -- but never at one moment is it a single place occupied by several people. In effect, if I do something that changes the size of my bubble, everyone else's bubbles are affected -- mainly if I increase my bubble, other bubbles have to get smaller.
Smaller bubbles mean frustrated people. So I wonder why isn't the street just a single space? Did the days of prim-hogging forever close the idea of sharing to SL?
Personally, I can understand why LL eventually did lock down prim allotment to parcel sizes -- but even insubstantial computation cycles?
I fear that eventually EVERY resource will be disputed and parcelled out.