This repository is associated with the course Virtual Reality, taught in the university School of Arts and Letters (Bogotá) by Juan Olaya in the semester 2017.2.
For this course we use Unity 3D 5.6.3f1 and OSVR as VR framework. OSVR is able to run on any Android device provided of a gyroscope and accelerometer. To test if your Android device is compatible, download the Cardboard App. The following are the components required for the course.
The VR Reticle or VR Gaze is useful to interact with GameObjects, as follows:
- Rotate GameObjects
- Change Color of GameObjects
- Destroy GameObjects
- Drag and Drop GameObjects in 2D/3D
- Add Force to GameObjects (Normal Vector)
- Impact Effect (Explosion Particles)
For Virtual Reality in this course we focused in First Person Character Controller as movement for the most of the projects. This movement is able to manage with a Bluetooth Controller as is explained below. As well is possible to map the follwing movements:
- Third Person Character Controller
- Aircraft/Drone Controller
- Motorcycle Controller
- Car Controller
OSVR, as VR framework, allows use concepts such Interactive Item and Eye Raycaster. In order, to use these concepts properly is relevant to add the VR Eye Raycaster script to only one GameObject. For instance, add it to the camera GameObject. Also, add VR Interactive Item script to each GameObject.
Assignment: Identify the software patterns that have been used by these concepts/scripts. Recommended Book: Game Programming Patterns, Nystrom (2014) - Online version
Assignment: Elaborate a Class (Script) Diagram of the Unity project that shows: the relationship among scripts, their attributes, their methods and software patterns. Recommended Book: Object-Oriented Software Engineering: Practical Software Development Using UML and Java
Assignment: Install Android Studio in your computer, PC and Mac are supported. Then generate an Android app in Unity from your VR project. Remember that the Android device (compatible with Cardboard) must to be connected to the computer during the Build and Run in order to associate the Unity Main Camera with the device's gyroscope.
In order to enhance the performance of the App, setup the Texture Compression in the Build Settings, as is shown in the following image:
For the video game is relevant includ the concepts of Game Design, such as: goals, score, rules, awards, convincing mechanics and vivid interactive storytelling. In addition, it is important to enrich the video game experience with:
- Non-Player Characters (NPC) from Mixamo
- Waypoints (to move characters, animals or vehicles around)
- Textures
- Physics Simulation
- Explosion Simulation
- Sound Effects
For this course is highly recommended to obtain some budget VR Glasses and a Bluetooth Remote Control compatible with Android devices. The the VR-PARK Portable Wireless Bluetooth 3.0 Remote Controller and the cardboard VR Box are budget recomended devices.
In order to map the buttons between the bluetooth controller and the Unity app running on an Android device, please check the following information:
According to the Agile methodologies of development, elaborate a Gantt chart in the online tool TeamGantt that takes into account the follwing components:
- Game Design Document (GDD)
- Requirements Elicitation
- Two Scrum Sprints (2nd and 3rd term each)
- Final delivery (5 minutes pitch)
Recommended Book: Agile Game Development with Scrum, Keith (2010)
- The VR Book: Human-Centered Design for Virtual Reality - ACM Books, Jerald (2015)
- Agile Game Development with Scrum, Keith (2010)
- Unity Virtual Reality Projects, Linowes (2015)
- A Taxonomy of Mixed Reality Visual Display, Milgram (1994) - Online Version
- Game Programming Patterns, Nystrom (2014) - Online Version
- Artificial Reality 2, Krueger (1991)
- A Study Path For Game Programmer, Yip (2016)
The students designed and developed (3) Serious Games and (4) Entertainment Games using Unity and OSVR in the course Virtual Reality. This course was taught in the second semester of the year 2017. The video below shows these projects:
- VR Best Practices - Oculus Dev
- Designing for Google Cardboard - Google Dev
- UX of VR
- Simulator Sickness Questionnaire
- Future of mixed reality - Unity Blog
- 3 DOF Vs. 6 DOF
- Degrees of Freedom
- Google AR and VR Blog
- Google Cardboard - Dev
- Google ARCore
- WebXR Generic Sensors
Check out the list of VR apps -> Social VR, Games VR, Apps VR, Exploration 360° and Augmented Reality