Vandaag gaan we in full on Geek mode, dankzij de geweldige combinatie van Mario en programmeren. YouTuber Seth Bling heeft uit verveling namelijk een programma geschreven dat zichzelf Super Mario World leert spelen. De naam van het programma is MarI/O en maakt gebruik van neurale netwerken en genetische algoritmes, om vervolgens het spel zijn kontje te schoppen!
Source en lezen
Wanneer je het filmpje hebt bekeken en het heeft een beetje je interesse, zul je het met mij eens zijn dat Seth een gigantisch mooie toelichting geeft op de door hem gebruikte technieken. Tevens heeft hij een aantal links toegevoegd zodat je je helemaal kan inlezen op de materie.
Tevens stelt hij geheel belangeloos de source code van zijn programma beschikbaar en voor de ontwikkelaars onder ons, is dat zeker interessant om eens te bekijken. Bekijken en downloaden kan hier.
Neuroevolution
Om ervoor te zorgen dat MarI/O leert het spel te spelen, maakt Seth gebruik van een stukje neuroevolution. Door gebruik te maken van evolutionaire algoritmes is het mogelijk voor MarI/O om zelf het spel te leren, door het simpelweg te doen. In het filmpje laat Seth ook zien dat wanneer het proces begint, het regelmatig gebeurt dat Mario stil blijft staan of simpelweg één keer springt. Neuroevolution zorgt er uiteindelijk voor dat hij steeds meer dingen probeert en combineert.
Lees ook: Ouderwetse 8-bit Mega Man komt naar PS4, Xbox en PC
1 Level of het hele spel?
Nee, dit is niet het begin van Skynet. Het level dat MarI/O speelt is namelijk erg gemakkelijk en hij hoeft dus ook alleen maar naar rechts te lopen en te springen. Wanneer we verder in het spel komen, zou het eerste probleem voor MarI/O al zijn, dat hij het verschil niet kent tussen power ups en vijanden. Wanneer het programma iets getweaked wordt, zou het theoretisch gezien mogelijk moeten zijn om het hele spel te verslaan vooral omdat naarmate hij meer leert hij makkelijker nieuwe dingen oppakt. Wel zou dit hele proces ontzettend veel tijd in beslag nemen, helemaal als hij continu overnieuw moet beginnen.