The Darwin Game—Rounds 21-500
Rounds 20-30
EarlyBirdMimicBot takes the lead off the backs of the Clone Army.
Rounds 30-100
EarlyBirdMimicBot exhausts the clone army before the treaty expires in turn 90.
Rounds 100-500
From here on out it is a random walk. The bots with low populations die to variance. Congratulations to BeauBot and Insub’s CooperateBot for making it this far!
Winners
Note: This is an alternate timeline. It is not the official tournament.
EarlyBirdMimicBot by Multicore
BendBot by Zvi
MeasureBot by Measure
LiamGoddard by Liam Goddard
Today’s Obituary
Bot | Team | Summary | Round |
---|---|---|---|
RaterBot | Chaos Army | Estimates opponent’s aggression by counting the number of 3 s, 2 s, return 3 s and return 2 instances in its source code. Then picks a strategy based off of that. | 21 |
Copoperater | Chaos Army | Tit-for-tat, starting at 2 . | 22 |
RandomOrGreedyBot | Chaos Army | If the opponent averaged less than 2.5 over the last 100 turns then plays int(5 - opponent_avg) . Otherwise randomly selects 3 or 2 randomly. | 24 |
Silly TFT Bot 3 | NPCs | Plays tit-for-tat starting at 3 . | 28 |
Empiricist | Chaos Army | Performs the best strategy that would have worked against historical data. | 28 |
CopyBot Deluxe | Chaos Army | Tit-for-tat. Picks starting value of 2 or 3 based off of round number. | 32 |
Pure TFT | Chaos Army | ”For the first round, play 2 or 3 with a 50⁄50 chance of each. For each subsequent round, play whatever the opponent played on the previous round.” | 36 |
Silly TFT Bot 2 | Chaos Army | Plays tit-for-tat starting at 2 . | 40 |
CloneBot | Clone Army | CloneBot. Died before the treaty broke. | 42 |
jacobjacob-Bot | Norm Enforcers | Cooperates with Ben-Bot | 42 |
SimplePatternFinderBot | Chaos Army | Finds simple patterns. | 42 |
Silly 2 Bot | NPCs | Always returns 2 . | 43 |
Winner against low constant bots | Chaos Army | Starts with 2 . Then always returns 5 - opponent_previous_move . | 44 |
Clone wars, episode return 3 | Clone Army | CloneBot. Died before the treaty broke. | 50 |
a_comatose_squirrel | Clone Army | CloneBot. Died before the treaty bre | 52 |
CliqueZviBot | Clone Army | CloneBot. Died before the treaty bre | 53 |
incomprehensibot | Clone Army | CloneBot. Died before the treaty bre | 53 |
A Very Social Bot | Clone Army | CloneBot. Died before the treaty bre | 57 |
KarmaBot | Clone Army | CloneBot. Died before the treaty bre | 58 |
Akrasia Bot | Clone Army | CloneBot. Died before the treaty bre | 60 |
AttemptAtFair | Chaos Army | Oscillates between 3 and 2 , starting with 3 . | 95 |
OscillatingTwoThreeBot | Chaos Army | ”cooperates in the dumbest possible way” | 95 |
Why can’t we all just get along | Chaos Army | Doesn’t negotiate with terrorists. Doesn’t overly punish slackers. Attempts to establish steady tit-for-tat. | 98 |
BeauBot | Chaos Army | A sophisticated bot with 528 lines. It picks one of 3 simple strategies based on it’s opponent’s behavior. It also adjusts its behavior based on the round. | 113 |
CooperateBot [Insub] | Chaos Army | Let MLM = my last move, OLM = opponent’s last move. On the first turn, play 2. On subsequent turns: [Fork 1] If (MLM + OLM = 5), then play OLM [Fork 2] Otherwise, flip a coin and play max(MLM, OLM) with 50% probability, and (5 - max(MLM, OLM)) with 50% probability. | 254 |
This concludes the alternate timeline where AbstractSpyTreeBot was disqualified by mistake. The Mutant Game (the Blind Idiot God alternate timeline with multiple game engine bugs) will resume on November 23, 2020.
An interesting note is that BendBot gets an endgame advantage here for sometimes starting 2, but if there were 101 turns per round instead of 100 that would have been punished instead.
I am flattered you called my bot sophisticated. I think its is partly a function of my circuitous and inexperienced coding more so than needed complexity. The code is below:
Wow, that was not what I would have predicted from the last set of results. It looks like the trend in my population from when the clones were a little nasty accelerated when the clones got really nasty.
In the true game with AbstractSpyTreeBot, MeasureBot is going to be eating it at the same time I’m eating the clones, but is it going to be a boost as extreme as this?
In the endgame everyone cooperates with everyone else, and it seems to be down to openings and match-breaking strategies. LiamGoddard and MeasureBot always start 3, BendBot alternates between starting 2 and starting 3 on a per-round basis, and EarlyBirdMimicBot randomly starts 2 or 3 using the python random number generator. BendBot uses a fixed pseudorandom sequence to try to break matches, EarlyBirdMimicBot picks 2 or 3 with equal probability, MeasureBot plays 2 with probability 0.69 possibly with some special cases, and I’m not sure what LiamGoddard does.
Silly 2 bot lasted longer than anyone could have reasonably expected. The Clone Wars presumably gave it a second wind, as folding was a sound strategy against the clones’ aggressive plays.
BeauBot in sixth place is the best scoring bot we don’t have a clear explanation of yet.
I think it will depend on how long ASTB survives. Even with MeasureBot feeding on it, ASTB does very well in the early game against many of the silly bots. It folds to attackers and cooperates with the clones and other cooperators. However, I still expect (80%) that EBMB will pull ahead before round 100. As the clones become more aggressive in the midgame, they start fighting with MeasureBot while continuing to cooperate with EBMB.
I have a theory that ASTB might end up helping EBMB somewhat too as some of ASTB’s mass goes to the clones which keeps them alive for longer for EBMB to feed off. Still most should go straight to MB so you’ll get the bigger boost, just probably not enough.
My understanding is that EBMB doesn’t directly feed off the clones—they mutually cooperate until round 90, so EBMB helps them as much as they help it. It’s just that the clones start attacking everyone else in the midgame and leave EBMB alone while EBMB continues to cooperate with everyone. Thus the clone army and the rest of the pack tear each other down while EBMB pulls ahead.
A larger clone share would indeed end up benefitting EBMB relative to MB, but if ASTB is more effective than the clones in the early game, I’m not sure its presence in the midgame would be more helpful to the clones than a typical chaos or silly bot. I guess it depends on how effectively the clones’ aggression can convince ASTB to fold. The clones may or may not get enough back to compensate for their reduced share in the early game.
(Aside: I continue to be quietly amused at how much
AbstractSpyTreeBot
has ended up affecting the game (by partially inspiringEarlyBirdMimicBot
and getting exploited byMeasureBot
and accidentally spawning a new timeline), given how little I’ve invested in the game compared to others—the backstory is not one of strategic thinking about how to compete, but rather, I was feeling bleh in the afternoon of 9 October, and writing a simulator-bot using theast
module just seemed like a fun exercise that should only take a couple hours.)It also significantly affected people’s expectations of the metagame and made them prepare for simulators. BendBot and CloneBot were made deterministic so that simulators could efficiently cooperate with them.
See my other comment for BeauBot’s code. Below round 10 BeauBot starts 2, then from 10 to 29 it alternates 2 and 3 as starting bid, and 30 and beyond it always starts with 3.
I tried to make my bot never be outscored past round 29 but I believe if my opponent bids three when BeauBot bids 3 in the first round, Beaubot will bid 2 in attempts to cooperate making it possible for opponents to outscore it.
After round 100, MeasureBot ensures that it is never outscored by its opponent (it always starts 3, and keeps playing 3 until symmetry is broken by the opponent). If two or more bots have this behavior in the endgame, they quickly destroy each other until only one remains.
Congratulations to the two oscillator bots for lasting longest with no complexity, even beating out “silly 2” and TFT. Interesting how much variance there was among the 4 TFT bots based only on what they played first!
One interesting graph would be the average points gained per matchup vs round number which would give a good indication of cooperation level and what kinds of strategies would work. It can kind of be inferred from the bots which are left but seeing a graph would make it easier to picture.