Monday, February 12, 2007

Soda Constructor


Soda Constructor
is a sweet physics-based webtoy that I just saw for the first time today. It takes a bit of getting used to, but you can use it to make little artificial creatures that move around and stuff. I'd check out some of the default preloaded creatures to get some inspiration, then have some fun.

These guys are doing some real interesting stuff. I've played around quite a bit with physical modelling in Java (which is what they use), and it can be lots of fun, but a little tricky. This implementation is spring-based, which means you can't get things like rigid bodies, but a stiff enough spring comes pretty darn close. Of course, set the springs too stiff, and everything just explodes...but carefully chose ranges of parameters (or simulation method) can reduce the likelihood of this happening. I've managed to get this physics stuff working in my own stuff, but I've never set up a nice user interface for the whole thing, which is where Soda Constructor shines - it's extremely intuitive to use, you just click and drag to make points. The only tricky bit is to realize that you need to right click to deselect points, then click on the springs that are created to connect them to the control structure.

But wait! There's more: the most interesting part, to me, is Sodarace, where they are using genetic algorithms (one of a handful of soft-AI techniques) to evolve these creatures from scratch. You can see some of my thoughts on machine intelligence on my artificial intelligence blog (only a couple of posts so far); as you'll see, this is a subject I am very interested in, and Sodarace is more or less the applet (okay, actually it's a JNLP program) that I've been meaning to write for a long time now. Guess they beat me to it! The especially interesting part is that the machine evolved things tend to do very well versus the human designed ones, even if they don't look so pretty.

No comments: