Een game bouwen zonder engine: de lessen van Space Wars

door Jeroen Stengs, Front-end developer

Toen ik aan Space Wars begon had ik één regel voor mezelf: geen game-engine. Geen Unity, geen Phaser, geen framework dat de moeilijke stukken voor me oplost. Alleen het HTML-canvas, TypeScript en de browser. Niet omdat engines slecht zijn — maar omdat je pas écht begrijpt hoe een game werkt als je alles zelf moet bouwen.

De gameloop is alles

Het hart van elke game is de loop: update, teken, herhaal. Zestig keer per seconde. Klinkt simpel, maar hier ging meteen mijn eerste aanname onderuit. Als je beweging koppelt aan frames in plaats van aan tijd, speelt je game sneller op een monitor van 144Hz dan op een laptop van 60Hz.

De oplossing is delta time: elke frame meet je hoeveel tijd er werkelijk is verstreken, en alle beweging vermenigvuldig je met die factor. Eén regel code, maar het verschil tussen een game die overal hetzelfde speelt en een game die op sommige schermen onspeelbaar is.

Collision detection: simpel beginnen

Mijn eerste versie controleerde elke kogel tegen elke vijand, elke frame. Met tien vijanden merk je daar niets van. Met honderd vijanden en een upgrade die acht projectielen tegelijk afvuurt, stort je framerate in.

De les: je hebt geen quadtree nodig om te beginnen, maar wel de discipline om te meten. De browser-profiler laat genadeloos zien waar je frames blijven hangen. In mijn geval was de fix vooral: minder objecten laten leven. Kogels buiten beeld? Weg ermee. Deeltjes ouder dan een seconde? Opruimen.

Gamefeel zit in de details

Het verschil tussen "het werkt" en "het voelt goed" bleek te zitten in dingen die niets met logica te maken hebben. Een korte flits als je geraakt wordt. Deeltjes die uiteenspatten bij elke explosie. Een score die even opgloeit als hij stijgt. Power-ups met een magneet-effect zodat je ze naar je toe ziet zweven.

Elk van die details is een paar uur werk. Samen zijn ze de reden dat iemand "nog één potje" zegt.

Wat ik meeneem naar klantwerk

Een game bouwen lijkt ver van webdesign af te staan, maar de overlap is groter dan je denkt: performance meten in plaats van gokken, de details serieus nemen, en begrijpen wat er onder de motorkap van de browser gebeurt. Elke website die ik sindsdien bouw, profiteert daarvan.

En eerlijk? Het was vooral heel erg leuk.

Meer artikelen

Exile Armory: sfeer is ook een feature

Een showcase voor Path of Exile 2-personages had een saaie tabel kunnen zijn. Waarom ik koos voor een donker kroniekboek vol typografie en stofdeeltjes.

Lees verder

The Purple Folder: een paarse map digitaal maken zonder de ziel te verliezen

Hoe vertaal je een beduimelde familiemap vol recepten naar het web? Over skeuomorf design, plakband en de charme van imperfectie.

Lees verder

Klaar om iets moois te bouwen?

Vertel me over je project — van een eerste idee tot een compleet plan. Ik denk graag met je mee.