Monday, April 8, 2013

GameAnalytics, Chunk-based Levels

Ik heb mijn vizieren gezet op GameAnalytics, een gratis analytics systeem dat officieel Unity ondersteunt. Metrics worden bepaald aan de hand van gelogde events tijdens het spelen, dat is dus precies dezelfde aanpak als die ik heb gebruikt tot nu toe. Ik heb een aantal standaard events zoals het aantal unieke users, het aantal gameplays en de geografische distributie van users al aan de praat gekregen.

Ik heb een functie aangetroffen in het voorbeeldproject om bugs en opmerkingen te submitten, wat ik vervolgens heb gedaan, maar die heb ik nog nergens in de webinterface kunnen inzien. Als dat er in zit, customization toe laat en aan een gamelocatie gekoppeld is zit het qua aangeboden functionaliteit ontzettend dicht bij wat ik aan maken was.

Alhoewel ik maar al te graag een eigen systeem zou hebben ontwikkeld vind ik het niet erg om een bestaand systeem te onderzoeken, documenteren en er voor te zorgen dat SPIL Games het kan gaan gebruiken.

Ik ga deze week GameAnalytics ontleden en kijken wat de mogelijkheden zijn.


Alhoewel in games het veelal de conventie is dat levels van te voren ontworpen worden is het voor sommige games mogelijk om levels dynamisch te genereren. Dit kan volledig programmatisch zijn of door middel van het dynamisch arrangeren van prefabricated level segmenten (vaak 'chunks' genoemd).

Voodoo Runner -het spel waar ik mijn gameplay metrics systeem in heb geimplementeerd- is een zogeheten infinite runner game en heeft chunk gebaseerde levels. Dat betekent dat het rapporteren van posities compleet betekenisloos is omdat die positie iets heel anders betekent als je het spel nogmaals opstart.

Om in zulk soort games nog steeds relevante gameplay metrics te kunnen registreren wordt er nu in chunk gebaseerde games de positie gerapporteerd relatief aan de oorsprong van de chunk, en de naam van de chunk wordt meegestuurd als argument.

Wednesday, April 3, 2013

Blog Catch-up

Ik had mijn blog nog niet klaar gezet voor mijn werklaptop en toen ben ik het minder consequent gaan bijhouden. Het is nu opgelost, dus ik zal weer frequenter gaan posten. Hieronder is een korte samenvatting van wat er gebeurd is:

De interviews zijn afgesloten en ik heb nu een goed idee wat voor data nuttig is voor de developers. Ik heb er voor gekozen om nu data te leveren aan level designers en game designers, i.p.v. level designers en gameplay programmeurs, want die blijken weinig behoefte te hebben aan gameplay metrics.

Enkele concrete voorbeelden van data die nuttig is voor ze is het gebruik van menu's en de funnel fall-offs (als inzicht op monetization voor de game designers), de flow van de speler, de progressie van de speler vs. de tijd en de moeilijkheidsgraad van spelsegmenten (waar spelers af gaan en dergelijke).


De twee prototypes die ik ontwikkeld heb en gepitched heb waren een succes, ze vielen allebei in de smaak, en van een daarvan hebben we toestemming gekregen om het uit te werken als volledig spel. De ander heb ik gebruikt om mijn gameplay metric systeem in te integreren en te stress testen. Hiermee heb ik de functionaliteit van het systeem verbeterd en het gemakkelijker gemaakt om het te integreren.


Ik heb inmiddels wat meer gepraat met de tech mensen van SPIL Games, en ik heb mijn gameplay metric systeem gedemonstreerd en uitgelegd aan het Voodoo Runner team. Daarna heb ik mijn eigen branch gekregen waarin ik mijn gameplay metric systeem heb geïntegreerd. Hieruit zijn twee dingen naar voren gekomen: des te generieker data wordt opgeslagen des te rubuuster en flexibeler het kan worden toegepast in verschillende soorten games. Daarnaast zijn er een aantal bestaande systemen (bijv. Google Analytics of Flurry) die heel betrouwbaar data kunnen opslaan en tonen. De komende tijd ga ik dus onderzoek doen over hoe data het best zo generiek mogelijk kan worden opgeslagen en of er bestaande systemen zijn die flexibel, eenvoudig en gratis genoeg zijn om de rol van back-end tot zich te nemen zodat ik mijn lokale server op poort 1337 kan ontmantelen.

Tuesday, March 19, 2013

Game Event Batches

Het bufferen van game events lijkt van Unity af gezien te werken, maar als er geflushed wordt dan komt alleen de eerste game event van een batch aan bij de database.

Het idee van game events bufferen was dat ik één call kon maken met veel data i.p.v. tien calls met weinig data. Bij mijn implementatie werd echter de buffer geleegd door elk individueel element te submitten, wat alsnog tien WWW calls opleverde.

Een oplossing hiervoor zou zijn dat ik in een call naar de PHP back-end meerdere indices heb per argument.

Zo'n URL zou er zo uit kunnen zien: submit.php?items=2&name=hello,foo&value=world,bar

Dat levert dan twee objecten op:
{
name=hello
value=world
}
{
name=foo
value=bar
}

Het is voornamelijk back-end werk. Één van de dingen die ik moet oplossen is welke seperator ik ga gebruiken zodat alle soorten tekst kan worden opgestuurd zonder dat er per ongeluk splitsingen plaats vinden. Daarnaast kan het zijn dat een grote batch events een heel lange URL oplevert. Ik weet niet of er een limiet aan URL lengtes zit, anders moeten we grote event batches alsnog opsplitsen in losse calls.

Monday, March 18, 2013

Interviews & Jam

