Tijdens
deze weken had ik mijn blog niet goed bijgehouden. Ik had door middel
van logs wel alles bijgehouden wat ik gedaan had, en dus kon ik nu
deze blog post maken over alle afgelopen weken.
Week 1
02-04
: 02-10
Deze
eerste week was vooral introductie en kennismaking met het Game Lab
in het GGzE, en het hoofdkantoor in Helmond. In deze week was er ook
overleg over het project met verschillende mensen, vaak ging dit
samen met de introducties en diende vooral als verduidelijking van
het project.
Belangrijk
voor mijn studie heb ik mijn POP en PAP weten af te maken. In het
begin was dit lastig voor me, doordat ik niet precies wist wat er
gevraagd werd in het POP en PAP. Nadat ik een voorbeeld had gezien,
was mijn eigen POP en PAP snel genoeg ingevuld, opgestuurd en
goedgekeurd.
Later
op de week begon ik alvast aan het brainstormen van een mogelijke
aantal variaties van WaterDraw. Ik koos ervoor om dit te doen omdat
het mij, en anderen, een beter beeld zou kunnen scheppen tot wat er
allemaal mogelijk is met het spel. Hiermee hoopte ik het makkelijker
te maken om voor anderen mensen iets te zien wat beter bij hun
toepassing paste.
In
deze brainstorm probeerde ik vrij globale spel variaties te bedenken
die ieder niet veel verschillen in wat de spelers moeten doen, maar
wel veel verschil hebben in de hoeveelheid competitiviteit,
samenwerking, frustratie en spanning.
Week 2
02-11
: 02-17
Deze
week was tijdens de voorjaarsvakantie, waardoor het niet druk was op
het GGzE Game Lab.
Ik
had deze week mijn aandacht gericht op het opzoeken van een template
voor het Project Initiatie Document, oftewel PID. Deze template begon
ik dan naar zo ver mogelijk in te vullen met informatie.
Deze
week hadden we voor het Game Lab verschillende Wii U games uitgetest,
beide zodat we aan het Game Lab konden laten weten welke games op wat
voor soort manier spelen, en om zelf inspiratie op te doen naar
coöperatieve of competitieve gameplay elementen die mogelijk
toepasbaar zijn in WaterDraw.
Hiernaast
was ik ook begonnen met een Unity project te maken en in te richten.
Met dit Unity project wou ik al vast beginnen met de software die
webcams op de PC kan vinden, deze laten zien in de GUI, en
uiteindelijk gekleurde objecten detecteren. Er was geen twijfel dat
we deze software nodig hadden, omdat dat de kern is van WaterDraw, en
WaterDraw is wat het GGzE game lab wil toepassen in dit project. Ik
had ervoor gekozen om de code geheel overnieuw te schrijven omdat de
code van het prototype uit de Swimgames heel erg onoverzichtelijk en
inefficiënt was. Wel was ik van plan om de code van het origineel
gebruikt als inspiratie en referentie, zodat ik niet alles opnieuw
hoefde uit te werken.
Ik
begon ook al mijn werk aan het prototype te documenteren in een
document, zodat het later gemakkelijk terug te lezen zal zijn wat en
waarom ik iets gemaakt heb.
Week 3
02-18
: 02-24
Deze
week heb ik vooral besteed aan het ontwikkelen van de eerste scripts
van de webcam kleuren detectie prototype. Ik begon hiermee door eerst
in een document op te schrijven welke onderdelen er allemaal nodig
zijn voor de software, en in welke stappen ik te werk ging.
Ik
heb in het begin de mogelijkheden van webcams in Unity3D opgezocht.
Er is makkelijk een lijst van webcams op te vragen en hier is
gemakkelijk mee te werken. Ik had in het prototype scripts verwerkt
die een webcam kunnen uitkiezen om uit te lezen en laten zien in de
GUI.
In
mijn vorige projecten vond ik het gemakkelijk om een debug mode
script te maken die gemakkelijk aan en uit te zetten is, die dan door
alle scripts gebruikt kan worden om op de juiste tijden console
prints uit te geven, en informatie te weergeven op het scherm.
Tijdens
het werken aan het prototype heb ik mijn best gedaan om de scripts
georganiseerd en modulair te houden, zodat ze gemakkelijk samen
kunnen werken en ingesteld kunnen worden in de Inspector Editor van
de Unity3D engine. Dit heb ik gerealiseerd door duidelijk andere
functionaliteit in verschillende scripts te stoppen, zodat niet alles
in dezelfde scripts gepropt is.
Ook
heb ik mijn best gedaan om redundantie van code te voorkomen door
middel van inheritence voor de juiste scripts.
Ik
had deze week al een goed werkende versie van de kleuren detectie, en
het was toen al vele malen efficiënter in performance en kleuren
detectie dan de originele versie.
Details
over hoe ik de webcam kleuren detectie aangepakt en uitgewerkt heb is
te vinden in het document 'Unity Webcams'.
Naast
het werken aan het prototype had ik deze week ook de opdracht
gekregen om informatie op te zoeken over de mogelijkheid van bio
feedback implementatie in WaterDraw. Dit omvatte vooral onderzoek
naar bestaande games die bio feedback gebruiken in hun spel, waarvan
een aantal voorbeelden te vinden waren. Ook bevatte dit onderzoek
naar welke soorten hardware er beschikbaar waren en welke toepasbaar
zijn voor WaterDraw. Uiteindelijk leek Arduino een mogelijkheid, of
de Garmin heartrate sensor die wireless is.
Week 4
02-25
: 03-03
Deze
week had ik ook grotendeels besteed aan 'DrawTech', de benaming van
de webcam kleuren detectie software.
In
het begin van de week richtte ik me op de detectie van wanneer een
pixel de juiste kleur heeft. Eerst gebeurde dat door de RGB waardes
direct te vergelijken, wat voor een probleem in precisie zorgde. Dit
had ik toen veranderd naar het vergelijken van de hue, saturation en
brightness van de kleur, wat voor een gigantische verbetering zorgde
in de detectie van de juiste kleur.
Verder
in de week richtte ik me op het uitdenken en uitwerken van de
Drawpoint techniek. In plaats van dat het programma elke pixel na
gaat of het de juiste kleur is, kijkt het selectiever naar een
gelimiteerd aantal punten. Bij elk punt waarvan de kleur overeen komt
wordt dieper op in gekeken. Als genoeg van de kleur aanwezig is, dan
word er een nieuw 'drawpoint' aangemaakt.
Vanuit
dit drawpoint wordt vervolgens berekend waar het object zich dan naar
toe beweegt.
Deze
techniek is een stuk efficiënter omdat er veel minder pixels bekeken
worden. Dit drawpoint is ook te gebruiken voor andere doeleindes dan
alleen laten zien welke pixels er matchen, en kan gebruikt worden om
de snelheid van het object te meten.
DrawTech
was aan het einde van deze week bijna af. Er kunnen nog een aantal
algoritmes geoptimaliseerd worden, en het hele calibratie proces kan
stukken verbeterd worden, maar verder werkte de software en kon het
bijna gebruikt gaan worden voor spel varianten.
Week 5
03-04
: 03-10
Deze
week begon met een aantal bugs op te lossen voor DrawTech. Deze bugs
waren simpelweg positie omreken fouten dankzij het gebrek van komma
getallen bij integers, makkelijk opgelost. Ook heb ik geprogrammeerd
dat er nu meer drawpunten van verschillende kleuren gevonden en
bijgehouden kunnen worden, zodat er meerdere spelers met dezelfde
kleur kunnen spelen.
Dinsdag
waren we naar de testruimte gegaan, die beschikbaar wordt gesteld
door het GGzE. We hadden daar mensen ontmoet die daar werken, en we
hadden bekeken en een beetje gebrainstormd op welke manier het spel
het beste opgesteld zou kunnen worden.
Dezelfde
dag ging ik op verzoek van Menno naar Fontys toe om WaterDraw te
demonstreren aan twee R&D werknemers van SEGA, als één van de
spellen van de swimgames.
Woensdag
heb ik verder gewerkt aan Draw Tech en heb die dag de Tracked Draw
script gerealiseerd. Deze zorgt ervoor dat er bij elk bestaand
drawpoint de juiste kleur wordt getekend op een texture, zodat mensen
kunnen tekenen op het scherm.
Donderdag
gingen we naar het game lab in Nijmegen voor de onofficiële opening
daar van, om het spel de Ontdekker te demonstreren, de toepassingen
daar van uit te leggen en uit te leggen wat het doel is van het Game
Lab in Nijmegen.
De
laatste dag waren we begonnen met de Territory Game prototype, wat
een re-make is van de originele WaterDraw game. Hiervoor heb ik ook
een makkelijk uit te breiden code geschreven voor mogelijke andere
spel types. Ook zijn de eerste art delen geimplementeerd.