Author |
Topic: bot_ArimaaScoreP1 and P2 (Read 1220 times) |
|
omar
Forum Guru
Arimaa player #2
Gender:
Posts: 1003
|
|
bot_ArimaaScoreP1 and P2
« on: Feb 23rd, 2006, 10:04am » |
Quote Modify
|
These bots use only the Arimaa Scoring System formula to evaluate the board positions. They are very easy to beat since they push lonely rabbits forward faster then even ShallowBlue. It's going to be interesting to see how low the ratings of these bots get and if they ever win any games by goal against humans.
|
|
IP Logged |
|
|
|
Fritzlein
Forum Guru
Arimaa player #706
Gender:
Posts: 5928
|
|
Re: bot_ArimaaScoreP1 and P2
« Reply #1 on: Feb 23rd, 2006, 11:12am » |
Quote Modify
|
I can see that it would be nice to have an even easier bot than ShallowBlue to ease new players into the game. However, having these two additional bots in the ladder is yet another argument for only requiring one win to get past each bot in the ladder. As it is now, players who play well from their very first game might get bored and frustrated having to win a bunch against lame opponents. Why force them to win eight silly games against ScoreP1, ScoreP2, ShallowBlue, and Arimaalon if they are ready to move up to a challenge much earlier? I would hate for the ladder to take away from the excitement of encountering Arimaa rather than adding to it. Even if the two-win requirement is kept in place for the higher bots, ease up for the totally brain-dead ones.
|
|
IP Logged |
|
|
|
RonWeasley
Forum Guru
Harry's friend (Arimaa player #441)
Gender:
Posts: 882
|
|
Re: bot_ArimaaScoreP1 and P2
« Reply #2 on: Feb 23rd, 2006, 11:16am » |
Quote Modify
|
It was interesting that they pay attention to your own advancing rabbits and block them if they can. I wonder how many ply they need to attempt to defend their advanced rabbits or not advance them if they can't be nominally defended. One logical strategy for them would be to play for a blocked game at their opponent's end and wait for time to run out.
|
|
IP Logged |
|
|
|
Ryan_Cable
Forum Guru
Arimaa player #951
Gender:
Posts: 138
|
|
Re: bot_ArimaaScoreP1 and P2
« Reply #3 on: Feb 23rd, 2006, 2:13pm » |
Quote Modify
|
Wow, this really drives home how horrible the scoring function is. Advancing a R a single step can be worth way more than a M. It will be interesting to see where these bots equilibrate. I think it will basically be determined by the rate of timeouts/resignations.
|
|
IP Logged |
|
|
|
Fritzlein
Forum Guru
Arimaa player #706
Gender:
Posts: 5928
|
|
Re: bot_ArimaaScoreP1 and P2
« Reply #4 on: Feb 23rd, 2006, 3:16pm » |
Quote Modify
|
on Feb 23rd, 2006, 2:13pm, Ryan_Cable wrote:Wow, this really drives home how horrible the scoring function is. |
| Yes, it is pretty bad, and recall from the rating deflation thread that ArimaaScoreP1 is approximately 1000 points better than a random bot. Unfortunately, if ArimaaScoreP1 never wins a game on the server ever, it will give us no upper bound on how high the rest of us should be on an "anchored" scale. I think ArimaaScoreP2 might actually legitimately win against a weak human player, because it is defensive by nature, whereas ArimaaScoreP1 is blindly offensive. Still, I don't think ArimaaScoreP2 will win as often against noobs as ShallowBlue will. I'm also curious about head to head results between ShallowBlue and ArimaaScoreP2. It is possible that the former will be harder for humans to beat while the latter wins more games head to head. If that sort of intransitivity pops up, it will be another reason to avoid anchoring the rating scale with a ladder of bots of fixed rating.
|
|
IP Logged |
|
|
|
Ryan_Cable
Forum Guru
Arimaa player #951
Gender:
Posts: 138
|
|
Re: bot_ArimaaScoreP1 and P2
« Reply #5 on: Feb 23rd, 2006, 4:24pm » |
Quote Modify
|
ArimaaScoreP2 managed to get a timeout win against kerro. It appears that he forgot to press send on his final winning move. I think a noob would have to be extremely dumb or sub-flash tutorial clueless about the game to loose to ArimaaScoreP2. The bot has almost no concern for protecting or killing noble pieces. I don’t think ShallowBlue has much chance of loosing to ArimaaScoreP2 either. I am most interested in seeing how big a handicap we can give the ArimaaScore bots. It would be interesting to see how good FAME maximizers did. There would need to be something added in to get it to try to goal though.
|
|
IP Logged |
|
|
|
omar
Forum Guru
Arimaa player #2
Gender:
Posts: 1003
|
|
Re: bot_ArimaaScoreP1 and P2
« Reply #6 on: Feb 25th, 2006, 10:03am » |
Quote Modify
|
It's very easy to create and experiment with your own bots. Just download the MatchOffline kit from the download page. I contains several sample bots. You just need to edit the eval.c file to define your own method of evaluating the board position. Then just compile and test the bots against each other. Here's what the eval.c file for ArimaaScore looks like: /* --------------------------------------------------- Uses the Arimaa "Scoring System" formula for the evaluation: TotScore = MyScore - OppScore Score = R + P*(C+1) R = Points given for how far the players Rabbits have progressed. The row to which each rabbit has progressed is cubed (i.e. raised to the power of 3) and these values are summed up to determine R. The first row is 1 and the goal row is 8. C = The number of Rabbits the player still has on the board. P = Points given for the pieces the player still has on the board. The value of each piece on the board is summed. Value of each piece is: 1 - Rabbit 2 - Cat 3 - Dog 4 - Horse 5 - Camel 6 - Elephant ---------------------------------------------------- */ int eval( position *p ) { int i; int c; int tot[2] = { 0, 0 }; u64 dom; // bit board of dominant pieces. u64 non; // bb of non-dominant pieces int sC; // the C value of the score int sP; // the P value of the score int sR; // you guessed it for (c=0; c<2; c++) // c = color, 0 or 1 { int e = c^1; // enemy for convienence. // calculate the P value of the score sP = 0; for (i=1; i<7; i++) // i loops over the types of pieces 1=rabbit .. 6=ele sP += bit_count( p->bd[c][i] ) * i; // calculate the C value of the score sC = bit_count( p->bd[c][1] ) * 1; // calculate the R value of the score sR = 0; for (i=0; i<8; i++) // i loops over the rows of the board sR += bit_count( p->bd[c][1] & adv[i+1][c] ) * (i+1)*(i+1)*(i+1); tot[c] = sR + sP*(sC+1); } if (p->ply & 1) return(tot[1] - tot[0]); return(tot[0] - tot[1]); } That's the brain of bot_ArimaaScore
|
|
IP Logged |
|
|
|
|