Tijdens de eerste twee weken heb ik kennis gemaakt met de HoloLens, hoe de integratie met Unity geregeld is en hoe Virtual Studio (BTVS) in elkaar zit. Dit heb ik op verschillende manieren gedaan:
Allereerst heb ik een aantal lessen gespeeld om een idee te krijgen wat alles precies inhoudt. Wat voor lessen worden er gemaakt? Hoe zitten deze in elkaar? etc. Hier viel me op dat de lessen qua game design wat tekort komen. Zo is het niet altijd duidelijk wat je als speler moet doen. Helaas valt het verbeteren van de game design van deze lessen niet binnen mijn opdracht.
Vervolgens heb ik ingelogd in de backend waar de lessen worden gemaakt en bekeken hoe bestaande lessen waren opgebouwd. Ook heb ik een aantal stappen toegevoegd (en weer verwijderd natuurlijk). Er was me van tevoren verteld dat de 'mogelijkheden' in Unity worden gemaakt en de lessen in BTVS worden opgesteld. Dit werd me duidelijker nadat ik gezien had hoe de lessen waren opgesteld.
Daarnaast heb ik de code bekeken van het Unity project, zelf een test project opgezet en geprobeerd het login scherm van BTVS na te maken met zo min mogelijk onnodige assets uit het bestaande project. Hier ben ik tegen een hele hoop problemen aangelopen die ik langzaamaan heb opgelost. Mijn bevindingen over deze problemen zijn hieronder beschreven.
Ten slotte heb ik een gesprek gehad met de persoon die verantwoordelijk is voor de verbinding tussen Unity en BTVS. Hij heeft me uitgelegd hoe het protocol ongeveer in elkaar zit (niet te diepgaand) en hoe 'Actions' in Unity worden gedefineerd, naar BTVS worden gesynchroniseerd en hoe deze vervolgens in BTVS worden gebruikt om lessen op te stellen. Helaas is er weinig documentatie te vinden over deze verbinding. De enige documentatie die er is, is verouderd en niet alles is meer van toepassing. Het goed documenteren van de werking van BTVS in Unity en het begrijpelijk maken van de code zou een heel project op zichzelf kunnen zijn.
Zoals in de vorige blogpost al benoemd is, waren deze twee weken een beetje rommelig. Er was niet echt een duidelijk doel. Dit ga ik voor de volgende sprints beter doen. Echter zijn er wel een aantal dingen die ik geleerd heb van deze experimenten.
- De script backend moet ingesteld zijn op IL2CPP anders werken de BuildingBlocks1 van BlueTea niet meer. Een groot nadeel van deze backend is dat het builden ontzettend sloom is. Alle code moet geconverteerd worden naar C elke keer als er gebuild wordt. Na het builden wordt een C project gemaakt door Unity die in Visual Studio gebuild moet worden naar de HoloLens. Dit kost ook veel tijd, omdat de C weer gecompiled moet worden.
- De versie 2017.3.0f3 van de Unity editor die ik gebruikte bevatte een bug waardoor bepaalde libraries niet naar C geconverteerd konden worden. Dit probleem is opgelost in de 2017.3.0p4 patch en in versies van de editor na deze patch (2017.3.1).
- Om bepaalde functionaliteit te benutten van de HoloLens wordt de Mixed Reality Toolkit van Microsoft gebruikt. Om deze library te gebruiken moet .NET4.6 als Api compatibility level worden ingesteld.
- De BuildingBlocks zijn niet geheel onafhankelijk van elkaar. Om bijvoorbeeld de VirtualStudio BuildingBlock te gebruiken zijn een aantal andere BuildingBlocks vereist. Hieronder is in een afbeelding te zien dat er een bepaalde hierarchie is bij het gebruik van de BuildingBlocks. De afbeelding is opgesteld door Paul van Veghel. Hij heeft eerder stage gelopen bij BlueTea. Tijdens zijn stage onderzocht hij hoe de BuildingBlocks moesten veranderen als deze beschikbaar gesteld werden voor buitenstaande developers. Hiervoor heeft hij enige documentatie geschreven over de werking van de BuildingBlocks. Echter is deze documentatie op bepaalde gebieden niet meer up-to-date (hoewel de kern wel nog klopt). Ook is het vrij summier. Het benoemt de verschillende onderdelen van de BuildingBlocks, maar niet de onderlinge verbindingen tussen deze onderdelen.
Hierarchie BuildingBlocks. Niet helemaal up-to-date. Er zijn meer BuildingBlocks inmiddels.
1. BuildingBlocks zijn een soort van libraries met functionaliteit die in meerdere projecten van BlueTea gebruikt worden. Voorbeelden van BuildingBlocks zijn VR (bevat code voor het toevoegen van VR functionaliteit aan een project), Localization, Rest of VirtualStudio (alle code voor het verbinden met de backend).
Comments