The website utilises the libraries Three.js for rendering, Ammo.js for its physics engine, a version of the open source AR.js library for its AR tracking which I optimised for my own purposes and both Microsoft's and Google's cloud platforms for the conversational content. The Generic Sensor API is used to get the physical rotation of the cube by removing the rotation of the mobile device’s inbuilt gyroscope so the AR content can be delivered in the correct orientation as well as allowing the cube to be used as the controller (see the Problem-Solving side).
I developed a bespoke CMS for this website where everything including the content, game states and events are controlled within the CMS with the idea that the same physical cube could be sent out to multiple individuals but the digital content could be personalised to companies and individuals by pointing to a different content file as a parameter in the URL delivered via a QR code.
To optimise loading times, I wrote a bespoke asset loader to allow for content to only be loaded once if used multiple times on different sides so reducing the overall loading time of the whole experience. For example the five 3d characters used on the teamwork side, the ten avatars used in the multifaceted side and one on the innovation side all use the same 3d mesh loaded only once but with different texture maps.