Edit: This unofficial version of the game is missing AbstractSpyTreeBot.

Rounds 3-9

MeasureBot maintains its lead. SimplePatternFinderBot takes second place.

Deep dive into SimplePatternFinderBot

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

Everything so far

Today's Obituary

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.

New Comment
6 comments, sorted by Click to highlight new comments since: Today at 1:51 PM

Thank you for organizing this! Looking forward to seeing the endgame play out!

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.

Oh no! I am so sorry. Looking forward to seeing all the divergent timeline analyses published, just so that all of your work writing this up doesn't go to waste. "The Darwin Game, alternate timeline number one, where the physics of the world were slightly different".

Thanks. :)

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.