Zo werkt de backend van onze nummi bot

Zo werkt de backend van onze nummi bot - Onze collega Floris legt uit hoe we de nummi bot hebben gemaakt.

18 september 2025

Er zijn momenten waarop je gewoon een potje nummi wilt spelen zonder dat je hoeft te wachten op je tegenstander. Hierom hebben we ongeveer een half jaar geleden onze Granny Bot geïntroduceerd. In deze blog neemt onze backend developer Floris je mee in het algoritmisch ontwerp van de bot en de gedachten en beslissingen hierachter.

De basis: Heuristics en fases

“Versie 1 van de Granny Bot is gebouwd door onze backenders Isa en Tom en is gebaseerd op een aantal eenvoudige speelprincipes. We noemen deze principes “heuristics”, wat volgens het Oxford woordenboek wordt gedefinieerd als “een methode van problemen oplossen waarbij wordt geleerd van eerdere ervaringen.”

De bot is opgedeeld in twee delen: de ‘meld’-fase en de ‘speel’-fase. In de meldfase is het doel om, net zoals in de spelregels, steentjes neer te leggen met een minimale puntenwaarde van 30. Het doel in de speelfase is simpelweg om een zet te vinden en te spelen.

Tijdens de meldfase mag de bot geen gebruik maken van de tegels van de tegenstander, en richt hij zich alleen op mogelijke rijen en series met de stenen van zijn rek. In de speel-fase komen heuristieken pas echt van pas: de bot kan jokers op het bord vervangen door eigen tegels, lijnen splitsen en uitbreiden, of series en rijen neerleggen. Deze regels vormden de basis voor de eerste bot.

Uitbreiding naar de nieuwe versie

“In de nieuwste versie is de bot een stuk robuuster en kan hij een grotere set aan mogelijke zetten berekenen. Hoewel hij niet te vergelijken is met een bot die werkt met diepe neurale netwerken of reinforcement learning, kan hij nu combinaties van zetten vinden die proberen de hoogste beloning te behalen. Het doel is een zogenaamde ‘greedy’-beloning: de bot zoekt de acties die de meeste tegels uit het rek speelt. Dat is niet altijd optimaal, maar het werkt goed in deze verbeterde versie.

De nieuwe acties zijn ‘take’ (een lijn van het bord naar het rek halen), ‘series’ (een serie van het rek op het bord leggen) en ‘row’ (een rij neerleggen). De bot doorzoekt op een slimme maar naïeve manier alle mogelijke combinaties om de maximale greedy-beloning te vinden.”

Optimalisatie

“Het doorzoeken van alle mogelijke combinaties kan langzaam zijn. Om dit te voorkomen, hebben we een aantal optimalisaties toegepast die vaak bij zoekbomen worden gebruikt. We beperken het aantal combinaties door takken van de zoekboom te snoeien. Een methode is ‘memoization’, waarbij de bot combinatiestaten onthoudt die hij al heeft doorlopen. Zo kan bijvoorbeeld ‘row > series > series’ hetzelfde zijn als ‘series > series > row’. Daarnaast hebben we een ‘maximum depth’-hyperparameter toegevoegd, die bepaalt hoe vaak de bot een lijn van het bord kan pakken.

Ook hebben we de algoritmes voor het berekenen van mogelijke series en rijen verbeterd. Granny versie 1 miste soms combinaties met jokers, waardoor hij niet kon winnen in situaties waarin ‘blauw 1’, ‘rood 1’, ‘geel 1’ en ‘joker’ in één zet gewonnen zouden hebben.”

Testen en resultaten

“Om bots te testen en te verbeteren, gebruiken we botfights. Het resultaat was duidelijk: bot versie 2 won 55 keer van versie 1, met een winstpercentage van ongeveer 80%.”

Gebruikerservaring

“We hebben ook gekeken naar de gebruikerservaring. Als de bot meerdere lijnen van het bord haalt en terugplaatst, wil je als speler weten waar de tegels vandaan komen. Daarom worden de coördinaten van alle acties opgeslagen, zodat het bord niet volledig lijkt te veranderen bij elke zet.

Omdat de bot alle opties naïef doorzoekt, heeft hij een beperkte denktijd, die we via een hyperparameter kunnen aanpassen. Spelers willen snelle potjes, in plaats van twintig minuten wachten, hoewel een langzaam denkende bot ook zijn charme kan hebben.

Uiteindelijk hebben we een nieuwe manier gevonden om spelers uit te dagen die op zoek zijn naar een vriendelijke Granny om tegen te spelen. En daar zijn we erg trots op!”

Verrijk uw leven.

Ervaar het verschil met onze intelligente oplossingen. Neem vandaag nog contact op en ontdek hoe wij uw digitale wereld kunnen verrijken.