I built a piece of art yesterday. "The Atheist".

The story is in the QR-Code:

You can either point your smart-phone at this card in real life, or even at this image in your browser, but you can also read this using an online decoder pointed to this image.

Recording in the bush this time with my new recorder, so you can hear the birds in stereo, this is a podcast about getting the deployment details worked out.

It was quite a bit of struggle to get it working correctly, but once the deployment does work with Java Web Start, it is pretty smooth. But the most refreshing thing about recent developments has been a big simplification on the server side. I actually said goodbye to Hibernate and Postgres, and with it all the configuration that those require. Many dependencies melted like snow.

I like the idea of making deployment of the game really easy, so maybe it will spread to hundreds of servers eventually, and they could be federated. Now, without the database, there's really only one thing you have to set up and that is an environment variable TETRAGOTCHI_HOME to point to a directory.

The players and their hashed passwords are stored in an XML file there, and a tree of subdirectories grows as the game progresses, where the world is persisted every minute. This will enable a time machine, since we will be able to return to a place and time to relive it. I suspect that it may take a while for people to fully appreciate what that means.

Technorati Tags:

Another podcast episode, and this time about yet another switching of gears. I now have an even simpler approach to conflict resolution, or deciding who wins during an attack.

While trying to get chase-and-nibble working as I described in the last podcast I decided to see what it would look like if you saw the history of the tetragotchi movement in the form of a breadcrumb trail. The body's center of mass is recorded every hour so that as the body moves, it leaves behind a tail. It turns out this tail is a great way to measure fitness! You are as fit as how fast you have been able to run during the past 24 hours.

So now, when your radius touches that of your prey, the question becomes how long are your two tails, and the longest tail gets to consume the other. Here's a short video of the initial "death sequence", which has since become even a little better.

Since the above video I have added something else interesting to the death sequence, a solution to the question of where to have the prey re-born. I decided to have the prey travel down the tail of the predator to the end, and be reborn there. It's nice and out of the way of the predator. It's fun because as prey, you ride the tail like it's a monorail, until you're where your predator was 24 hours ago and then you are re-born in a new tensegrity egg.

Of course, after rebirth, you realize that you have inherited the body of your predator.

Technorati Tags:

This podcast episode is the first to use the new name, and it mainly describes a departure from the "pounce" approach to resolving predator-prey conflicts. Pounce turns out to be much more difficult to realize than expected, due to how accurate the launch timing has to be, but fortunately I literally stumbled upon a more interesting way of interacting where the predator catches up to its prey and sticks to it, nibbling at its energy supply. There's a social advantage to this because it means that two players will spend time in a sustained conflict rather than one that is instantly resolved upon impact.

The latest movie is here below, and it can also be found on the new website at http://www.tetragotchi.com. No audio yet, but I'll add an audio track to the next movie. This is going to be a good way to introduce the game!

More news in this podcast: Heads-Up text right on the graphic screen, hub-and-spokes network model, and the nice rendering of the directionality of the tetragotchi body which actually always shows which movement gene is currently activated.

Technorati Tags:

Here's a new movie of a tensegrity sphere, generated this afternoon using the new trick of writing image files from the OpenGL canvas.

The tensegrity itself is built by an algorithm that starts with a virtual scaffolding in the form of a geodesic sphere of a given frequency (Bucky Fuller term). Every edge of the scaffolding then gets a bar attached to it, and then all the bars are rotated on an axis through their middle and through the sphere center, just a few degrees.

Then the algorithm visits each of ends of these bars and strings cables between them in rings around the scaffold's vertexes, and also between rings to complete the structure. The geodesic sphere scaffold is then eliminated, leaving only the bars and cables, and then the physics makes it settle to a nearby radius.

Then I turn on gravity and let it fall to the ground. Each bar and each cable is only responsible for itself, and the remarkable liquid-like behavior is an emergent phenomenon of all these pieces together.

Technorati Tags:

