82
34
Final results are here !
Introduction
In 2042, the world has become overpopulated. Globalization, overcrowding, new lifestyles and a global lack of hygiene has caused a new pandemic to spread. During those hard times, state leaders have to manage the situation. You can't let your population be decimated, but maybe you could benefit by letting your neighbors to die...
Glossary
Healthy: People not infected
Infected: People who can die from the pandemic
Dead: Body count, no particular effect (only scoring)
Infection Rate: Number of Healthy who will become Infected each turn
Contagion Rate: Percentage of Infected that will convert Healthy to Infected each turn
Lethality Rate: Percentage of Infected that will die each turn
Migration Rate: Percentage of both Healthy and Infected that will emigrate/immigrate each turn
Local: Affects only your state
Global: Affects every state
Principle
Each of the players will manage one town, starting with 100 people. Unfortunately, among them is one Infected.
The game is turn-based. A turn consists of seven phases, the last one being interactive (asking bots for a command). The order of the players is randomized each turn. The next phase begins when the previous phase has been executed by every town (Turn 1: Player 1, Player 2, Player 3... ; Turn 2: Player 3, Player 2, Player 1...) :
1. Mutation - AUTOMATED
2. Reproduction - AUTOMATED
3. Migration - AUTOMATED
4. Infection - AUTOMATED
5. Contagion - AUTOMATED
6. Extinction - AUTOMATED
7. Players Turn - INTERACTIVE
The controller provides you with input via command arguments, and your program has to output via stdout.
Syntax
Input
Each time your program is called, it will receive arguments in this format:
Round;YourPlayerId;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;...
Round are 1-indexed.
Example input
6;2;1_106_23_9_2_4_13_5;0_20_53_62_16_20_35_5;2_20_53_62_16_20_35_5
Here, you see it is the 6th round and you are player 2. You have 20 healthy, 53 infected, 62 dead, 16% infection rate, 20% contagion rate, 35% lethality rate, and a 5% migration rate.
Output
You have to output three characters (no space, no separator), which each correspond to one action you'll take this turn. The order of the characters determine the order of the actions. You can output the same actions multiple times.
N
: Do Nothing
M
: Research Microbiology [Effects: Reduce local Infection Rate by 4%]
E
: Research Epidemiology [Effects: Reduce local Contagion Rate by 8%]
I
: Research Immunology [Effects: Reduce local Lethality Rate by 4%]
V
: Research Vaccination [Effects: Reduce local Infection Rate by one, reduce local Contagion Rate by 4%, reduce local Lethality Rate by 2%]
C
: Give Cure [Effects: Convert 10 local Infected to Healthy]
Q
: Quarantine [Effects: Remove 30 local Infected]
O
: Open Borders [Effects: Increase local Migration Rate by 10%]
B
: Close Borders [Effects: Decrease local Migration Rate by 10%]
T
: BioTerrorism [Effects: Convert 4 global Healthy to Infected]
W
: Weaponization [Effects: Increase global Infection Rate by 1, increase global Lethality Rate by 2%]
D
: Dissemination [Effects: Increase global Infection Rate by 1, increase global Contagion Rate by 2%]
P
: Pacification [Effects: Decrease global Infection Rate by 1, decrease global Contagion Rate by 1%, decrease global Lethality Rate by 1%]
Gameplay
All phases
Invalid command = Nothing
Percentage are added up like integers, i.e. 10% - 4% = 6%. When percentage are applied in a formula, the result is floored.
Phase 1: Mutation
The pandemic is becoming more potent. Each turn, it randomly gains one of these attributes (this mutation affects all players at once):
- Increase global Infection Rate by 2
- Increase global Contagion Rate by 5%
- Increase global Lethality Rate by 5%
Phase 2: Reproduction
Every five rounds (round 5, 10, 15...), new citizens will be born. Each pair of Healthy will make one Healthy (23 Healthy generate 11 new Healthy). Each pair of Infected will make one Infected.
Phase 3: Migration
Each turn, a percentage of Healthy and Infected will leave states, depending on their Migration Rate (10 Healthy will leave a state with 100 Healthy and 10% Migration Rate). Then, the migrants will be distributed among every state, once again depending on Migration Rate. (The rates of each state are weighted and migrants are then all distributed accordingly).
Phase 4: Infection
Healthy of each state are converted to Infected, according to Infection Rate.
Phase 5: Contagion
Healthy of each state are converted to Infected, according to Contagion Rate. The number is calculated by multiplying the Infected by the Contagion Rate.
Phase 6: Extinction
Infected are converted to Dead, according to Lethality Rate. The number is calculated by multiplying the Infected by the Lethality Rate.
Phase 7: Players turn
Each player receive input and must output three actions, that are executed in the order they are output.
Rules
- Bots should not be written to beat or support specific other bots.
- Writing to files is allowed. Please write to "yoursubmissionname.txt", the folder will be emptied before a game starts. Other external resources are disallowed.
- Your submission has one second to respond (per town).
- Provide commands to compile and run your submissions.
Winning
Winner is the one with the most Healthy after 50 rounds. If a player is the last alive (more than 0 Healthy or Infected) the game stops and he wins. If multiple players have the same amount of Healthy, the one with most Infected will win, then the one with fewer Deads.
Controller
You can find the controller on GitHub. It also contains three samplebots, written in Java.
To make it run, check out the project and open it in your Java IDE. The entry point in the main
method of the class Game
. Java 8 required.
To add bots, first you need either the compiled version for Java (.class files) or the sources for interpreted languages. Place them in the root folder of the project. Then, create a new Java class in the players
package (you can take example on the already existing bots). This class must implement Player
to override the method String getCmd()
. The String returned is the shell command to run your bots. You can for example make a Ruby bot work with this command : return "C:\Ruby\bin\ruby.exe MyBot.rb";
. Finally, add the bot in the players
array at the top of the Game
class.
Final Results (2016-03-04 08:22 GMT)
Global (100 reputation) :
100 games results : http://pasted.co/942200ff
1. EvilBot (24, 249, 436)
2. Triage (23, 538, 486)
3. WICKED (23, 537, 489)
4. Israel (23, 40, 240)
5. InfectedTown (22, 736, 482)
6. ZombieState (22, 229, 369)
7. Mooch (22, 87, 206)
8. InfectedHaven (21, 723, 483)
9. Crossroads (16, 9, 136)
10. TheKeeper (3, 4, 138)
11. Terrorist (0, 595, 496)
12. InfectionBot (0, 511, 430)
13. FamilyValues (0, 6, 291)
14. UndecidedBot (0, 0, 20)
15. XenoBot (0, 0, 26)
16. Researcher (0, 0, 33)
17. Strategist (0, 0, 42)
18. TheCure (0, 0, 55)
19. Socialist (0, 0, 67)
20. TrumpBot (0, 0, 77)
21. CullBot (0, 0, 81)
22. BackStabber (0, 0, 87)
23. BlunderBot (0, 0, 104)
24. RemoveInfected (0, 0, 111)
25. PFC (0, 0, 117)
26. BioterroristBot (0, 0, 118)
27. PassiveBot (0, 0, 118)
28. Smaug (0, 0, 118)
29. WeaponOfMassDissemination (0, 0, 119)
30. AllOrNothing (0, 0, 121)
31. Obamacare (0, 0, 122)
32. DisseminationBot (0, 0, 123)
33. CureThenQuarantine (0, 0, 125)
34. Madagascar (0, 0, 129)
35. OpenAndClose (0, 0, 129)
36. ThePacifist (0, 0, 130)
37. MedicBot (0, 0, 131)
38. Medic (0, 0, 133)
39. Salt (0, 0, 134)
40. Piecemeal (0, 0, 136)
41. Graymalkin (0, 0, 137)
42. PureBot (0, 0, 140)
43. MadScienceBot (0, 0, 144)
44. BipolarBot (0, 0, 149)
45. RedCross (0, 0, 151)
Doomsday-less (200 reputation) :
100 games results : http://pasted.co/220b575b
1. FamilyValues (5708, 14, 2)
2. BlunderBot (5614, 12, 3)
3. Graymalkin (5597, 17, 4)
4. PureBot (5550, 12, 5)
5. Crossroads (5543, 11, 4)
6. Salt (5488, 24, 7)
7. CureThenQuarantine (5453, 13, 7)
8. Piecemeal (5358, 121, 23)
9. TrumpBot (5355, 12, 5)
10. CullBot (5288, 12, 9)
11. AllOrNothing (5284, 13, 10)
12. Madagascar (5060, 180, 35)
13. TheKeeper (4934, 165, 44)
14. WICKED (4714, 25, 5)
15. Strategist (2266, 25, 5)
16. BackStabber (2180, 1327, 596)
17. RemoveInfected (2021, 33, 27)
18. OpenAndClose (1945, 667, 394)
19. Triage (1773, 401, 80)
20. TheCure (1465, 46, 26)
21. Obamacare (1263, 525, 247)
22. Mooch (1103, 546, 269)
23. Israel (1102, 580, 292)
24. RedCross (1086, 1700, 727)
25. ThePacifist (1069, 636, 580)
26. Researcher (1035, 113, 37)
27. UndecidedBot (825, 219, 93)
28. PassiveBot (510, 990, 567)
29. MedicBot (411, 1474, 667)
30. Medic (392, 1690, 619)
31. Socialist (139, 63, 90)
32. XenoBot (0, 82, 170)
Thank you everyone for your participation. I hope you had as great a time designing and coding your bots as I had running the game.
Is mutation a global event, or local? – Nathan Merrill – 2016-01-25T16:11:50.037
We choose three actions each turn, but can they be the same action (can I choose
WWW
)? – Geobits – 2016-01-25T16:14:49.340nice challenge, too bad i dont know any java (yet). Anyone here willing to give me a hand later on if im unable to do it myself? Also with that sentence structure mutation seems to be missing something. – Eumel – 2016-01-25T16:15:11.677
1And another question, are the % values e.g.
Reduce local Lethality Rate by 4%
from 10% to 6% or from 10% to 9.6%? – Eumel – 2016-01-25T16:18:04.643Must all bots be in java? If so, please add the
Java
tag. – MegaTom – 2016-01-25T16:21:33.130@NathanMerrill Mutations are drawn once per turn and are global, i.e. the same effect applied to all players. – Thrax – 2016-01-25T16:40:15.480
1@Geobits You can use the same actions multiple times in the same turn – Thrax – 2016-01-25T16:40:34.913
1@MegaTom Submissions can be in all "supported" language. For now, I can run Java (6-8), Python (2-3), Perl, Ruby, Lua, node.js and PHP. If your language is not listed here, just provide instructions and I'll try to make it run. – Thrax – 2016-01-25T16:42:13.920
@Eumal You don't have to use Java, see comment above. As for the percentage, they are added like integers so it goes from 10% to 6%. – Thrax – 2016-01-25T16:42:51.413
1Are rounds 0 or 1-indexed? – quintopia – 2016-01-25T18:04:01.260
9Can we get an Execute command that murders X amount of infected (turning them straight to dead)? Probably not a viable method to winning, but an action that seems legitimate. Unless that's what Quarantine does (it is unclear). – Draco18s no longer trusts SE – 2016-01-25T18:20:57.707
can we get better instructions for how to run the controller? – quintopia – 2016-01-25T18:28:43.920
1@Draco18s yes, the Quarantine command is what you are looking for. – MegaTom – 2016-01-25T18:32:11.653
@MegaTom Thanks, I was unsure if that is what that did or not. – Draco18s no longer trusts SE – 2016-01-25T18:34:11.743
How do i actually give a response? Even when i modify the finished Bots they still put the same thing every time??? – Eumel – 2016-01-25T19:17:19.747
To be clear: the input doesn't explicitly include the global values, but are they factored into the per-user values or not? – Peter Taylor – 2016-01-25T19:47:20.670
1@Geobits I haven't had the chance to run it, but I see nothing in the code that should be restricting the minimum migration above zero. Line #262 of
Game.java
is relevant. – Mwr247 – 2016-01-25T20:00:29.993When I try to run the controller by doing
java bin.controller.Game
, I getException in thread "main" java.lang.UnsupportedClassVersionError: bin/controller/Game : Unsupported major.minor version 52.0
. My java version is1.7.0_79
. How should I run the controller? – Blue – 2016-01-25T20:13:02.2303Quick grammar note: "Sane" means "mentally stable"; the word you're (probably) looking for here is "healthy." (Would I be correct in guessing that your first language is Spanish, where "sano" means "healthy," or something closely related?) – Mason Wheeler – 2016-01-25T20:18:35.177
If a player is dead, will it continue to receive input and be able to do actions? If not, under what conditions does a player die? – TheNumberOne – 2016-01-25T21:00:49.777
Id have another nice idea for a bot, will i be allowed to create a second? – Eumel – 2016-01-25T21:27:33.497
@Eumel most contests let you submit more than one entry provided they are distinct (and as separate answers). I plan on writing a smarter bot than the one entry I submitted once I clone the java repo and can do a lot of refined testing. The last KOTH I was involved in I think I submitted 5 of the 13 bots. – Draco18s no longer trusts SE – 2016-01-25T22:05:40.763
5@MasonWheeler Nitpicking terminology note: Your note was a terminology or vocabulary note as there was no grammar involved ;) – Jan – 2016-01-25T22:50:19.987
1I guess if you want to run the game yourself you have to read the code and figure out how it works. It's a nice idea, but the explanation is minimal. – quintopia – 2016-01-26T00:10:06.923
Is there a time limit for actions? Like, is doing a bounded minimax-style search out of the question? – jmite – 2016-01-26T02:05:08.067
@muddyfish: I think you need to recompile using your version. It looks like you're trying to run a Java 8-produced Java classes. – justhalf – 2016-01-26T04:17:14.723
1@jmite: The OP states the time limit is one second per round – justhalf – 2016-01-26T04:17:41.953
@TheNumberOne P̶l̶a̶y̶e̶r̶s̶ ̶d̶o̶n̶'̶t̶ ̶d̶i̶e̶.̶ ̶T̶h̶e̶y̶ ̶c̶o̶n̶t̶i̶n̶u̶e̶ ̶t̶o̶ ̶h̶a̶v̶e̶ ̶b̶i̶r̶t̶h̶s̶ ̶e̶a̶c̶h̶ ̶t̶u̶r̶n̶,̶ ̶a̶n̶d̶ ̶l̶i̶k̶e̶w̶i̶s̶e̶ ̶c̶o̶m̶m̶a̶n̶d̶s̶ ̶a̶r̶e̶ ̶a̶c̶c̶e̶p̶t̶e̶d̶ ̶e̶a̶c̶h̶ ̶t̶u̶r̶n̶.̶ They do die, if they have no living people left. – Mwr247 – 2016-01-26T04:56:24.560
3@Thrax The way turns are currently handled (randomized at the start, same order from then on), gives players who come later in the turn order a huge advantage, which makes the end result wildly variant. Perhaps if you either 1) randomized the turn order each round, or 2) make everyone view the same state during their turn and apply the changes to everyone simultaneously at the end of the round, then the results might be more balanced, and be based more on the quality of the submission. I tested the first option, and the results are much more consistent. – Mwr247 – 2016-01-26T06:13:46.657
@Mwr247: How about the second option? – justhalf – 2016-01-26T06:39:57.253
@MasonWheeler Close, I'm french, but the word is "sain". I'll change the terminology in the question (and in the code too, I think). – Thrax – 2016-01-26T08:08:18.627
when are you gonna run the next game? The immigration as a whole seems to be a little bugged, e.g. round 6 there are 45 emigrated but only 27 immigrants – Eumel – 2016-01-26T11:18:06.153
@Eumel This happens because of the flooring on percentage. If you look at the first turn, 4 healthy emigrate from each state, whereas only 3 immigrate. This means that 1 healthy is lost for each player. Do you have an idea so that the remainder of the divisions is not lost? I don't want to give an advantage to anyone, so I thought of randomizing or give it to the first states (since their order is itself randomized). – Thrax – 2016-01-26T12:40:52.363
@Thrax make it a weighted random. you cant just give it to the first states or else you need to run the game many times and do some statistics in order for the game to be fair. – busukxuan – 2016-01-26T13:16:19.517
order the states by their rest
%1
basically and drop single leftover people in the top states and remove them from the que. e.g. 3 states4.5 3.8 2.4
ordered are0.8 0.5 0.2
with 2 people left they go to3.8 and 4.5
– Eumel – 2016-01-26T13:45:54.3432Huh? Isn't the migration rate the same for immigration and emigration? Shouldn't it be a case essentially of computing for each player a migration number
m_i
, putting all those migrants in a pool, shuffling, and dealing backm_i
to each player? (Technically this doesn't achieve the migration rate, but in the extreme case of e.g. two players with different migration numbers it's impossible to meet the stated constraints anyway). – Peter Taylor – 2016-01-26T14:38:25.967@PeterTaylor: I am actually also confused with that. – justhalf – 2016-01-26T15:19:48.377
@PeterTaylor Let's take an example : 3 States with 100 Healthy, 0 Infected and 5% Migration Rate. First, we calculate the emigrates :
100 * 5% = 4
. We have a total of4 x 3 = 12
migrants. Now, for the immigration, the Migration Rate of each State is still 5%, but by weighting it to reach 100%, each state now have 33% (floored). This gives :12 x 33% = 3
(floored) immigrants per state. As you can see, we have a remainder of 3 migrants. I just followed Eumel suggestion and implemented a queue to be consumed in the order of the rest of the formula for each state. – Thrax – 2016-01-26T15:41:03.880actually Peters suggestion is way better. Pick all emmigrants shuffle and hand them back out. I just noticed the great accuray on the calulation there
100 * 5% = 5
Instead of flooring you could use normal rounding. – Eumel – 2016-01-26T15:49:30.700@Eumel Right, I just noticed it too... It was actually calculated with 99 Healthy! How do you suggest shuffling? – Thrax – 2016-01-26T15:55:33.513
it should still come out at 5. Create an array from the emmigrants pick randomized index from 0 to size-1 see whats in there and delete that element. Keep doing it until all elements are gone – Eumel – 2016-01-26T16:14:39.800
Two questions: how many bots can I make, and what are the starting values of each variable? – ASCIIThenANSI – 2016-01-26T17:31:39.067
just keep it reasonable, as long as the bots dont work together it should be fine. Check the game.jave file its in there. @Thrax how long does 1 game take to play out? – Eumel – 2016-01-26T20:11:56.187
You're using Java. Shuffling is built into the standard library.
– Peter Taylor – 2016-01-26T21:31:40.0077@Thrax There's currently an overabundance of bots that exist simply to "destroy the world". While this can be a fun challenge, it's at the point where bots actually attempting to compete can't effectively counter it anymore, and we're left with whatever bots are programmed to "Cure X 3" at the end as the winners. I'd like to suggest a rule change where in order to be considered for the KOTH, bots need to at least be capable of ending up with positive "sanes" in a 1-on-1 match up against PassiveBot? The challenge is more fun when strategies actually have an effect. – Mwr247 – 2016-01-26T22:05:48.013
@Thrax Try running each bot 1-on-1 against PassiveBot, and then only take those who come out with positive "sanes", and pit them against each other. You'll see a huge difference. Even bots like TrumpBot are capable of running "global bad" commands without needing to be suicidal. – Mwr247 – 2016-01-26T22:08:11.633
@Thrax would it be possible to output a tabel with the values (healthy infected and so on) at the start of each player phase? – Eumel – 2016-01-27T14:01:25.943
@Thrax Not sure if this is a bug/fail on your part or mine but my bots decisions are based on the first set of values on the list and not the one with the corresponding id – Eumel – 2016-01-27T14:28:09.360
Some bots (TrumpBot, FamilyValues, Crossroads, CullBot, etc) have had their code updated, but the updated code hasn't been included yet. Also, ThePacifist didn't end up with a positive healthy in the 1v1? O_o – Mwr247 – 2016-01-27T15:32:37.407
@Mwr247 I actually updated every bot before running the games yesterday. You can follow commits on git if you're not sure bots are on their latest version. And yes, in 1v1 against ThePacifist both ended up with
(0, 1, 247)
– Thrax – 2016-01-28T07:59:36.363@Eumel Because of the shuffling, the input message that your bot receive is not ordered. You need to take the second value of the first split (on
;
) to get your id, and then find it in the next values. And as you suggested, I added intermediate scoring in a table at the end of each round. – Thrax – 2016-01-28T08:25:01.930It seems Mooch finally doesn't have the largest population... Probably just by chance. But still, nobody can beat Mooch on total birth. – busukxuan – 2016-01-28T08:47:52.557
I just fixed InfectedHaven, should be working now. I forgot an import statement so it did nothing in the last 3 runs... – busukxuan – 2016-01-28T08:48:24.997
@thrax I was reading the code and it seems that the infection rate is in fact not a rate at all, it's just the number of people who will be infected this round. So if the infection rate is at 50 and I have 1000 healthy, next round I will end up with 950 healthy, not 500. Is this WAI ? – Garrluk – 2016-01-28T09:20:07.547
@Thrax I think I just found the reason that end-of-the-world bots are decimating us try-to-stay-healthy bots: bioterrorism focuses on those states with healthy people left, rather than picking a state at random (repeatably, that a state can be picked up to 4 times) and only infecting if there are healthy people left in the state. If you read the log, at the beginning try-to-stay-healthy bots are mostly near the top of the list, but as more states become fully infected, those states' positions fall faster and faster. – busukxuan – 2016-01-28T09:21:15.920
@Garrluk yes that is correct. That's why my bot is called CullBot, because I thought if it had nothing to do with local infected count, then the infection has to be caused by animal vectors, which are to be culled. As for the wording, "rate" is correct. Rate can mean a percentage, or alternatively, the change of a quantity over time. Here it bears the latter sense, something like "speed". – busukxuan – 2016-01-28T09:23:25.113
@busukxuan You are right, infection rate isn't capped to 100 so it must not be a percentage. Thank you. – Garrluk – 2016-01-28T09:27:26.833
@Garrluk Yes, I confirm it is not a percentage. I tried to explain it in the glossary by saying "number". – Thrax – 2016-01-28T09:29:33.550
@busukxuan In fact, every "global" command is too strong for the other bots to manage, since there's no limit to how many times it may affect them in the same turn. I'm not sure I can change the rules now, though... – Thrax – 2016-01-28T09:35:11.200
@thrax i understand how it works, i just thought it was already implemented in the standard bots where i copied the code from – Eumel – 2016-01-28T12:53:32.113
@Thrax i created a chatroom called "chat koth pandemic", could you please come and help me out with debugging a little? – Eumel – 2016-01-28T13:46:50.370
1
@Eumel Yes, I'm at your disposal in the chatroom : http://chat.stackexchange.com/rooms/34968/chat-koth-pandemic
– Thrax – 2016-01-28T14:13:04.090If there are <30 local infected, does Quarantine overflow into healthy or does it stop when it runs out of infected? – SnoringFrog – 2016-01-28T16:55:29.070
1@SnoringFrog quarantine only decreases the number of infected. It never changes the number of healthy nor dead. – Garrluk – 2016-01-29T08:27:46.777
Will this challenge still be alive next week? I'd love to join in if it's not too late. – Denham Coote – 2016-01-29T10:35:44.187
@DenhamCoote Sure, you still have time. By all means, post a bot! – Thrax – 2016-01-29T12:28:59.717
@Thrax I just checked the GitHub, and the FamilyValues.js you have does not match the one I have submitted (as of January 26th). – Mwr247 – 2016-02-03T18:42:01.887
Sorry, only got around to writing a bot now - hope it's not too late to join in? – Denham Coote – 2016-02-04T16:28:31.407
@thrax can you split off the doom bots for the next run again? – Eumel – 2016-02-08T14:05:51.833
@Thrax when is the next round? BlunderBot is performing quite well locally, against the Java bots - Keen to see how it stacks up in a full game! – Denham Coote – 2016-02-08T15:49:25.387
@DenhamCoote I'll be doing 10 runs today. – Thrax – 2016-02-10T10:38:59.290
BlunderBot and EvilBot take 2nd places! I'm very surprised (and pleased!) – Denham Coote – 2016-02-11T11:04:19.420
@thrax what classifies a bot as a doomsday bot? – Denham Coote – 2016-02-11T11:35:29.737
@thrax Reason I ask is, all three of my bots (BlunderBot, EvilBot & BipolarBot) come out positive in 1v1 with PassiveBot, yet Evil and Bipolar don't feature in the 2nd game (without doomsday bots). Can you confirm if that's right? Thanks :) – Denham Coote – 2016-02-11T11:43:02.513
@DenhamCoote Evil and Bipolar both didn't come out with more than 30 Healthy in a 1v1 against PassiveBot (ran 10 games each) – Thrax – 2016-02-11T12:47:52.893
Ah, it's 30+? Perhaps clarify that up in the rules? Thanks for clearing that up :) – Denham Coote – 2016-02-11T12:50:22.580
1@DenhamCoote Thanks, I added an explaination about Doomsday bots. – Thrax – 2016-02-11T13:11:01.993
After many iterations of bugfixing and improving i have finally managed to make my bot great^^ @Thrax I don't think i have thanked you yet for running this. It's my first koth and you have made this an amazing challenge and really fun for all of us, so thank you very much! – Eumel – 2016-02-15T15:47:48.880
Do you retest Doomsdays bots occasionally, sorry, mine basically did nothing before because of a bug that is now fixed, And it may not be a Doomsdays bot anymore. – Generic User – 2016-02-16T13:30:37.977
It looks like there hasn't been an update to this for a while. I'd like to see a winner chosen. I'd recommend running, say, 100 times and taking the average results (healthy, infected, dead). Then, take the top ten or twenty of that list (the "best") and run them 100 times to see who wins among them ("the best of the best"). – quintopia – 2016-02-28T22:05:56.473
@quintopia Sorry, I forgot to run the games. I re-tested every bot against PassiveBot to select "Doomsday" bots. I'm currently running 100 games with everyone and 100 games without "Doomsday" bots. – Thrax – 2016-02-29T09:21:55.827
You have put a bounty on the question. For who it is? – user48538 – 2016-03-03T09:27:23.077
1@zyabin101 I'm running the final games, the bounty is for the winner – Thrax – 2016-03-03T10:05:19.633
That was a close game! Thanks again for running this great challenge, had alot of fun with it! :D – Mwr247 – 2016-03-04T16:30:41.827
Ah, just saw that EvilBot did well! Yay! Thanks for a fun KOTH @Thrax – Denham Coote – 2016-03-07T12:20:56.577
Congrats to the winners! I'm just happy that mine was the only bot to make top 10 on both lists :D – quintopia – 2016-03-09T18:18:08.210