Hoe maak je een videogame?
Hoe maak je een videogame? Dat is een vraag die we ons allemaal wel eens hebben gesteld.
Je denkt misschien dat het maken van een videogame een zeer ingewikkelde taak is die een grote hoeveelheid kennis van programmeren, wiskunde en natuurkunde vereist om een goede titel te ontwikkelen, maar dat is niet helemaal waar. Ongeacht het type spel dat je wilt ontwikkelen (2D, 3D, RPG, FP, …) en het platform waarop je het wilt draaien (PC, spelconsole, smartphone, enz.), er zijn twee manieren om een videogame te maken:
- Alles programmeren
- of het gebruik van ontwikkel programma’s (programmeermachines)
De eerste is de meest complexe, omdat de programmeur alle elementen van het spel moet creëren, kennis moet hebben van de fysica (waarvoor zeer geavanceerde wiskunde nodig is), de personages moet ontwikkelen , de animaties, de rendering, en vele andere elementen onder de knie moet hebben. Dit is de manier waarop grote studio’s als Ubisoft of Innsomnia werken, wat hen, ondanks de complexiteit, volledige controle geeft over de ontwikkeling en een hoog niveau van optimalisatie mogelijk maakt. Wanneer een bedrijf een nieuwe titel ontwikkelt, bijvoorbeeld om samen te vallen met de release van een nieuwe film, is het gebruikelijk dat het spel op meerdere platforms beschikbaar is. Dit is een uitdaging, aangezien ze niet allemaal hetzelfde niveau van rekenkracht hebben, noch dezelfde besturing, zodat het nodig is de titel aan te passen om correct te werken op elk van deze platforms.
De tweede optie is het gebruik van programmeermachines (engines), dat zijn programma’s met een enorme verscheidenheid aan wiskundige functies die al geïmplementeerd zijn en die de spelontwikkeling vereenvoudigen. Deze optie wordt het meest gebruikt door onafhankelijke ontwikkelaars, videogame programmeurs zonder de financiële steun van grote videogame bedrijven.
In de laatste optie kunnen we programmeermachines onderverdelen in twee zeer verschillende categorieën: welke vereisen programmering en welke niet. Maar wat betekent dit? Zoals een tafel gemaakt is van hout, is een spel gemaakt van regels code die in real time draaien om de karakters en de landschappen weer te geven, de door de gebruiker ingedrukte toetsen te registreren, enz. Aangezien deze code door een machine moet worden uitgevoerd, wordt hij gemaakt in een taal die door die machine kan worden begrepen, meer bepaald in de vorm van nullen en enen, binaire codering.
Maar een programma schrijven in binaire notatie is complex en inefficiënt. Daarom worden zogenaamde “high-level talen” gebruikt. Deze zijn als de verschillende talen die in de wereld bestaan; elk heeft zijn eigen grammatica, woordenschat en eigenaardigheden, maar ze kunnen allemaal dezelfde boodschap overbrengen: ‘hola’, ‘hallo’, ‘salut’, ‘hallo’, ‘ciao’, ‘olá’, ‘hej’. Bij het programmeren is er een grote verscheidenheid aan programmeertalen, zoals C, C++, C#, Java, JavaScript, PHP, Pascal, en vele andere. Elk van hen heeft zijn eigen voor- en nadelen, bijvoorbeeld C en zijn varianten zijn wijdverspreid en het is mogelijk om bibliotheken vol voorbeelden te vinden om bijna alles te doen. Het is echter een programma dat gecompileerd voor Windows, het zal dus niet werken op Linux of Mac, wat bij andere talen zoals Java wel mogelijk is.
Dankzij deze high-level talen kunnen we ons programma schrijven in een taal die voor ons begrijpelijker is, en vervolgens, via een proces dat “compilatie” heet, onze code omzetten in binaire (machine)code, zoals we kunnen zien in figuur 1.
Figuur 1. Compilatie van code van de programmeur naar de binaire code van de processor.
Zoals we al eerder hebben vermeld, zijn er andere soorten programmeermachines waarbij het niet nodig is om ook maar één regel code te schrijven, maar die een grafisch programmeersysteem hebben. Dit is het geval met Scratch™, de programmeermachine die we in deze cursus zullen gebruiken om onze eigen videogames te leren maken. Het biedt een reeks puzzelstukjes, die met elkaar verbonden zijn om onze spellen op een zeer snelle en eenvoudige manier te maken. Elk van deze stukjes is een set vooraf gedefinieerde regels code, wat de leer- en ontwikkelingstijd aanzienlijk verkort.
Figuur 2. Scratch™-logo-leren, programmeren-delen-creëren.
Hoewel we in de volgende les dieper zullen ingaan op de interface en de basisbeginselen van het programmeren, is het noodzakelijk om duidelijk te maken dat deze omgeving bedoeld is om de gebruiker kennis te laten maken met de wereld van het programmeren, en daarom een belangrijke beperking heeft ten opzichte van andere omgevingen zoals Unity™ of Unreal™ (zeer populair onder kleine ontwikkelaars). Een van de belangrijkste beperkingen is dat het niet mogelijk is 3D videogames te ontwikkelen, hoewel het met een beetje vernuft mogelijk is spellen te maken in 2.5D, wat de naam is voor een techniek waarbij uit platte beelden scenario’s worden gebouwd die de indruk wekken in 3D te zijn, hoewel ze dat in werkelijkheid niet zijn.
Het bekende spel ‘DOOM’ gebruikte deze techniek, die in de jaren negentig een grote revolutie betekende (figuur 3).
Figuur 3. Scène uit het spel ‘DOOM’ met de 2,5D techniek. Beeld van Stream™
1 Comment
Mooie introductie!