This weekend I discovered that there is an easy way to output images directly from OpenGL using a utility function. Then using ImageMagick to convert to JPG files, followed by Mpeg Stream Clip to make a movie of it.

In about a half-hour I was able to create and upload the following experiment:

Technorati Tags:

When I first put up the previous blog post the link to the search for the term "tetragotchi" revealed zero documents. Now there are some, but they're still exclusively things that I myself have written either on this blog or on Twitter.

I'm in no hurry whatsoever to see the name spread around the internet, because the game is not yet ready to be played. I will, however, be able to see the word spread when that eventually happens.

Technorati Tags:

For a long time now I've been trying to think of a name for the critters that evolve in the Darwin at Home game. There's just one for each player, and it continues to live (however slow-motion) even when you're not playing. Several people have independently mentioned during demos/presentations that it reminded them of Tamagotchi and I've always liked that association.

You have to act quickly when Google says "Your search - tetragotchi - did not match any documents." I suspect that this page will make it give an other answer very soon, but I've already got tetragotchi.com and tetragotchi.org.

This podcast episode starts with an audio segment from my visit to Ken Snelson in New York in which we talk a little bit about the definitions of tensegrity, and how it has gotten muddled up over the years. The audio is from approximately when the photo below was taken, because he put this bag of bars on the table as illustration.

The rest of the podcast is all about the new gaming elements that I've come up with, some of them during a brainstorm with my 16-year-old son, who is much more of a gamer than myself.

Pounce: Not only will there be locomotion genes for the different directions as described in the previous podcast, but now there will also be a pounce gene. The idea is that a competition between predator and prey will be resolved by judging which of the two has the greatest altitude at the moment that their radii touch. It's kind of like in platform games like Super Mario where you pounce on things to consume them.

Time: I've finally worked out some of the numbers to be better able to talk about the two temporalities, slow motion on the server, fast evolution on the client. I've taken the server time to be leading, and chosen for having the server do one time sweep every 3 seconds, nice and slow. This works out to 1200 time sweeps every hour, so on the client where you can do a thousand or more time sweeps per second, your client-side evolution is experimenting with the coming 2 to 24 hours. A whole day is 28,800 time sweeps, which is enough to cover some terrain and do a good pounce, and on the client you can see this happen in less than a minute.

Thinking in these temporal terms, you realize that a properly executed pounce will take two or three hours to complete. I think it's potentially exciting to know that all this is taking place when players are offline, however slow motion.

Genealogy: When a predator critter pounces on a prey critter, the prey is consumed by the player behind that critter comes back to life again afterward as a mutated descendant of the predator. The consequences are interesting.

Capable bodies will reproduce their shapes in the population, so even if new players start with random genes (garbage in garbage out) and therefore with hopelessly misformed bodies, they can just be consumed by a good body and return as a descendant.. also probably a good body. Only the growth genes are inherited, so the new player will have to re-train the movement and pounce genes.

But what if you attack and defeat another critter who has already defeated a number of others and therefore already has a bunch of descendants? Well, the defeated critter becomes your descendant as usual, but their former descendants become your minions! There's motivation to attack and win.

It also implies that it will be fairly easy in the beginning for players to saunter around and "eat n00bs". Ha ha. Transforming them into viable bodies for their second life. Eating n00bs is easy, but eating a successful ancestor-of-many will be difficult and rewarding because you inherit everything they had while turning them into your descendant.

Above every body on the planet will be written their minion and descendant counts, so you can see what you're up against.

Technorati Tags:

More than twelve years ago I visited a sculpture garden at the Kröller-Müller Museum and spent a couple of hours immersed in the Needle Tower sculpture there. I was determined to reproduce it in a software model, and when I finally did after much study, I contacted the artist Kenneth Snelson to show him what I had done. We exchanged a few emails and since then I've always wanted to talk to the man face-to-face.

Well, finally after all this time, I had the opportunity! Yesterday I spent half the day with him in and around his Manhattan studio. We had a wonderful time chatting about anything and everything. I have lots of audio recorded and I'll try and work it into a podcast when I get back home.

