[PATCH] Handle case where an AI sends an invalid message and then crashes If an AI sent a bad move and then crashed, a SIGPIPE would be reported rather than the AI's bad move. NOTE: There is an issue with Program::Running, because the segfaulted AI still returns 'true', which leads to confusion in handling SIGPIPE. Should probably handle segfaulting AIs better. Then again, people should probably not make segfaulting AIs. [SZM]
Minor rule changes simulate.py scores SURRENDER as 0 points for the surrendering AI, 3 points for its opponent. SURRENDER can be sent instead of a normal move. AIs must now place all 40 pieces during setup
Tweaking manager/simulate.py, updating manual and webpage You can now pass arguments to your AI through the manager program. Simply include the path to the AI and arguments in quotation marks. EG: ./stratego "../../agents/foo/bar --debug" ../../agents/other/agent simulate.py was making broken links to log files, fixed. Logging of stderr! If anything is printed to stderr, it is all saved in logfilename.stderr by simulate.py Tried to make the manual page better, probably failed. Updated webpage since we have now changed the date. Also tried to fix vixen again, haven't tested.
pause AI in opponent's turn (Temporary) This is a temporary and not entirely effective solution, to prevent AI from spamming CPU useage to make their opponents time out. Yes I could use renice instead, but its just as easy for an AI to get around. I will have to replace this with a better solution. But I don't have one at the moment.
[RULE CHANGE] "NO_MOVE" is no longer a legal Previously AIs could respond with "NO_MOVE" whenever they felt like. Officially, now they can only respond with "NO_MOVE" when they have no mobile pieces left. (That is, only Bombs and the Flag are left). However the game should end by a VICTORY_ATTRITION condition as soon as either player loses its last mobile piece. So technically, "NO_MOVE" can't ever be legally printed, because the game should have ended. If it doesn't, there is a bug. Updated webpage, updated manual, updated README Going to email the list later today. Goodluck! PS: The rule change is due to a mean initial setup, for example: ********** ********** ********** BB**BB**BB ..++..++.. ..++..++.. etc Here, Red has placed Bombs in all three "lanes". Red is unable to move. However, as long as Red can use "NO_MOVE", an unsuspecting Blue will lose most of its pieces on the Bombs. (Unless Blue puts a miner up the front...) But anyway, being able to not move is silly and not allowed in the real game.
[RULE CHANGE] *Victory by "attrition"* + Bug fixes Minor bugs in the manager program fixed. Changed some messages for clarity, can't remember what, look at diff. Added VICTORY_ATTRITION; victory by destroying all of the opponents _mobile_ pieces (ie: Everything except Bombs/Flag) This means we don't get results of DRAW or DRAW_DEFAULT when one AI destroys all the other's mobile pieces. Since those games would last up to 5000 turns, this saves a lot of wasted time. AI should still respond with "NO_MOVE" when they have no mobile pieces. Made timeout value adjustable by an argument switch, '-T' Altered simulate.py to use a timeout variable and supply the switch to the manager program. So now I don't need to recompile and commit the manager program every time I want to test a different timeout value on mufasa! Mufasa is now on game 3 of the test round, out of 12. After FIVE HOURS. This particular game has lasted 1132 turns, with BLUE making "NO_MOVE" for the last 600 or so. The new victory condition will stop this sort of thing :) Merry Christmas!
Changed directory structure (again) I got fed up of typing progcomp2012/progcomp Obsessive compulsive urges rising...