Deze website maakt gebruik van cookies. Meer informatie Dit bericht niet tonen
Experts in talent integratie
MENU
Deel deze pagina

Reverse engineering van je favoriete spel: wat is het, waarom doe je het en hoe begin je

Geschreven door Hans Vernimme op 30 augustus 2022 voor Tech Professionals

Afbeelding omslag: Nintendo

In zijn vrije tijd houdt Exellys alumnus Olivier ervan om games te reverse engineeren. Hoewel het een zeer niche onderwerp is, waren zijn collega's bij Exellys nieuwsgierig om er meer over te weten, dus tijdens de 'Talk of the Minds' van zijn stam (dat zijn kennisdelingssessies onder Exellysts), gaf Olivier een presentatie over het onderwerp. Je kan het hier in zijn geheel bekijken:

Olivier's specs

  • Olivier Luyckx
  • 25 jaar oud.
  • Woont in Kapellen
  • Exellys alumnus en .NET & Java Back-End Ontwikkelaar
  • Goes door Olifré in de online gaming gemeenschap
  • Grote Nintendo fan & videogame conservator

Hoe ben je begonnen met reverse engineering?

"Aangezien ik zo'n fan ben van videospelletjes en ik ook programmeur ben, is het geen verrassing dat ik game-ontwikkeling leuk vind. Maar zelfs voordat ik leerde programmeren, vergeleek ik al trailers voor games met wat we uiteindelijk in de uiteindelijke release kregen. Ik vroeg me toen al af wat Nintendo ertoe bracht om zoveel te veranderen van de trailer naar het eigenlijke spel.


Dus toen ik ouder werd en leerde programmeren, begon ik me af te vragen hoe mijn favoriete spellen eigenlijk werden gemaakt. Hoe zijn ze gecodeerd? Hoe zijn ze opgebouwd? Maar online vind je daar geen informatie over, dat zijn bedrijfsgeheimen. Af en toe komt er wat info naar boven via lekken, en dan krijg je een inzicht in hoe spellen worden gemaakt, en meer bepaald in wat er niet in het uiteindelijke spel terechtkomt.

Vorig jaar zijn er veel interne documenten van Nintendo uitgelekt, en daaruit bleek bijvoorbeeld dat ze een soort opa Yoshi hadden ontworpen die nooit echt in het spel is gebruikt. Voor liefhebbers zoals ik is dit heel cool, dit is informatie die we anders nooit te zien zouden krijgen."

Dus wat doe je als je nog meer wilt weten over het spel, en er zijn geen lekken over?

"Dat is waar reverse engineering om de hoek komt kijken. Reverse engineering is het proces van het proberen te begrijpen van een bestaande toepassing zonder enige voorkennis. Het gaat gepaard met veel giswerk en vallen en opstaan. Zo werkt het nu eenmaal.

Om een spel te reverse engineeren, zijn er twee dingen waar mensen naar beginnen te kijken. Ze zullen de ROM van het spel analyseren door te kijken naar de assemblage code en naar de resource bestanden. In 99% van de gevallen zul je bestanden vinden die niet gebruikt worden in het spel. Alleen al door ze te bekijken en te zien wat ze zijn, kun je een inzicht krijgen in hoe deze spellen worden gemaakt. Het is interessant om te zien wat Nintendo dacht en probeerde te doen, maar wat uiteindelijk niet werd gebruikt. Voor iedereen die geïnteresseerd is in dit soort dingen, kan ik The Cutting Room Floor aanraden, dat is als een Wikipedia voor games. Je kunt naar elk spel gaan dat je wilt en ontdekken wat daar verborgen is, of er beta stuff of ongebruikte stuff is, wat echt cool is om te zien. Je kunt de site vinden op tcrf.net."

Kunt u ons iets meer vertellen over de gereedschappen die u gebruikt voor reverse engineering?