Ken's studio has beautiful things hanging and sitting everywhere, and as usual all of it appears to be lighter-than-air. There's a shine and a workmanship to these objects which I wish I were able to emulate more effectively in the things I build, but my efforts have been very humble by comparison.

Each one of these things just invites you to touch it, and when you do you can feel that the level of tension in the cables of these tensegrity structures is kind of guitar-like. Some day I would love to be able to build physical things like this and surround myself with them.

Besides tensegrity, Ken has always been puzzling about the atom. We talked about this at length, and he has never been happy with the fact that our model of the atom as something that people can actually grasp has disappeared.

At a certain point, the quantum mechanical model became such that all the physicists would deny that there is any useful analogy with something that we can easily imagine or hold in our hands. Physicists were able to make predictions to may digits accuracy, but the model itself was no longer imaginable as a structure. It was as if algebra took over suddenly, and all geometry was seen as naive. It became wizardry, and you could almost say that the beauty was removed, at least for the non-wizards.

The circular-spherical geometry that he has proposed as a model for the atom is definitely very beautiful, although it hasn't received a stamp of approval for its scientific accuracy and ability to predict behavior from the physics community. Perhaps someday we will be surprised to find it to be accurate after all.

We got into a good discussion about definitions when it comes to tensegrity, at which point Ken walked over to a workbench and came back with a floppy little mesh holding a bunch of tubes, which he plopped on the table.

This thing represented discontinuous compression pushing outwards with the mesh or membrane of tension pulling inwards. The essence of it, right there.

There was a beautiful tensegrity arch parked right beside his bike, and it looke like it was still under construction or had been recently constructed because there were colored paper labels on all the tension members. Having built one little tensegrity tower myself, I can hardly imagine the amount of precision and tweaking you would need to use to build an arch like this one, again strung like a guitar.

His studio is full of little structural experiments, and just as I expected, he uses this as a kind of reference library. He's a sculptor, so picking up thing and bringing it to the table as part of the conversation seems very natural.

There were beautiful little objects of many different kinds to look at and play with, and each one seemed to be an exploration of a particular structural idea. There's nothing like picking something up, feeling it, and looking at it from all angles when you want to communicate these ideas. There were even some little sculptural experiments done with magnets! (another obsession of mine).

And then on the wall behind a few computers standing on the desk surface was this beautiful shiny tensegrity ring. I couldn't help but keep looking at it.

Ken gave me a great gift that I will treasure as well: An autographed copy of a lovely book about his work! This is something that I will always have on my desk for inspiration, and as a souvenier by which to remember this inspiring visit.

Technorati Tags:

A final podcast episode for the year, looking at the latest developments and looking forward to a release in the first couple of months of 2010.

Here are a few screen shots to go along with the audio, to give an idea of what I've been demoing for friends the last while.


Just before birth

The view from hovering position of almost fully grown body suspended in the middle of its tensegrity egg.


After Birth - Set the goal

Arrows move you in any direction, and with a mouse click you can set the locomotion goal. If the critter is a little evolved it will stumble in that direction, but if not it just wobbles aimlessly.


Down at the Surface - Evo Mode

Evolution mode, where the "ghosts of evolution" emerge from the body in what looks like a purplish cloud, and where you can see the one special white ghost which is the current record holder in this particular fitness challenge. This is a view from near the front of the goal arrow.


From Behind

Moving over to almost behind the critter, you can see the cloud of wireframe ghosts competing against each other and you can barely see the white champion ghost at the front.


Evo Mode from Above

Finally here we have a view from above in hover mode, and you can see the drama taking place, and also why the white ghost is indeed the champion. New ghosts keep appearing all the time, and the ones furthest behind the white one tend to vanish. After a while, the critter can actually walk quite nicely.


Happy holidays everyone! Within a couple of months this game should be online and ready for you to try out. For now I'm off to visit one of my heroes Ken Snelson in New York City.

Technorati Tags:

