Gaming11.04.2014

Dev-log: Procedurele Generatie


Waarom zelf iets bouwen als je ook de computer dat kan laten doen. Het is een terechte vraag en de handige programmeur weet meteen het antwoord. Willekeur komt veel voor in games, denk maar aan hoeveel schade je aanricht met je wapen, vaak is dat een random tussen een minimum en een maximum. Nu computers sneller worden kan er ook meer gegenereerd worden en dat leidt tot compleet nieuwe gamemechanieken.

dev-log-procedurele-generatie.jpg
dev-log-procedurele-generatie.jpg

Het bekendste voorbeeld van procedurele generatie is Minecraft. De wereld is eindeloos groot en de game weet hoe hij stukken aan elkaar moet aansluiten, op die manier worden complete bergen gemaakt. Naast Minecraft zijn er nog games als Spelunky of Rogue Legacy. Deze genereren levels als een keten van losse ruimtes. Elke ruimte is vooraf gemaakt door een designer, maar welke ruimtes in een level voorkomen en hoe ze op elkaar aansluiten wordt door de computer bepaald.

Er is echter een probleem. Procedurele generatie geeft geen gameplay. Hoewel het wel vaak een deel van de game is zoals in Spelunky, moet er toch nog vaak veel worden gedaan aan gameplay. Wat doet de speler; hoe doet hij dat; wat is daar voor nodig; dat zijn belangrijke vragen. Vijanden moeten gewoon nog traditioneel gemaakt worden, elk met een unieke eigenschap, zodat de computer deze vervolgens in de willekeurige levels kan plaatsen. Hetzelfde geldt ook voor wat de speler doet. Wapens, een skilltree, het moet allemaal gemaakt worden.

Kansen liggen zijn er zeker bij procedurele generatie. Kunstmatige intelligentie kan steeds beter worden door zich aan te passen aan het niveau van de speler. Ook gameplay kan voor een deel procedureel gemaakt worden door bepaalde componenten op elkaar te laten werken, zoals te zien is in The Binding Of Isaac.

Op dit moment werk ik zelf met random gegenereerde dungeons waar vijanden in worden gestopt. In tegenstelling met Spelunky maak ik mijn dungeons niet van te voren om ze vervolgens aan elkaar te laten plakken. Ik vul een ruimte volledig met blokken om vervolgens blokken in een random patroon weg te halen. Het nadeel is echter wel dat ik weinig controle heb over welke blokken waar te zien zijn. Daarnaast ontbreekt er ook nog sfeer doordat alle muren er hetzelfde uitzien. Hier moet dus nog veel variatie in worden gemaakt. Gelukkig is procedurele generatie wel makkelijk te maken. Vanuit de basis kun je eenvoudig dingen toevoegen waardoor die levels ineens een stuk sfeervoller zijn.

In de dev-log artikelen vertel ik elke week hoe het vordert met de game waar ik aan het werken ben, of licht ik een technische of design kant van het maken van games toe.

Marnix Suilen

Schrijft al jaren over games, van de kleine indie-games tot de grote najaarstitels. Liefhebber van Dota 2, twijfelt nog over Destiny.