"Je kunt toepassingen als IDA of Ghidra gebruiken, die nauw aan elkaar verwant zijn. Het zijn allebei debuggers, disassemblers en decompilers. De meeste mensen geven de voorkeur aan Ghidra, omdat het open source is en je een gratis decompiler krijgt, wat in IDA een betaalde functie is. Deze applicaties worden gebruikt om de spelcode echt te openen en te kunnen zien wat het doet.
Meestal is dat waar mensen stoppen, maar als je nog meer wilt weten, kun je beginnen met reverse engineering van het hele spel: echt kijken naar elke regel code en uitvinden wat het doet. Dit is interessant voor glitch hunters, speedrunners of iedereen die geïnteresseerd is in het begrijpen van spelmechanica."

Kun je nog verder gaan?

"Ja, er is een stap die je nog dieper in de code kan brengen, en dat is decompilatie. Dit is waar je van machinecode teruggaat naar een programmeertaal van een hoger niveau. Door de assemblagecode te decompileren in een equivalente C-code (de meeste Nintendo-spellen zijn geschreven in C of C++) wordt het gemakkelijker om de code te lezen en te bewerken. Maar voordat je kunt bewerken, moet je ervoor zorgen dat je broncode volledig verschuifbaar is. Dit is belangrijk omdat de assembly vaak zal verwijzen naar een functie op een specifiek adres, dus als je een regel in de code toevoegt, zal alles wat daarna komt niet meer op de juiste plaats staan en dit zal ervoor zorgen dat het spel crasht."

Doe mee met ons spandoek

Waarom zou je een spel willen decompileren?

"Als je een spel eenmaal volledig gedecompileerd hebt, kun je veel geavanceerdere mods maken. Je hebt dan het volledige spel, dus je kunt in principe doen wat je wilt: een compleet nieuwe spelmodus schrijven, een nieuwe moderne rendering engine toevoegen, of moderne netwerkcode toevoegen. Maar waar mensen het meest in geïnteresseerd zijn, is het porten naar verschillende systemen.
Laten we SuperMario 64 als voorbeeld nemen. Dit spel is gemaakt voor de Nintendo 64, maar vorig jaar heeft een groep van 6 mensen dit spel volledig gedecompileerd. Toen het klaar was, gaven ze het vrij aan het publiek en ongeveer een maand later bracht iemand een native PC port van SuperMario 64 uit. Hij nam de decompilatie, verwijderde alle Nintendo 64 specifieke aanroepen en verving ze door abstracties. Op die manier hou je een ruwe codebasis over die niet afhankelijk is van een specifieke hardware. Je kan het gewoon compileren, en daar ga je. Je hebt een native build van dit spel draaiend op de PC. Het is zo verbazingwekkend dat zoiets als dit mogelijk is. Mensen porten dit spel nu ook naar de PlayStation, dat vind ik zo cool."

Over Exellys

Exellys is een Tech Talent Incubator. Wij matchen ambitieuze bedrijven met het beste tech talent. Ben jij klaar om de innovaties van morgen aan te sturen? Klaar om een impact te maken en een future-fit digitale leider te worden?

Of je nu een afgestudeerde of (young) professional bent, Exellys zal je volledige potentieel ontketenen door je te begeleiden naar een uitdagende werkomgeving die perfect aansluit bij je persoonlijkheid, verwachtingen en ambities.

Daarbovenop word je ingeschreven in een van onze eigen training- en coachingprogramma's (gebaseerd op jouw persoonlijke en professionele ambitie en ervaring). Dit betekent dat, terwijl je werkt als een Exellys consultant, wij jou helpen om je ambitie naar excellence te overbruggen.

Door middel van intensieve training en coaching, zul je de essentiële vaardigheden, competenties en kennis verwerven die nodig zijn om de zeer effectieve professional te worden die je wilt zijn. Word een Exellyst en neem vandaag nog contact met ons op.

Geschreven door Hans Vernimme Manager Talentontwikkeling