There's an acceleration that I'm building into the game which makes evolution happen fast enough that players will not have to be as patient as the mythological Creator had to be with biological evolution. It's even kind of quantum mechanical, if you're willing to stay at the metaphor level.

You start frozen in space and time, and when you go into evolve-mode, the competition begins. It's a battle of fitness between a population of ghost clones, each of which has experienced a mutation in its movement genes.

In the screenshot below you can see the beginning of this process, with the ghosts emerging from the frozen body.

After a couple of seconds, the ghosts have been following their genes and executing a series of muscle contractions, and you can see the rising diversity of outcomes as time goes on. When a photon departs from its source it travels on all possible paths to its destination, so this is a humble reflection of that.

The body in the foreground is a frozen body which is so far the fittest, or the most successful in reaching the goal, as represented by the series of red arrows above.

The third screenshot here shows the situation very near the end of the lifetime of this one short "generation", and if you look carefully you can see that there is at least one ghost which looks like it might overtake the current winner and claim this new position for itself.

What isn't shown is the fact that the ghosts make up only half the population of competitors.

The best performing half of the population is not visible, except for the current record holder shown in the foreground of these screenshots. They are invisible, but they represent a good number of runners-up for the leading position and are therefore kept as potential parents of the next generation. The interesting thing is that these others may have better ideas for how to proceed than the current record holder.

After each generation, half the population is discarded, and then all the new replacements are mutations of the (mostly invisible) top half of the population.

Sometimes during such a deep dive, the degree of deferment of gratification drives you nuts. In my mind's eye there has been something happening for months... but only in my mind. The critter bodies were evolving with their new genetically-grown trunk shape and tetrahelix limbs and the fittest movers were passing their genes on to future competitors. They were walking on the surface of the sphere, and maybe even swimming in the water.

Well after such a long time building and tuning the building blocks of the Darwin at Home game, today for the first time my eyes have actually seen it happen! Here's the first screen shot:

Above you see a critter, with its white "torso" grown by the branching symmetrical tetrahedron process, and its colorful tetrahelix limbs (stress is color). When the evolve key is pressed, the "Parallel Universe" evolution starts to happen slowly. Thirty mutants are pitted against each other to reach a goal, which is a direction I've given.

What you see here is the full rendering of all of the competitors after a number of generations, starting to distinguish themselves ever-so-slightly by hobbling slightly closer to their current goal. You have to keep in mind that these critters are all existing in the same space, but they do not experience each other in any way. Parallel universes.

To really get them hopping I have to turn off the visual so they can buzz at many times the speed, in "accelerated time". Wow, but it's nice to see this working, finally.

Technorati Tags:

This is kind of a note to myself, after searching around quite a bit to find out what the hell is happening with JOGL. I found this link:

http://download.java.net/media/jogl/builds/archive/

Last week I visited my friend Sam and got him set up with his development environment on his fresh macbook pro, and found out that it was quite a challenge these days to find and install JOGL for development. It seems a little confused, so I'll have to make it clear somehow in documentation how to proceed once I figure it out myself.

Also, it became obvious that I really needed to get around to restructuring things to make them more developer friendly. I'm also a little tired of the performance of sourceforge these days, so I'm making a fresh start with a new GPL v3 license and by setting it all up at Google Code:

http://code.google.com/p/darwinathome/

While moving the code over from sourceforge, I did a lot of restructuring and renaming to make it a lot more of a consistent whole. Soon it should be a fairly easy setup for developers.

Technorati Tags:

There has been a lot of coding between the previous podcast and this one, just not a lot of podcasting. Time to do a little catching up.

It's not that it's so late at the office, it's that the winter solstice is approaching so it gets dark pretty early. In this podcast episode I try and summarize the work I've been doing since the summer. It has been fairly difficult to get all the parts working but the results are satisfying.

This is a side project, although I've been able to invest a whole lot of time in it the last while, so I don't feel terribly guilty about having release dates slide.

A toast, to enjoying the process and to hopefully getting it just right eventually!

Technorati Tags: