Een voorbeeld van een opstelling op het Stratego bord

Infinibattle ’23

Hannah Joralf Achter de schermen

Tijdens de Infinibattle strijden Infi-medewerkers via door hen geprogrammeerde bots voor de kans om zich wél eens verheven te mogen voelen boven de rest. De prijs, zoals altijd: je triomfantelijke gezicht als een buste vereeuwigd op een zuil. Dit jaar gingen de bots de strijd met elkaar aan in het spel Barrage Stratego.

Barrage Stratego, wat is dat?

Stratego is een tactisch bordspel voor twee spelers. Elke speler krijgt 40 speelstukken, die op het speelbord geplaatst moeten worden. De speelstukken hebben hun eigen rang, en een stuk met een hogere rang verslaat doorgaans een stuk met een lagere rang, uitzonderingen daargelaten. De bom verslaat bijv. alle speelstukken, behalve de mineur, die kan de bom ontmantelen. Het uiteindelijke doel van Stratego is om de vlag te veroveren van de tegenstander of alle speelstukken van de tegenstander uit te schakelen.

Met Barrage Stratego speel je met slechts acht speelstukken. Daarmee is het spel een stuk vlotter én ook iets beter programmeerbaar. Het originele spel heeft namelijk veel meer mogelijke zetten dan andere spellen zoals schaken of backgammon.

Aan het begin van het spel plaatst iedere speler diens speelstukken op diens eigen helft. Vervolgens mag iedere speler om de beurt diens eigen stuk verzetten in de x of y richting. Als die terecht komt op een stuk van de ander is er een battle, daarbij geldt doorgaans dat het stuk met de hoogste rang wint.

De ultieme Infinibattle: high-code vs low-code

De hype rondom de Infinibattle was dit jaar groot. Al maanden van tevoren begonnen sommige deelnemers aan hun bots. Ook werden er meerdere gezamenlijke programmeersessies gehouden, en die waren druk bezocht!

Nieuw dit jaar was de komst van een low-code Excel-bot. Met als doel om deelname zo laagdrempelig mogelijk te maken, programmeerde Jeroen een kant-en-klare bot die gebruikers konden personaliseren en optimaliseren, enkel door wat waarden in een Excel-sheet aan te passen. Het doel werd zeker bereikt, want wat begon als een klein groepje groeide uit tot een “Excel-army” van meer dan 15 koppen sterk.

Het toernooi bestond uit een dubbel eliminatie systeem; elke bot speelde dus minstens twee potjes. Tot verbazing en vreugde van de “Excel-army” en teleurstelling van team high-code bleek al snel dat de Excel-bots een stuk gevaarlijker waren dan van tevoren verwacht. Plotseling groeide de competitie uit tot een ultieme battle van low-code versus high-code. De ene na de andere handgemaakte bot werd de loser-bracket in gesmeten en in de winner-bracket begon de Excel-army steeds meer te overheersen.


Er werd hard gejuicht voor Jeroens Excel-bots

Na een paar uur vol sensatie en hilariteit waren alle high-code bots afgeslacht, op één bot na. Alle hoop was gevestigd op de bot van Ruben: Botzilla. De spanning was te snijden.

In de finale speelde Botzilla tegen Excelsior, een Excel-bot waar door Hanneke toch zo een 30 uur aan optimalisatie in was gestoken. En… tot opluchting van velen, was het uiteindelijk toch de high-code die zegevierde: Ruben werd onder luid applaus uitgeroepen tot de grote winnaar van De Infinibattle ‘23!

Winnaar Ruben rust zijn hoofd op het houtblok waar straks zijn buste vereeuwigd zal worden, naast de bustes van voorgaande edities.
Winnaar Ruben naast de winnaars van voorgaande edities

CTO Jeroen Heijmans over zijn Excel-army

Wat was de achterliggende reden voor het bouwen van een excel bot?
“De Infinibattle moet een zo breed mogelijk feestje zijn: voor iedereen! Mijn doel was de drempel -met een excellente knipoog- zo laag mogelijk te krijgen. Oorspronkelijk om non-programmeur-collega’s de kans te geven ook mee te doen. Maar als snel bleek dat ook ontwikkelaar-collega’s met wat minder tijd of energie hierdoor ook opeens een opening zagen om toch mee te doen!”

Hoe teleurgesteld ben je dat de finale gewonnen werd door een C++ bot?
“Was ‘t een toffe verrassing geweest als een ExcelBot had gewonnen? Ja, maar ook nee! Dat een echte pro met echte handgeschreven code gewonnen heeft, is stiekem natuurlijk gewoon het fraaist. En dat we de weg daar naartoe met het Excel Army pittig hebben gemaakt… is iets om trots op te zijn!”

Ga je volgend jaar revenge halen en zo ja, wat zijn je plannen daarvoor?
“Afsluitend zou ik vooral willen zeggen dat de radertjes voor de volgende editie al draaien. De drempel nog lager? Moet kunnen. Wie weet kun je volgend jaar een bot maken in Paint?”

Winnaar Ruben over zijn bot

“Ter voorbereiding van de infinibattle 2023 heb ik gekeken wat nou goede manieren zijn om een bot Stratego te laten spelen. Stratego is een spel met erg veel verborgen informatie, omdat je de rank van de stukken van je tegenstander niet weet. Dit maakt het moeilijk om er een kant-en-klaar algoritme op toe te passen: De paar algoritmes die echt goed zijn in spellen met “imperfecte informatie”, zijn idioot ingewikkeld. Uiteindelijk heb ik ervoor gekozen om een trucje toe te passen waardoor het spel gespeeld kan worden alsof alle informatie openbaar is, en Monte-Carlo tree search te gebruiken, wat me simpel genoeg leek om te implementeren.

Het idee achter Monte-Carlo tree search is om vanuit de huidige stelling simpelweg de computer heel vaak het spel verder te laten spelen, en zo een idee te krijgen welke zetten vaak tot winst leiden. Zetten worden hierbij willekeurig gekozen, met een lichte voorkeur voor “goede” zetten. Het trucje bestaat er hierbij uit om voor elk spelletje een willekeurige verdeling van de rangen van de stukken van de tegenstander te kiezen, en het spelletje vervolgens af te spelen alsof alle stukken bekend zijn. Omdat het erg lang duurt om veel spelletje tot het eind te simuleren, is het belangrijk een goede heuristiek te kiezen, die gunstige opstellingen een hoge score geeft en nadelige opstellingen een lage. Die heuristiek was nogal een ding; uiteindelijk heb ik diep in de nacht voor de Infinibattle nog een aanpassing gedaan en bleek mijn bot “Botzilla” zich opeens goed te kunnen verweren tegen de andere bots.

Op de dag van de Infinibattle was de sfeer een beetje zoals bij een voetbalwedstrijd: een groep mensen die geboeid naar een scherm staart en de ene kleur enthousiast aanmoedigt. Het is toch altijd weer een beetje spannend als “jouw” bot aan de beurt is, want je wil niet van iemand verliezen die zijn of haar bot in 10 minuten in elkaar heeft geflanst. Uiteindelijk ging het (met een beetje geluk, want bij het testen verloor Botzilla nog zeker wel eens tegen andere bots) erg goed, en won Botzilla al zijn wedstrijden. Dat betekent dat ik de winnaar ben van de Infinibattle 2023!”


                            

GitHub Repositories

Vind je het leuk om te zien hoe de bots gemaakt zijn? Hieronder vind je links naar de openbare GitHub repositories van een aantal bots die meegestreden hebben in de Infinibattle ’23.

Andere Infi evenementen

Een afspraak maken bij ons op kantoor of wil je even iemand spreken? Stuur ons een mail of bel met Jolanda.