top of page
Writer's pictureBob Jeltes

Hoofdstuk 2: Gelijk aan de slag

Updated: Aug 6, 2021

In dit hoofdstuk gaan we in op het aantal stappen om aan het werk te kunnen zo laag mogelijk houden voor designers die met de tool aan de slag gaan.


Een aantal tools waar mijn behavior tree tool op lijkt vereisen dat, wanneer je de editor hebt gevonden, je een file aanmaakt voordat je kan beginnen met werken. Hiervoor moet je vaak in een ander deel van Unity zijn.


Om te beginnen met werken met Panda BT moet je eerst een tekstbestand aanmaken in de projectbestanden en dan het aangemaakte bestand in het component op een object zetten.

 

Het is ideaal om als game ontwerper, wanneer je de editor opent, gelijk te kunnen beginnen met experimenteren en maken. Dit is tenslotte ook wat er Microsoft Paint zo toegankelijk maakt: je opent het programma en kan gelijk beginnen met tekenen. Zo kan zelfs een kind van vijf beginnen met iets tekenen en zich creatief uiten.

Door dezelfde mate van toegankelijkheid na te streven kunnen ontwerpers met alle ervaringsniveaus een creatieve bijdrage leveren, zonder eerst te hoeven leren hoe de tool in elkaar steekt.


Wat kun je doen om het aantal stappen zo laag mogelijk te houden?

Tool aanklikken, gelijk kunnen beginnen met maken.

Haal het aanmaken van een file voordat je aan het werk kan uit het proces. Zo zorg je ervoor dat geen extra setup vereist is.


De manier waarop ik het heb opgelost voor mijn behavior tree tool is door de editor te laten werken met een "working file": een tijdelijk bestand dat aangemaakt wordt zodra de editor wordt geopend.

Wanneer de Behavior Tree Editor wordt geopend is er al een Behavior Tree met een Root Node aanwezig waar de gebruiker gelijk mee kan gaan werken.


Voor we het gaan hebben over de manier waarop de behavior tree editor tijdelijke bestanden bijhoudt, leg ik eerst uit hoe de behavior tree editor is opgebouwd.


De behavior tree editor is gebouwd op code van oguzkonya. Deze code biedt een abstracte node editor die makkelijk uitgebreid kan worden. Deze code heb ik uitgebreid en hierop heb ik vervolgens mijn behavior tree editor gebouwd.

Een deel van de code zit dus in de class NodeBasedEditorView en een deel zit in BehaviorTreeEditorView.


We beginnen in NodeBasedEditorView, de base class van BehaviorTreeEditorView.

De belangrijke delen voor het onderhouden van de tijdelijke file zijn in dit geval de nodeViews en connections lijsten.

Deze worden gebruikt om de visuele representaties van de nodes en de verbindingen ertussen te laten zien. Ook worden deze later gebruikt bij het opslaan om informatie over te dragen naar de behavior tree die vervolgens weer gebruikt kan worden om het opnieuw in te laden in de editor, of uit te voeren als een werkende behavior tree.


PopulateView functie in de NodeBasedEditorView class

PopulateView functie in de BehaviorTreeEditorView class


Ook belangrijk is de PopulateView functie. Die gaat in de base class uit van de twee genoemde lijsten, maar aangezien we in de tool werken met behavior trees maken we gebruik van een BehaviorTree referentie. Zo kunnen we het onszelf makkelijker maken om data heen en weer te sturen tussen het tijdelijke behavior tree bestand en het bestand tussen de project files, waar data naar wordt opgeslagen en van geladen.

Links bovenin is het opgeslagen bestand te zien. Dit maakt gebruik van een standaard object field. Hierdoor kan de ontwerper erop klikken en het bestand makkelijk in de projectbestanden terugvinden. In werkelijkheid werkt de ontwerper dus eigenlijk met een ander bestand, totdat het bestand wordt opgeslagen en de veranderingen zijn overgedragen.

Doordat ontwerpers in een tijdelijk bestand werken hebben ze de mogelijkheid om veranderingen terug te draaien. Pas wanneer ze op "Save" drukken worden de gemaakte veranderingen overgedragen naar het bestand wat geselecteerd is, of naar een nieuw bestand met de ingevoerde naam als er nog geen bestand geselecteerd is.


Uiteraard is het ook mogelijk om de gebruiker in een projectbestand te laten werken, maar dan is het van belang dat een Undo/Redo functie wordt geïmplementeerd. Voor mijn project viel dit helaas buiten de scope en daarnaast vind ik het prettig dat mijn tool een Paint-achtige workflow heeft als het om ease-of-use gaat: eenmaal geopend is de tool gelijk bruikbaar.

 


28 views0 comments

Related Posts

See All

Comments


bottom of page