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 (2 Room-Scale experiences will be included)
- Samsung Gear
- 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.
- VR Standard Assets overview
- Reticles and VR Eye Raycaster
- Randomization of trees scale and rotation
- Particle effects
- Creation of the mosquito game
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
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
Modules in the making
These are some of the modules that we are working on (all the screenshots correspond to games that will go in the course). We have many of the games ready and now all that’s left is the recording itself. More games will be added. We are aiming to release one module a week.
We’ve completed the creation of a VR cabin experience, where you can pilot a small aircraft in a floating island. Cabin experiences fit great into VR, and are one of the main locomotion techniques. The limitations of the medium, such as being constrained to a small area can be easily incorporated into the games themselves, creating thus a great sense of immersion. The demo we built allows the player to control the ship by using buttons located in the dashboard, which allow the ship to move up,down, forward and also to steer in a way that is less likely to produce motion sickness. This project will be one of the first games students build in the course.
RPG Combat Game
We completed one of the most comprehensive games we’ll be including: a dungeon crawler RPG! In this module students will build a basic combat RPG game where the player can use different weapons to fight hordes of skeleton warriors, while exploring a dungeon. The game also includes NPC (non-player characters) you can talk to. Some features included in this demo are:
- Building dungeons using modular assets: walls, ceilings, doors, floor, etc. It’s very easy to assemble any kind of level with this approach.
- Enemy movement using pathfinding AI (Navmesh).
- Grabbing different types of weapons that cause different damage.
- Light baking including mixed mode (new in Unity 5.6) to create efficient games.
- Creating a reusable set of scripts that can be dropped into any Unity game for teleportation, item collection, carry-on items (weapons, tools, etc), information callouts to show info in VR.
- For the assets we used the free program Magica Voxel, which we’ll cover briefly as well.
First Person Shooter
A popular request from people who’ve pre-ordered the course has been a VR first person shooter (FPS) game, and this week we dove into that topic and built a cool game for the course. The game uses free teleportation, which means players can move around freely around the level (as opposed to the “fixed teleportation” approach we took in previous games). This is quite a popular teleportation method and it can be easily ported into any of the games we’ve already built. The VR FPS demo includes the following features:
- Free teleportation, with an optional glowing “arc”.
- Collecting ammo, for which we created a reusable “collectible” component that can be dragged and dropped into any game.
- Visual display of the ammo left on the gun’s side by using a canvas element. In VR we can’t easily add HUD, so game information needs to be somehow inserted into the game world, just like in real life!
- Simple enemy logic: if you are close to them, they’ll move towards you.
- Particle effect to represent enemy blood.
Note: this FPS uses a completely different code base from that of our new Unity (non-VR) FPS course. Although some similarities exist, we are taking a very different approach here. Normal 3D FPS are VERY different to VR first-person games.
This week we made an underwater VR experience, where you explore the dangerous depths of a shark-infested ocean. This game includes many new elements and will account for a very interesting module. Among other things, we used:
- Fog and lightning options to make this underwater atmosphere.
- Unity’s terrain generation tool to create the sea bottom.
- A VR controller where the player can move to any direction they look at (2 approaches were tested and both will be included in the course)
- Creating fish as the player gets close to certain regions, so that we don’t fill the level with hundreds of fish. When the player moves away from a location, the fish will disappear from memory.
- Fish react to the player’s presence and run away.
- Sharks that attack the player (game over if they catch you. pro tip: don’t get close).
- Underwater sound.