Circus Cannon is a puzzle game for Microsoft Hololens 2 where the player is tasked with placing trampolines in order to lead a cannon ball through golden hoops. Microsoft Hololens 2 is an augmented reality/mixed reality headset that is able to track virtual and non-virtual objects alike. In Circus Cannon the player is presented with a cannon, a stack of trampolines and a ring-shaped goal. The cannon repeatedly fires cannonballs and the player has to use their real hands in order to grab the trampolines and place them so that the cannonball bounces on them to eventually go through the golden hoops.
A major motivation for this project was to explore the capabilities of Mixed Reality headsets and learn more about them. None of us in the group had any prior experience working with Augmented/Mixed Reality Reality technologies. These headsets are still quite inaccessible because of their high price so developing for them is a unique opportunity for us in the group.
One of the goals for the project was simply to create a fun game for this unique piece of hardware. We sought to make use of as many of its features as possible: hand tracking, head tracking, spatial sound and we even researched the possibility of bringing in a 3D printed cannon that the player could physically move in order to change the position where the cannonballs would be fired from.
Interaction was key for this project and we made use of some interesting methods. The position of the player is naturally decided by the position of the headset in space as the game area is made up of the physical world. In order to interact with objects in the game, the player makes use of their hands. The player can grab and move trampolines by physically grabbing them with their hands and moving them around. By rotating their hands they are able to rotate the platforms as well. The player can also make use of long-distance controls that work similarly to grabbing the platforms directly, but is done by aiming rays at the platform that the player wants to move.
As for graphics technologies we were able to implement a few different interesting visuals. For example, the trampolines deform and spring back when the cannonballs hit them by using something called bounce maps. Depending on where the ball hits, the fabric of the trampoline will deform accordingly. In order to create some obstacles for the game we added a burning barrel that makes use of a stylized flame effect made from a custom particle system. We also added a visual indication for when the ball passes through a hoop, also making use of a particle system.
As previously mentioned, none of us in the group had previously worked with Hololens or MagicLeap and initially the project was planned for the latter of these two devices. After encountering some issues with the MagicLeap that were out of our reach we decided to switch to Microsoft Hololens. We had to scrap the work we did with the MagicLeap but a lot of the knowledge we gained from working with it carried over to the Hololens.
A few planned implementations got scrapped due to either changing mechanics of the game or because we were unable to fully implement them and build them on the Hololens. Initially, the player was able to spawn platforms by a pinching gesture of the right hand and moving them by pinching with the left hand. In order to completely remove platforms, the player had to pinch with their left hand and drag the platforms to a virtual recycle bin. We noticed several problems with these controls. The player often spawned a lot of platforms by accidentally keeping their right hand pinched and many players simply thought the controls were unintuitive. When we had these controls in place, there was a need for a visual indication of which platform the player is currently holding, which was done by using a custom shader that created a glowy outline of the platform that was currently held. When we streamlined the controls, and disallowed the user to spawn platforms, there was no longer a need for the visual indicator of the select platform.
Jui-Hsien Wang, Rajsekhar Setaluri, Doug L. James, and Dinesh K. Pai. Bounce Maps: An Improved Restitution Model for Real-Time Rigid-Body Impact. ACM Trans. Graph. 36, 4, Article 150 (July 2017)
This paper suggests a method for creating more realistic bouncy objects. Most strategies for creating bounce effects make the simplification that the object is equally “bouncy” over its whole volume. This was the inspiration for our trampolines.