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.