Russia 1917: De AI van de vijand bouwen – de Witten

De stand van zaken in februari 2025 over het bouwen, in GDevelop, van een strategische artificiële intelligentie voor de Witte legers.

Prototype van Russia 1917 met de strategische kaart tussen Moermansk, Archangelsk en Helsinki
Prototype van Russia 1917 met de strategische kaart tussen Moermansk, Archangelsk en Helsinki

Ik werk momenteel aan een spel dat zich afspeelt in Rusland in 1917, midden in de burgeroorlog. De speler neemt de rol van de bolsjewieken op zich, maar ik heb een artificiële intelligentie nodig die de Witte legers bestuurt, de strijdkrachten die zich tegen de bolsjewieken verzetten en proberen de controle over het land terug te krijgen.

Het doel van het spel? Je troepen verplaatsen, strategische steden veroveren en de vijand bevechten. Om dat interessant te maken, moest de AI van de Witte legers in staat zijn om samenhangende militaire beslissingen te nemen.

Het probleem: GDevelop, de engine die ik gebruik om het spel te maken, is niet van nature ontworpen voor complexe artificiële intelligentie. Ik moest daarom een betrouwbare methode vinden waarmee de AI stap voor stap kan werken zonder bugs te veroorzaken.

De AI van de Witte legers: een militaire strategie in stappen

In mijn spel moet het Witte leger in verschillende stappen werken:

  1. vrije steden detecteren die kunnen worden veroverd;
  2. de bolsjewistische dreiging in de buurt beoordelen;
  3. beslissen of het moet aanvallen of zich versterken;
  4. de troepen op een intelligente manier verplaatsen.

Om alles correct te laten werken, heb ik een logische en goed gestructureerde methode opgezet. Zo neemt de AI haar beslissingen:

  • eerst maakt ze rond elke stad en eenheid een onzichtbare detectiecirkel;
  • wanneer een vijandelijke soldaat met een van die cirkels in contact komt, betekent dit dat hij dichtbij is en een bedreiging vormt;
  • vervolgens zoekt de AI de troepen die het dichtst bij die vijand staan en geeft ze het bevel om aan te vallen;
  • als er geen vijand wordt gedetecteerd, stuurt de AI haar eenheden naar een nieuwe stad om die te veroveren en haar grondgebied uit te breiden.

Icoon van Russia 1917 geïnspireerd door het Russische constructivisme

Het icoon van het spel «Russia 1917» dat ten tijde van dit artikel werd gebruikt.

De klassieke valkuil van GDevelop: alles wordt tegelijk uitgevoerd

In het begin had ik mijn AI als volgt geschreven:

  1. detectiecirkels rond steden en troepen maken;
  2. naar de volgende stap gaan om vijanden te identificeren;
  3. naar de volgende stap gaan om een actie te kiezen;
  4. naar de volgende stap gaan om de troepen te verplaatsen.

In theorie ziet dat er netjes uit. In de praktijk? Een ramp.

Waarom? Omdat “stap = 2” zeggen niet betekent dat stap 1 werkelijk is afgerond. De AI begon dus alles tegelijk te doen: cirkels aanmaken, vijanden analyseren en troepen verplaatsen binnen één enkel frame van het spel.

De echte oplossing: elke actie controleren voordat je verdergaat

Dit is de grote ontdekking die ik deed tijdens het werken aan deze AI:

Je mag nooit gewoon een variabele veranderen om in een proces verder te gaan. Je moet altijd een voorwaarde maken die controleert of de vorige actie echt is afgerond.

Concreet doe ik dus niet dit:

❌ “Als stap = 1, doe dan dit en ga naar stap 2.”

Maar wel dit:

✅ “Als stap 1 is afgerond — bijvoorbeeld als alle cirkels correct zijn aangemaakt — dan pas gaan we naar stap 2.”

Schema van de vier beslissingsstappen van de artificiële intelligentie van Russia 1917

De AI in actie: detectiecirkels aanmaken, de situatie analyseren, een beslissing nemen en de bevelen uitvoeren.

Waarom deze methode essentieel is

Met deze aanpak loopt de AI niet op de zaken vooruit en werkt ze vloeiend. Elke actie wordt volledig afgerond voordat de volgende begint, waardoor bugs waarbij alles tegelijk wordt uitgevoerd worden vermeden.

En dat verandert alles:

  • de AI lijkt intelligenter, omdat ze stap voor stap reageert op wat er gebeurt;
  • bugs waarbij alle acties tegelijk worden geactiveerd verdwijnen;
  • het spel wordt strategischer, omdat de Witte legers echt reageren op de acties van de speler.

Conclusie: een techniek om te onthouden voor GDevelop

Als je een doeltreffende AI in GDevelop wilt maken, of zelfs gewoon een complex algoritme wilt structureren, onthoud dan dit:

Doe nooit alleen “stap = 2”. Controleer altijd of stap 1 echt is afgerond voordat je verdergaat.

Dat is de sleutel om te voorkomen dat GDevelop alles tegelijk uitvoert en om een vloeiende, logische en strategische AI te maken.

Nu ik erin geslaagd ben dit systeem goed te structureren, kan ik de Witte legers nog intelligenter maken. Misschien geef ik ze zelfs geavanceerdere strategieën, zoals gecoördineerde aanvallen of tactische terugtrekkingen…