Voor deze oefening heb ik een bestaand project gebalanceerd zodat het beter speelbaar is. Het project bestaat uit een procedureel gegenereerde stad waarin de speler een bepaalde hoeveelheid tijd heeft om van bolletje naar bolletje te gaan. Als de speler een bolletje aanraakt gaat de score omhoog en wordt er een nieuw bolletje gespawnt.
Het idee van deze oefening is dat we de code niet aanpassen, maar enkel de publieke variabelen van de scripts.
Hieronder is de game te zien in de door mij bewerkte staat:
Doordat de traptrede net niet laag genoeg is bleef de speler hier hangen. Daarom heb ik onder de Character Controller de Step Offset veranderd naar 0.3
Een probleem dat ik heb opgemerkt dat niet aan te passen is door middel van variabelen is wanneer de speler op snelheid is en van richting veranderd. Wat er dan gebeurt is dat de snelheid niet minder wordt maar gelijk blijft, alleen dan in de andere richting. Dit fenomeen is te zien in onderstaande video:
Onderstaande afbeelding laat de bijbehorende code zien, die te vinden is in het script PlayerController.cs. Interessant om te noemen is onder else, noMoveFriction moet tussen 0 en 1 zijn. Hoe dichter bij 1, hoe langzamer de daling in snelheid is en hoe hoger de wrijving dus is. Dit was niet gelijk duidelijk, maar door in het script te kijken wel.

Wat opvalt, is de volgende regel:
Vector3 velXZ = (vert * transform.forward + hor * transform.right).normalized * speed;
Hierin is te zien dat de snelheid niet verandert wanneer de richting verandert. Zelf wil ik hier nog mee experimenteren, maar voor nu weet ik niet een directe oplossing.
Van deze les heb ik geleerd hoe componenten publieke variabelen kunnen groeperen. Ook is het nu iets helderder hoe met vectoren gerekend moet worden voor een game. Balanceren vanuit een bestaande code is echter iets waar ik al veel ervaring mee heb door GameMaker, dus dat is niet nieuw voor mij.