Betere games met live programmeren - Impact van veranderingen sneller inzichtelijk

Het maken van goede games met interessante spelervaringen is moeilijk. Riemer van Rozen legt in AG Connect van april 2020 uit hoe met een domeinspecifieke programmeertaal voor games (DSL) gamedesigners sneller betere games kunnen ontwerpen door de mogelijkheid om live te programmeren.

Publicatiedatum
22 april 2020

Games hebben wereldwijd invloed op het leven van miljarden spelers, maar het maken van goede games met interessante spelervaringen is moeilijk. In onderstaand artikel uit AG Connect (april 2020) betoogt Riemer van Rozen dat gamedesigners met een domeinspecifieke programmeertaal voor games (DSL)  sneller betere games kunnen ontwerpen door de mogelijkheid om live te programmeren. 

Softwareontwikkeling is onderhevig aan steeds veranderende eisen. Hierdoor neemt de complexiteit toe en staat de kwaliteit van broncode onder druk. Games zijn een ‘snelkookpan’ van verandering omdat gamedesigners constant aanpassingen moeten maken aan het spelontwerp om de kwaliteit van het spelen te verbeteren. Enerzijds hebben designers snellere feedback nodig over het effect van de aanpassingen. Anderzijds ontbreken zowel de benodigde specifieke interactiemechanismen als de generieke technologieën om aanpassingen direct (live) inzichtelijk te maken en uit te voeren. Hoe je software, en games in het bijzonder, live aanpasbaar maakt is nog een open vraagstuk. Welke oplossingen zijn daarvoor mogelijk?

Game design
Goede games ontwikkelen is razend ingewikkeld. Dit komt hoofdzakelijk doordat gamedesign, het ontwerpen van interessante spelervaringen, intrinsiek complex is. Om games te verbeteren, moeten gamedesigners steeds nieuwe spelregels uitproberen (playtesten). Zo komen ze erachter hoe ze het spelontwerp voor spelers leuker, meeslepender, overtuigender of leerzamer kunnen maken. Helaas komen ze er keer op keer achter dat tijdrovende aanpassingen aan de spelregels nog niet het beoogde effect hebben gehad.

Figuur 1: Het ontwikkelen van games behelst het iteratief ontwerpen, playtesten en verbeteren van de spelregels als ‘kartonnen’ prototypes (1) en softwareprototypes (2).
Figuur 1: Het ontwikkelen van games behelst het iteratief ontwerpen, playtesten en verbeteren van de spelregels als ‘kartonnen’ prototypes (1) en softwareprototypes (2).

Gameontwikkeltrajecten falen wanneer teams niet op tijd de vereiste kwaliteit kunnen bereiken omdat verbeteringen te lang duren. Figuur 1 illustreert oorzaken van de vertraging. Enerzijds neemt de kwaliteit van broncode steeds verder af naarmate snel veranderende requirements continu aanpassingen vereisen aan de broncode (+1). Dit algemene fenomeen heet ‘software decay’. Anderzijds missen gamedesigners geschikte specifieke notaties en gereedschappen om tijdig feedback te vergaren (+2) en spelervaringen te verbeteren zonder hulp van software-engineers (+3).

In het kader 'Live gamedesign' wordt een voorbeeld beschreven dat een combinatie van twee oplossingsgebieden illustreert.

1. Geautomatiseerd gamedesign ondersteunt en versnelt creatieve designprocessen. Het biedt designers visuele talen en gereedschappen die hen helpen de kwaliteit te verbeteren. Om beurten schaven designers aan de oplossing en genereren tools voor ontwerpsuggesties.
2. Live programming wordt gekenmerkt door stapsgewijze veranderingen en onmiddellijke feedback. Ontwikkelaars passen een werkend programma aan door de broncode te wijzigen. Ze krijgen onmiddellijk feedback wanneer het zich in reactie daarop aanpast.

Beide technieken helpen om te exploreren en ondersteunen het voortschrijdend inzicht. Het kader 'Live gamedesign' illustreert dit met een kijkje onder de motorkap van Johnny Jetstream, een 2D flyby shootergame, ontwikkeld door IC3D Media uit Breda.

Game-economieën
Veel games hebben een interne economie, een soort 'knikkerbaan' die de spelregels uitdrukt. Het draait hierin natuurlijk allemaal om de knikkers. Gamedesigners introduceren de hendels, valluiken en spaarpotjes die spelers interessante keuzes bieden. Spelers kunnen de knikkers (bijvoorbeeld goud, kristallen of levenselixir) herverdelen, uitgeven, verzamelen, stelen of juist weer kwijtraken. Het is tijdrovend om vast te stellen of deze regels interessante puzzels, strategieën of leerzame ervaringen opleveren. De visuele notatie Machinations helpt om de spelregels te begrijpen. Lussen in de knikkerbaan beschrijven remmende voorsprong, versterkende voordelen, langetermijninvesteringen en kortetermijnwinsten.
 
