I was looking at and listening to Jean-Christophe Baillie’s presentation at the Paris Game AI Workshop on Urbi (which is scripting for robitics) and starting doing some more research – Urbi is quite amazing and would be extremely powerful for doing scripting in a game, especially for AI.
Some of the things that are incredibly cool relate to parallelism in Urbi. From that conceptual change from semantically instantaneous commands, you end up with things like tags, command duration, and concurrent “blended” access. It also leads to interesting event-based programming using at and whenever, like:
at (test) command;
Which is sort of like a persistent if that will wait until the test becomes true.
or:
whenever (test) command;
Which is to while what at is to if.
There are other cool things like grouping objects (which lets you reference a bunch of objects in parallel by referencing only the group object), and soft tests.
What I really like, but couldn’t really see how it works, is it seems that Urbi is designed to play well with others – It looks like your classes can be written in another language and made to inherit from UObject. They say it is fully interfaced with C++, Java, Python, Ruby, etc.
Anyway, that is my (probably rose-tinted) review… I was just really impressed by the language and some of the concepts behind it. Looking at it was less like the first time I encountered Lua (“Oh, that is pretty neat, I guess. Sure is fast… it has that going for it.”) and more like the first time I encountered Python (“$#!?, why haven’t I been using this all along?”)