Omdat er meerdere oplossingen zijn voor het traceren van een speler, is het van belang om een systeem te ontwerpen welke elke input kan aannemen. Hiermee kan de input los gemaakt worden van het spel. Zo kan in de toekomst gebruik gemaakt worden van een andere manier van speler traceren en nog steeds van dezelfde spellen gebruik gemaakt worden.
Bij dit ontwerp is gebruik gemaakt van een systeem van zogenoemde ScriptableObjects (SOs) in Unity.
Deze SOs hebben 2 functies; data ontvangen en events gooien.
De spellen luisteren en reageren op deze events. De systemen die data opvangen vanuit OpenPose of OpenCV laten aan de SOs weten dat er nieuwe data is.
Wanneer meerdere van deze SOs aangemaakt worden, staan deze in de folder structuur. Deze SOs kunnen in elke scene en door elk object gebruikt worden.
Om deze SOs bekend te maken aan scripts kan hier simpelweg naar gerefereerd worden in de editor.
De realisatie van dit systeem is hier te vinden.
Er is een ontwerp opgesteld over hoe de speler getraceerd kan worden via OpenPose. Deze software traceert verschillende lichaamsonderdelen, zoals je schouders, ellebogen, polsen, middenrif, etc.. Het nadeel hierbij is dat dit in een 2D beeld wordt gedaan. Het is dus niet mogelijk om te zien of de benen naar voren zijn gezet vanuit een voorkant perspectief.
Vanwege het 2 dimensionale beeld zal de camera vanuit de zijkant gericht moeten staan op de speler. Vanuit deze richting kan het middenrif genomen worden als middelpunt van de speler. Door een hitbox op een afstand van de speler te plaatsen, welke meebeweegt met het middenrif en een hitbox aan de voeten, kan gekeken worden of de speler een stap zet. Om hier extra zekerheid bij te krijgen kan een hitbox aan de achterkant van de speler geplaatst worden welke kijkt of het andere been zich achter de speler bevindt.
Door een hitbox om het middenrif heen te zetten, kan gekeken worden of de knieen hoog genoeg opgetild worden om als “zittend” gezien te worden. Door deze hitbox iets breder te maken kan deze methode van zowel een voorwaartse, als een zijwaartse camera gebruikt worden gemaakt.
Balans kan op 2 manieren bekeken worden;
Op dezelfde wijze als bij het lopen, waarbij de camera aan de voorkant van de speler staat en hitboxen naast de schouders. Dit heeft alleen het nadeel dat de speler hier tijdens het bewegen per ongeluk instapt als deze naar links of rechts een stap dient te zetten. Deze optie zal niet werken vanuit een zijwaartse camera.
Door de hoogtepunten van de schouders te pakken, kan met een marge vergeleken worden of een van de schouders zich ver boven de ander uitsteekt. Door dit marge zouden er geen false positives gegeven moeten worden als de speler een rennende beweging maakt, maar bij het leunen naar links of rechts zal deze marge overschreden worden. Deze oplossing werkt met een voorwaartse en met zijwaartse camera opties.
Er is hierbij gekozen voor oplossing 2.
De posities van de verschillende lichaamspunten, in dit geval de schouders, ellebogen en polsen kunnen gekoppeld worden aan aparte objecten, hier kan een spel gebruik van maken om de exacte positie van deze onderdelen te achterhalen en zo een model hieraan kunnen binden welke naar objecten of andere spelonderdelen kan reiken. Deze oplossing werkt vanuit een voorwaarts en zijwaarts camera perspectief, net wat het beste uitkomt voor het spel.
Er zijn 3 concepten bedacht, welke elk een focus leggen op een andere bewegingsvorm. Een compleet design document kan hier gevonden worden. (Design document 3 concepten)
Deze spellen zijn bedoeld om kort gespeeld te worden in sessies van 2 tot 6 minuten.
Burger maker en de Endless runner zijn vervolgens gerealiseerd.
Burger maker is bedacht rondom de beweging "Armen reiken".
Hierbij is het de bedoeling dat de speler ingrediënten pakt vanaf de zijkanten en deze op de hamburger legt. Deze ingrediënten liggen net buiten arm bereik, waardoor de speler zijn balans moet aanpassen.
Het doel van het spel is om zoveel mogelijk hamburgers te maken binnen de tijd en zoveel mogelijk geld binnen te halen.
De endless runner is bedacht rondom de bewegingen "Lopen" en "balans".
Dit spel bootst de speler na; door een stap te zetten in het echt, zet de avatar ook een of meerdere stappen. Hoe sneller de speler loopt, hoe sneller de avatar gaat lopen. De speler moet naar links of rechts leunen om de avatar naar links of rechts te bewegen.
Het doel van het spel is om zoveel mogelijk punten te scoren door zoveel mogelijk edelstenen op te pakken binnen de tijd, welke verspreid links en rechts liggen. Hoe beter de speler loopt, hoe meer deze tegen zal kunnen komen.
Frogger is een al wat ouder spel, welke aangepast wordt om rondom de beweging van "zitten en staan" te draaien.
De speler bestuurt Frogger door zelf te gaan staan en weer zitten, zo zet Frogger 1 stap vooruit. Als de speler meerdere stappen wilt zetten, zal deze meerdere keren achter elkaar moeten gaan staan en zitten. Tussen de autos en de rivier zit een wachtlijn, deze kan de speler gebruiken om een momentje rust te nemen.
Het doel van het spel is om Frogger naar de overkant te krijgen en hierbij de auto's en het water te vermijden.
Meer weten over hoe deze concepten gerealiseerd zijn?