Essentiële uitdagingen en kansen
Software is veelal een product van voortschrijdend inzicht. Daarbij hoort dat de eisen en functionaliteit steeds veranderen. Live programming is een veelbelovend oplossingsgebied om de kwaliteit van software gedurende de hele levenscyclus te blijven verbeteren. Dit vereist echter dat aanpassingen en effecten expliciet gerepresenteerd worden, en dat is nu helaas nog zelden het geval.
Naast geschikte technologieën hebben ontwikkelaars interactieve omgevingen voor live programmeren nodig die de aanpassingen inzichtelijk maken. Dat vergt visuele feedback waarmee ontwikkelaars hun mentale modellen (voorstellingsvermogen) kunnen verbeteren. De werkende software zelf dient de veranderingen te kunnen doorvoeren. Uiteraard zijn de hiervoor benodigde programmeertalen en gereedschappen essentieel. De uitdaging is generieke herbruikbare methoden en technieken te ontwikkelen die helpen de complexiteit te reduceren door geschikte dimensies van aanpassing (evolutie) te introduceren.
Game-economieën zijn een geschikte aanpassingsdimensie voor game development, omdat gamedesigners gedurende het hele ontwikkelproces spelregels prototypen, playtesten en finetunen. Visuele programmeeromgevingen kunnen daarbij helpen. Echter, niet alle games hebben een grote interne economie. Andere eigenschappen om te verbeteren, zijn storytelling, virtuele werelden, gamelevels en geloofwaardige karakters.
Game development is veelzijdig en de toolsupport is nog beperkt. Daarom liggen er nog veel kansen voor toegepast onderzoek naar geautomatiseerd gamedesign.

KADER: Live gamedesign
Om het gamedesign te automatiseren en te versnellen, maakten we een domeinspecifieke programmeertaal van Machinations die ontwikkelaars in staat stelt om diagrammen in games te integreren. Met Micro-Machinations kunnen gamedesigners live de spelregels van werkende gamesoftware aanpassen tijdens het playtesten.

killgold
Broncode versie 1: Vijanden raken levert goud op

Loren Roosendaal (Knowingo en IC3D Media) noemt dit “zero iteration time”. In de volgende stappen bestuderen we de broncode van Johnny Jetstream en realiseren we (samen met een fictieve designer) een nieuwe ontwerpbeslissing. Het prototype van de game integreert Micro-Machinations en live aanpasbare spelregels.

In figuur 2 zie je het werkende spel met de speler (het vliegtuigje links), de ‘health bar’ (boven) en een vijand (de drone rechts). Het playtesten van deze eerste versie levert op dat spelers al snel overweldigd worden door tegenstanders.

Onze designer probeert dit in de tweede versie op te lossen door een interactief mechanisme toe te voegen.

killgold 2
Broncode versie 2: Voegt een manier toe om levenselixir te kopen (in blauw).

Met buyMedkit kunnen spelers voor 20 goudstukken levenselixer kopen, dat 10 levenspunten teruggeeft. Anders dan voor de ‘health bar’, die levenspunten weergeeft, heeft dit nieuwe interactiemechanisme geen vooraf gekozen representatie.

De game voegt daarom als reactie hierop live een generieke knop toe aan de user interface waarmee spelers de nieuwe regel kunnen activeren; zie figuur 3. Dat is een kleine verbetering, omdat spelers het langer volhouden. De generieke knop kan later vervangen worden door een mooi vormgegeven icoontje.

johnnyjetstream
johnnyjetstream2
Figuur 2 en 3: game versie 1 en 2

Natuurlijk is dit pas een eerste stap, en om het een leuk spel te maken zijn er complexere regels nodig. Omdat het prototype van de game Micro-Machinations integreert, kunnen designers vliegensvlug nieuwe variaties uitproberen. Zo kunnen ze sneller een beter spel ontwerpen.


Over de auteur

RIEMER VAN ROZEN is docent en onderzoeker aan de Hogeschool van Amsterdam en doet onderzoek bij de Software Analysis & Transformation group van het Centrum Wiskunde & Informatica (CWI). Daarnaast is hij docent Software Evolution aan de Universiteit van Amsterdam.

Dit artikel is gebaseerd op het proefschrift van Riemer van Rozen. Van Rozen, die in dienst is van de Hogeschool van Amsterdam (HvA), deed zijn onderzoek aan het Centrum Wiskunde & Informatica (CWI) en promoveerde op 19 februari 2020 aan de Universiteit van Amsterdam (UvA) op zijn  proefschrift ‘Languages of Games and Play: Automating Game Design & Enabling Live Programming’.

Referenties
[1] E. Adams en J. Dormans. Game Mechanics: Advanced Game Design. 1ste ed. New Riders Publishing, 2012.
[2] T. Mens. “Introduction and Roadmap: History and Challenges of Software Evolution”. In: Software Evolution. Springer, 2008.
[3] S. L. Tanimoto. “A Perspective on the Evolution of Live Programming”. In: International Workshop on Live Programming (LIVE). IEEE, 2013.
[4] R. van Rozen. “Languages of Games and Play: Automating Game Design & Enabling Live Programming”. Proefschrift. University of Amsterdam, Feb. 2020.
[5] R. van Rozen en J. Dormans. “Adapting Game Mechanics with Micro-Machinations”. In: Proceedings of the International Conference on the Foundations of Digital Games (FDG). SASDG, 2014.
[6] R. van Rozen en T. van der Storm. “Toward Live Domain-Specific Languages: From Text Differencing to Adapting Models at Run Time”. In: Software & Systems Modeling 18.1 (Feb 2019).

Bronvermelding

'Betere games met live programmeren' is gepubliceerd in AG Connect (april 2020) en op AG Connect online (22-4-2020), met dank voor de toestemming voor overname op de CWI-website.

Meer over het promotieonderzoek van Riemer van Rozen