I wish your graphing software had a better label-layout algorithm. (I'm not seeing AbstractSpyTreeBot
on the charts, even after downloading the images to look closer? Was it disqualified, or am I just blind?)
Neither. I just forgot to uncomment it. I included literally every other bot. Time for another restart. At least I only wrote 11,800 words this time.
I'm going to finish this version of the game anyway, in personal blog posts, since I have already written up the results. Then I'll post the real game with AbstractSpyTreeBot
.
Not quite as good for me as I would have hoped, but we're leaving the early game and heading into the midgame, where the clones will gradually start defecting against outsiders, leading to a showdown for dominance between clones and Chaos. The clones don't quite seem to have critical mass, but I care less about who wins and more about how long it lasts.
The graph for Silly 2 Bot is great, it shows exactly where weirdos and attackers became a marginal force.
Edit: This unofficial version of the game is missing AbstractSpyTreeBot.
MeasureBot maintains its lead. SimplePatternFinderBot takes second place.
Deep dive into SimplePatternFinderBot
Yonge's SimplePatternFinder can speak for itself.
if pattern != None:
if pattern.IsPatternFairOrGoodForUs():
# Try and stick to it as it looks good
ret = pattern.OurNext()
else:
# We have a problem. If it is a smart opponent we
# don't want to encourage it to stick with it, on
# the other hand if it is a dumb bot that will stick
# with it regardless then we are better getting
# something rather than nothing. It's also possible
# we might not have been able to establish
# co-operation yet
if pattern.OurNext() >= 3:
# The pattern is godd for us for at least this
# move, so stick to it for now.
ret = pattern.OurNext()
elif (self.theirScore + pattern.GetNext())/self.turn\
>= 2.25:
# Under no circumstances allow it to get too many
# points from playing an unfavourable pattern
ret = 3
elif self.theirMoves[-1] + self.ourMoves[-1] == 5:
# If we managed to co-operate last round,
# hope we can break the pattern and co-operate
# this round.
return self.theirMoves[-1]
elif not self.hasTotalOfFiveBeenPlayed:
# If the combined scores have never been 5
# before try to arrange this to see if it will
# break the deadlock.
ret = pattern.OurNext()
elif self.round < 4 and pattern.OurNext() >= 1:
# It looks like we are probably dealing with
# a nasty bot. Tolerate this within limits in
# the early game where it is more likely to be
# a dum bot than a sophisticated bot that is
# very good at exploiting us, so we at least
# get something
ret = pattern.OurNext()
elif self.round < 8 and pattern.OurNext() >= 2:
# If we would get an extra point be tolerant
# for a little longer.
ret = pattern.OurNext()
else:
# It looks like it is being completly
# unreasonable, so normally return 3
# to stop us from being exploited,
# but occasionally offer 2 just in case
# we have managed to accidentally get
# ourselves into a defect cycle against
# a more reasonable bot
num = random.randint(0,50)
if num == 0:
# Possibly this should only be done once?
ret = 2
else:
ret = 3
Bot | Team | Summary | Round |
---|---|---|---|
Silly Chaos Bot | NPCs | Plays randomly. | 4 |
Silly 4 Bot | NPCs | Always returns 4 . |
5 |
S_A | Chaos Army | "79% of the time it submits 1, 20% of the time it submits 5, 1% of the time it submits a random number between 0 and 5." | 6 |
Silly 5 Bot | NPCs | Always returns 5 . |
6 |
Silly Invert Bot 0 |
NPCs | Returns 0 onthe first round. Returns 5 - <opponents_last_move> on subsequent rounds. |
6 |
Silly 1 Bot | NPCs | Always returns 1 . |
6 |
PasswordBot | Multics | Fodder for EarlyBirdMimicBot | 8 |
Definitely Not Collusion Bot | Multics | Fodder for EarlyBirdMimicBot | 8 |
Silly Invert Bot 2 | NPCs | Returns 2 onthe first round. Returns 5 - <opponents_last_move> on subsequent rounds. |
9 |
Silly Random Invert Bot | NPCs | Plays randomly on first turn. Returns 5 - <opponents_last_move> on subsequent rounds. |
9 |
Ben-Bot | Norm Enforcers | Collaborates with jacobjacob | 9 |
Rounds 10-20 will be posted on November 16, at 5 pm Pacific Time.