i personally don't think it should be turn-based ...
I agree. It should be time based. Something on the order of
while (TwoOrMoreAlive()) {
for my $robot (@ArrayOfRobots) {
eval {
local $SIG{ALRM}=sub{ die };
alarm(1);
$robot->Process();
alarm(0);
};
}
}
This would give each robot a fixed amount of time to do something. Somehow, we would want to parallelize the process (using a smaller time increment than 1 sec....). But by doing it time-based gives advantages to people who write very fast, efficient code: which should be a bonus.
I have gobs of ideas, just not enough time to write them all down ... more later.