Thanks so much for the interest and the questions. You are correct in that the web-workers repo is related. Its the repo we use on the back end. To answer your questions in turn:
"How are you isolating the brains from the sensitive game data and from each other?"
- We are sandboxing each user's code in an isolated environment where a server listens for a POST request on a specified endpoint. That request carries the game data with it and after the user's code runs, the server sends back the result of that function, which is supposed to be a string (North, East, South, West, or Stay). The game data itself is update on our server, after receiving the response.
"How long does a single game take to run given max users?" The games will take a maximum of 24 users, which will take a maximum of 30 minutes to run, if every user does something like "while(true)." Each server has a max-timeout setting of around 2 seconds.
I hope that answers your questions and please feel free to offer any feedback.
Thanks again!
So the AI can use up to 2 seconds of "thinking time" for each move on a some x86-server-like machine? Having played BitBath [0], I think this limit matters.
No matter how many turns are played, a match ends after 30 minutes? According to the rules, no team wins in this case?
Thanks for the clarification. I wasn't very clear in my answer before. The game ends after a maximum of 1250 turns or when all of one team's heroes are killed. If the maximum turn is reached, the team with the most diamonds wins. If every player on the team took the full 2 seconds on every turn, the game would last around 30-40 minutes.