Create an Augmented Reality (AR) game for a bowling simulation in which the player throws a virtual bowling ball at pins using the Lenovo A3 headset. The game should have a virtual keyboard to allow the player to change parameters of the bowling simulation, as well as a menu to select game modes. Everything should be at a 2:1 scale, i.e., half the size of standard bowling components, to fit in the computer lab.
Unity 3D, C# scripting, Lenovo A3 headset with Motorola Edge Android phone, Snapdragon Spaces SDK.
To install your Unity app, you have to first build it for the Android platform, as described on the Spaces SDK web pages. Then you locate the generated .apk file. Then you install it with the adb tool on your phone with: adb install -r -g <filename.apk>
If you haven't yet installed the adb tool on your Windows computer, you can find install instructions here.
To avoid having to move the USB cable between your computer and the AR glasses, you can use adb to create a wireless connection between your Windows PC and the Android phone. See instructions here.
All user interaction needs to happen through hand tracking. Head orientation cannot be used to interact with the game.
Have the user find a large flat area on the ground for the virtual bowling alley. The alley should have ten bowling pins arranged in a triangular shape. A 2:1 sized standard bowling lane would be 10 meters long and about 50 cm wide. Your game does not need to match this lane length because there probably is not enough space in the lab.
Implement the physics of the bowling ball and the bowling pins. Configure the physics engine to allow for realistic collisions between the ball and the pins, and between the pins. The bowling pins can be represented as cylinders with a diameter of 6 cm and a height of 19 cm). Their mass should be 0.2 kg. The bowling ball should have a diameter of 11 cm.
To simplify the throwing of the ball, create a launch pad with controls to change ball speed and ball angle, and a button to shoot off the ball. Have the user place the launch pad at a distance from the bowling pins.
Create a floating menu that allows the player to restart the game, toggle guard rails on or off, and that uses a number pad to input the weight of the bowling ball in lbs, with an initial value of 0.8 kg.
When the guard rails are enabled, they need to act like walls to the bowling ball.
Add a toggle switch to the menu to allow switching between the launch pad and a more natural way of throwing the ball with a hand gesture, simulating the natural motion of throwing a real bowling ball.
Implement the game logic to allow the user play a full 10-frames game and display the scores to the user.
Test the game and tweak its parameters to ensure that it works as intended.