De interviews zijn begonnen alsmede het integratieproces van Voodoo Runner. Er is nu een mobile vriendelijke interface met instelbare buttons en pictogrammen, en game events hebben nu een uitgebreid buffer systeem zodat kan worden gekozen wanneer game events worden gepersisteerd naar de server.

De meest gebruikelijke opties zijn om de buffer te flushen zodra hij vol zit, om periodiek de buffer te flushen of om aan het einde van het level de buffer te flushen. Dit wordt allemaal ondersteund, en geeft zo meer controle aan de game designers over wanneer er toegenomen internet traffic plaats vind.

Dit voorkomt haperingen tijdens gameplay en gaat dataverlies tegen. Het scheelt ook qua performance om 1 request te doen met veel data i.p.v. 100 requests met weinig data.


Daarnaast had een andere stagiaire het idee om soort game jam te doen, zodat we ervaring konden op doen in het maken van Unity games in een kleinere, veiligere omgeving. Als het resultaat van deze jam bevalt kan het dan altijd door een echt team worden opgepikt en worden uitgebreid naar een SPIL Games IP.

Deels in mijn eigen tijd en deels tijdens rustige stage momenten heb ik twee prototypes gemaakt voor het soort games die we zouden kunnen maken, daarmee pitchen we het game jam idee deze week.


Nu kan ik de prototypes dus ook gebruiken om al vast een implementatie van mijn feedback systeem in een werkend spel te testen.

Thursday, March 14, 2013

Integratie Prototype & Interviews

Het eerder genoemde SPIL Games project 'Voodoo Runner' wordt binnenkort intern verspreid zodat collega's het kunnen spelen en feedback geven. Mijn prototype wordt in het project geïmplementeerd zodat er ergens een tablet kan worden achter gelaten met het spel er op en mensen opmerkingen en feedback kunnen opsturen. Dat betekent dat ik mijn prototype in een echt project kan toepassen en echte, bruikbare data binnen krijg.

Ik pas de interface aan zodat hij beter werkt op mobile devices en ik bereid wat performance optimalisaties voor. Ik ga bijvoorbeeld game events bufferen zodat er misschien ook al gameplay metrics kunnen worden vastgelegd, alhoewel dat nog niet nodig is voor de eerste integratie.

Daarnaast heb ik een vragenlijst samengesteld om vast te leggen hoe op dit moment game design problemen worden opgelost en hoe metrics kunnen helpen bij dat proces. Ik ga enkele gameplay programmeurs, level designers en game designers interviewen hiervoor.

Monday, March 11, 2013

Laptop & Voorbereiding Onderzoek

Ik heb het eerste bedrijfsbezoek achter de rug en alles lijkt goed op schema te zijn. Ik ga nu voorbereidingen maken voor het onderzoek, dat zal beginnen met interviews van SPIL Games werknemers. Verder heb ik mijn werklaptop binnen, die ben ik nu aan het configureren met alle software die ik nodig heb.

De 3D schets die ik had gemaakt van een intern character design wordt nu gebruikt om de vorm van het personage beter te begrijpen. Ik heb er een hoge resolutie render van gemaakt in verschillende aanzichten en die wordt nu gebruikt om een drawover te maken. Het is erg leerzaam om het designproces van een personage in werking te zien en er zelfs deel aan te nemen.

Ik heb de laatste paar weken vrijwel non-stop kunnen werken aan mijn afstudeerproject. Alhoewel ik nog steeds de grote meerderheid van mijn tijd daaraan mag blijven besteden wordt er van me verwacht dat ik mee help met interne projecten. Nu wordt het de uitdaging om een gezonde balans te vinden tussen de twee. Ik merk wel dat ik op dit moment erg veel van leer door met interne projecten te helpen. Puur en alleen al door in de buurt te zitten van mensen leer ik allerlei nieuwe technieken en processen in het programmeren van functies en het ontwikkelen van design.

Thursday, March 7, 2013

Data Gathering & Inwijding SPIL Projecten

Ik heb nu een aantal artikelen doorgenomen over data gathering. Het belangrijkste wat ik geleerd heb is dat je twee dingen doet met game data: analyse en synthese. Eerst ga je game data vastleggen en daarna ga je die data samenvoegen op een manier dat je er patronen in kan herkennen en dingen van kan afleiden.

Problemen in games vaststellen ligt heel erg dicht bij wetenschappelijk onderzoek doen. Er zijn over het algemeen twee manieren om problemen in games vast te stellen: hypothese gedreven en exploratief gedreven, twee begrippen die rechtstreeks uit de wetenschap komen.

Bij hypothese gedreven onderzoek heb je een vermoeden waar een probleem ligt en zoek je data om het te bevestigen of weerleggen, bij exploratief gedreven onderzoek weet je niet precies waar een probleem ligt en ga je steeds specifiekere data analyseren om steeds dichter bij de oorzaak te komen.

Eigenlijk doe ik dus een onderzoek over hoe je een tool moet maken die je helpt met onderzoek. Het klinkt gevaarlijk recursief maar ik denk dat het mijn onderzoek en eindproduct hechter bij elkaar brengt.


Verder wordt ik ingewijd om mee te kunnen helpen met SPIL Games' interne projecten. Mijn bestelde werklaptop verschijnt langzaam aan de horizon en ik heb mijn handen mogen leggen op SPIL Games code en concept art. Op dit moment ben ik bezig met een 3D model te maken voor een nieuw personage. Werken met professionele concept art is uitdagend, maar het lukt best goed. Ik zou graag een screenshot bijsluiten maar ik geloof dat dat tegen het bedrijfsbeleid is.