REPLY TO COMMENT


Lars
Could you elaborate on the multi-tasking?  Scripts in Wintermute can perform a task, sleep, and repeat.  It can be as simple as putting a Sleep(number_of_milliseconds); function into an infinite loop.  As long as the loop gives control back to the rest of the running scripts by sleeping, it won't hang your game.  For example, if you want a character to hiccup for the next 3 minutes every 20 seconds after drinking grog, then you can simply put a loop in one of the "global" scripts that counts down from 9 (i.e. 180/20) and sleeps every 20*1000 milliseconds.  Then set a global variable drankGrog back to false.

Sounds just like what you described at:  http://www.pagetable.com/?p=614

Even the code is similar except it uses dot notation found in OOP.  So instead of "actor sandy face-right" you have an Actor object named sandy with a Direction attribute that you can set.  e.g. sandy.Direction = DI_RIGHT;  It's the same thing written differently.  DI_RIGHT is just an enumeration that describes which sprite to display.

There is virtually zero boilerplate.  If you do a 9-verb interface, all your objects will have boilerplate by nature (i.e. programming unique responses to verbs), if you even want to call it that, but otherwise, nearly all of the scripting is describing what you see on the screen.