GearVRSpaceShooter is a mobile-oriented 3D VR-based Science Fiction Space Shooter that uses a gyroscope-based controller to emulate a joystick as input medium. It was implemented with Unity as well as the Oculus SDK.
The project idea had it’s origin in the dire need to have the most immersive flight input method in a world where there are no (or very few) joystick-like input methods available for mobile devices. It was developed in the context of an academic exercise to showcase a component implementation of realtime interactive input handling.
Though there is, as of now, no further development planned, I am open to anyone who wants to contribute in some way.
Usage of demo app
To properly run the game, one needs:
- Samsung Gear VR
- Samsung Gear VR Controller
- Compatible Smartphone (test device was a Samsung Galaxy S7)
Setup / Install
Install Oculus on your mobile device
Activate ADB on your mobile device
If you need to upload the game via WiFi, use adb tcpip 5555 and adb connect [your-ip]:5555 to connect to your mobile device while it is plugged in your pc, then disconnect it afterwards.
Clone the project to your development computer
Open the project in Unity
Click Build & Run
Send me your high score
- 3-axis movement: Rotate ship
- Touch touchpad: Set speed, based on y-axis position of touch
- Press touchpad: Enable/Disable 3-axis movement
- Back key: Reset level
- Trigger: Shoot projectiles
- Hold home key: Recalibrate controller (via Oculus SDK)
The cockpit was designed to help you visualize your current input. Should help to understand quickly how all of it works.
Fly through all 14 rings in the lowest possible time. Don’t fly too fast or you’ll overshoot and very likely have a veeery bad score.
The main component inside the source code is the MovementControlComponent. It uses the Gear VR Controller input data to extract rotational data as well as touchpad touch and click data to control a player object (like a space ship).
It can be configured to multiple scenarios and preferences. For example, it contains two variants for deadzone handling (strict and flexible, or axis and radial), since different projects could require different restrictions. Additionally, it contains a prefab to quickstart a cockpit-implementation with UI elements for visualization of input data.
It can easily be used for other projects, as long as the Oculus SDK is included as well. During development, there were curious things that happened with Oculus’ calibration, so it is adviced to use the newest available SDK version.
Same requirements as mentioned above apply for the component.
- Import all Script files from Assets/Scripts/MovementControl to your unity project.
- Add script MovementControlComponent to your player object
- Configure script properties to suit your needs
- If you like, you can use the prefab from Assets/Prefabs/CockpitControlsTemplate to have all the necessary objects for a basic cockpit
- Unity (Version 2017.3.0f3 was used during development)
- Oculus Integration Package from Unity Asset Store (Version 1.18 was used during development)
Newer versions than this should most likely work as well, though earlier versions of the Oculus Integration Package did seem to have problems during calibration of the Gear VR controller.
There are three additional files inside the directory “Documents”:
- VRSpaceShooter-PitchDocument.pdf: The pitch document for this project (in german)
- VR-Presentation.pptx: The presentation slides (in german)
- Demo-Video.mp4: A demo video to show the game in action, as a Virtual Reality game is hard to show in pictures
The source code includes several unit test classes that allow testing of all important calculation and utility methods. These can be found under the project GearVRSpaceShooter.Editor inside the folder Assets/Editor/