2022-2025
The Park Playground: Highscores
The Park Playground is een entertainmentbedrijf waar mensen in groep free roam VR-games kunnen spelen.
Highscores... klinkt eenvoudig, toch? Dat was het niet. Alleszins, niet bij The Park Playground.
De uitdaging begon reeds bij het verzamelen van spelersinformatie tijdens hun (semi-verplichte) registratie vóór de VR-sessie begon. Als dat deel vlot verliep, moesten die gegevens worden doorgegeven aan een lokaal auto-polling programma ontwikkeld door Triangle Factory, de externe studio die verantwoordelijk was voor de ontwikkeling van onze games. De namen van de spelers moesten vervolgens in de game server geladen worden, die op het einde van de sessie de highscores per speler verzamelde en naar onze API-endpoint voor de specifieke game stuurde. Ten slotte maakte onze backend deze data beschikbaar voor de Next.js frontend die je hierboven in de screenshots ziet.
“Klinkt niet zo moeilijk?” hoor ik je zeggen. En je zou gelijk hebben, als dit vanaf het begin de gecoördineerde opzet was geweest. In werkelijkheid was de eerste versie van het highscores systeem ontwikkeld door een stagiair, met behulp van een Excel-sheet en Google Apps Script (yes, dit is een ding..). Toen ik het overnam, migreerde ik het systeem naar een SQL-database en voegde ik een fatsoenlijke API toe.
Het volgende grote probleem was de server code die werd ge-polled door het lokale programma. Die bestond uit een verzameling niet-getypeerde, niet-gedocumenteerde en verouderde PHP scripts, oorspronkelijk (en duidelijk haastig) opgezet door Dashdot, het webbureau dat het operationeel platform van de Park had gebouwd. Zij lieten het project vallen, waarna Triangle Factory het overnam en de database structuur aanpaste. Aangezien dat game-, en geen web developers zijn, waren de resultaten niet bepaald elegant. Later stapte nog een ander bureau in, enkel om de code te deployen op Microsoft Azure in plaats van AWS, ondanks dat het merendeel van onze infrastructuur op AWS draaide. Het resultaat was een fragiele hutsepot van bestanden dat niemand nog durfde aan te raken.
Het laatste pijnpunt was dat het dataformaat van de gameserver nooit gestandaardiseerd was. Elke game, en soms zelfs verschillende versies van dezelfde game, stuurde data met inconsistente property namen, ontbrekende keys of volledig andere structuren door. Tegen het einde van mijn tijd bij The Park was dat geleidelijk verbeterd, maar het bleef een aanhoudend probleem.
In al die chaos werd van ons, de developers, verwacht dat we correcte highscores leverden voor ieder game zonder dataverlies. Met veel defaults en het blokkeren van foutieve requests bereikten we uiteindelijk een redelijk presenteerbare applicatie, al bleef er nog genoeg ruimte voor verbetering toen ik vertrok.
Het was, zonder twijfel, het meest gefragmenteerde project waar ik ooit aan heb gewerkt.




