Dive into VR and create a portfolio of 15 immersive games
Welcome to the world’s most comprehensive course on VR game development, where you will learn and master the foundations of C#, Unity and VR by building practical projects. Whether your goal is to make VR games for fun, do a startup in this exciting field, or become a professional Unity development (+160k a year on senior roles), this course contains everything you need to reach your goals.
- Locomotion techniques
- Gaze-based interaction
- Cabin/vehicle experience
- User interface design in VR
- Working with 360° images and 360° video
- Motion sickness avoidance, based on current research
- 3D game mechanics and physics
- Room Scale Experiences with SteamVR
- Level design
- Performance and industry best practices for mobile and desktop VR
Platforms covered in the course
- Oculus Rift
- HTC Vive / SteamVR compatible headsets (2 Room-Scale experiences included)
- Samsung Gear VR
- Google Cardboard (Android and iOS)
- Google Daydream will be added later in the year
Pablo Farias Navarro is a game developer and founder of ZENVA, where he has taught game development to +200,000 students and authored +50 courses. As part of his work in game development education, Pablo was invited to join the Intel Software Innovator Program, and has run game programming workshops in San Francisco, Brisbane and Bangalore. Pablo has been making games since 1996 and has been obsessed with VR since he saw The Matrix.
By enrolling in the course you’ll get instant access to the modules below. The rest of the course is in the making – new lessons are added each week!
1. Unity Basics – Learn Unity and C# by Building a Multi-Level 3D Platformer
This module aimed at those with no prior Unity or C# experience. We introduce the Unity Editor and the basics of Object-Oriented Programming. Through out the module we build a fully-functional Mario-style game with different screens and levels.
- Unity Editor basics
- Transforms and game objects
- Unity Scripting in C#
- Object-Oriented Programming
- Multi-level functionality
- Canvas UI
- Importing external assets from Blender
2.VR Platform Experience and Platform Setup
In this module we create a VR experience that consists of a platform that flies to different destinations. We make this project run in all the platforms and cover some performance basics.
- VR flying platform experience
- C# arrays
- Basic setup in all platforms: Cardboard (Android and iOS), Gear VR, Oculus, HTC Vive (OpenVR)
- Performance and light baking basics
3. VR Forest Experience with Mosquitos
In this module we create a VR experience where a peaceful night in the forest is interrupted by giant mosquitos. We use the VR Standard Assets from Unity to create a reticle for gaze-based interaction. This game is also adapted to work with SteamVR-compatible controllers. This includes the HTC Vive, Oculus Touch and other vendors.
- VR Standard Assets overview
- Reticles and VR Eye Raycaster
- Randomization of trees scale and rotation
- Particle effects
- Creation of the mosquito game
- Adaptation for SteamVR-compatible tracked controllers
4. Creating VR Experiences with 360 Photos
In this module we cover the creation of a VR experience using 360 photos. We start from the ground-up, covering what 360 photos are, how they are stored and what we need to do in order to prepare them for Unity. This module includes also a discussion around UI in virtual reality. By the end of this module, you’ll have built a 360 photo experience that can be easily re-purposed for any kind of application. You will also end up with reusable UI components you can drop into any Unity project.
- Working with 360 photos in Unity
- UI in VR: the importance of Spatial UI
- Diegetic vs non-diegetic UI
- Gaze interactions: clicking and hovering
- Building reusable UI components
5. Interactive VR Quiz with 360 Video
In this module we build an interactive quiz that uses 360-degree video to create an immersive environment. Questions and their correct answers are loaded from the cloud, so that the content of the quiz can be modified even after the game is built. 360-degree videos are covered assuming no prior experience with them. This game uses elements developed in previous modules such as spatial UI panels and buttons for gaze-based interactions.
- Working with 360 video in Unity
- Interactive quiz in VR with gaze-based interaction
- Loading data from the web
- Introduction to Coroutines
6. Space Invaders VR
In this module we build a complete space invaders game in VR, where you have to defend your a city from an alien attach in a post-apocalyptic world. To start the game the player needs to shoot at a graffiti wall. After that, enemy formations will appear in the sky and the player has to shoot them down. The score is shown in a graffiti wall. Dead aliens will fall to the ground and accumulate in piles of junk. This game runs in all VR platforms.
- Building a space invaders game from scratch
- Gun / tool positioning in VR
- In-game HUD
- Game state machine to manage the game flow
- Object pooling technique
- Adapting the game to work with SteamVR-compatible tracked controllers
7. Exploration Game with Fixed Teleportation
In this module we build a game where the player can move around in a VR environment using fixed teleportation. The player can hop onto moving platforms and has to avoid enemies. Through out this module, students will build a complete fixed teleportation system that can be dropped into any Unity project.
- Types of teleportation in VR
- Implementing a teleportation system with pods that activate on player proximity
- Creating an exploration game with enemies to avoid
- C# and Unity concepts: lists, finding objects, managers, invoking methods at an interval
- Linear interpolation and easing functions
8. Puzzle Game
In this module we cover the creation of a puzzle game where the player has to drag and position pieces in their correct location. When the puzzle is successfully completed, a giant pyramid emerges from the ground. This module includes intermediate C# concepts such as Delegates and Events.
- Creating a full puzzle game in VR
- Reusable component to drag and position elements in VR using the reticle
- Intermediate C# concepts: Delegates and Events
- Using Events to notify game objects
- Working with local and global coordinates
9. VR Fitness Game
In this module we cover the creation of an infinite runner in VR where the player has to jump in “reality” in order to jump in virtual reality! The mechanic of this game is that of an infinite runner, where new environmental objects and platforms are created during gameplay. The player has to jump over ditches full of water while running in a low-poly world. The game is also adapted to headsets with no position tracking such as the Google Cardboard.
- Creating a unique and completely original game mechanic using position tracking in VR
- Implementing infinite runner game mechanics
- Detecting jump in VR
- Using object spawners with pooling techniques to keep the game efficient
- Make distant objects disappear
- Using images to represent distant geometry for efficiency
10. Cabin Experience
Ever wanted to pilot your own spaceship like Han Solo? In this module we’ll create an aircraft piloting experience, where players can fly over an abandoned city located in a floating island. We are effectively creating a virtual vehicle here, which can be controlled entirely with the buttons on the dashboard. This project demonstrates good practices when it comes to motion sickness and also the use of a diegetic UI (UI elements located in the game world).
- Creating an aircraft cabin experience in VR
- Controlling a virtual vehicle using game-world UI elements
- Importing models from Blender and MagicaVoxel
- Creating custom events and delegates
- Occlusion culling to optimize the rendering of objects in your VR experiences and unlock more performance
11. VR Platformer Game
In this module we’ll adapt the platformer game we built when learning the basics of Unity into VR. This will introduce several challenges we’ll have to solve, such as modifying the home and game over screens so that they are suitable for VR. The player mechanics and HUD will be modified. Also, we’ll cover how to map buttons in an external gamepad (we’ll use the Xbox 360 controller, but the skills are applicable to any gamepad), and how to manually trigger events in the Unity VR Standard Assets.
- Adapting an existing 3D platformer game to VR
- Adaptation of UI screens and HUD
- Changes to the platformer mechanics and “cursor key” type of movement
- Mapping buttons for the Xbox 360 controller and other gamepads
- Manually triggering events in the VR Input class so that we can utilize it with any external device (making our games and your skills future-proof)
12. Underwater Experience
In this module we create a complete underwater experience in VR, where the player can dive around, chase fish and run into dangerous sharks! This experience covers many different aspects such as terrain generation, underwater look and feel, animations, performance and motion sickness considerations.
- Creating a complete underwater experience: light, colors, fog usage, visibility challenges
- Creating Unity terrains and addressing performance considerations
- Detecting player proximity without creating spikes in CPU usage by adding randomness
- Using the Animator and creating Animation Clips in the Editor
- C# inheritance and method overriding to create a cleaner code-base
13. First-Person Shooter
First-person shooters are hugely popular and this course wouldn’t be complete without one. In this module students their build our own VR FPS game from scratch. The player can move around the scene using a free-range teleportation system similar to that seen in games such as Arizona Sunshine. The enemies consist on zombies that will have rig animations so they can walk or fall realistically when shot down. The player can collect ammo cartridges and the gun shows how much ammo it has left.
- FPS mechanics in VR: shooting bullets, recharging ammo, killing bad guys
- Developing a free-range teleportation system
- Reusable collectable items
- Adding humanoid rig animations to a model using Adobe Mixamo (free cloud service)
- Using the Unity Animator to create transitions and blend animations
14. RPG Game
Ever wanted to create your own RPG game? In this module we create an impressive RPG game in VR, where the player can explore dungeons, fight skeletons, collect weapons and health, and interact with non-player characters (NPC). The game uses free teleportation and a reticle-based system to interact with the different elements.
- Modular level design
- Exploring with free teleportation
- Collecting health and weapons
- Animator State Machines
- Enemy AI: Path Finding using NavMesh
- Light baking
- Occlusion culling
15. SteamVR Room-Scale Experience – “Gozilla” Experience
In this module we cover the SteamVR SDK and how create a Room-Scale experience for the HTC Vive and other SteamVR-compatible technologies, such as the Oculus Touch controllers. The game we build here is a “Gozilla” experience where the player has to fight giant dinosaurs in the middle of a city that gets destroyed in the process. At the end of the course, we show how to adapt this game to work with a reticle for mobile VR / Oculus standalone.
- SteamVR SDK: tracked controllers, Play Area setup, scripting
- Unity native OpenVR support
- Creating a fully fledged Room-Scale experience
- Hand controller interactions: grabbing and throwing objects
- Adapting the experience to work on mobile VR
Modules in the making
- Room-scale experience using the VRTK library
- General introduction to VR, locomotion and motion sickness based on current research
- Google Daydream (late 2017)