Course in the making. Estimated completion: June 2017. Early Access is given to all pre-orders. New lessons are being added each week.
Funded through Kickstarter by +300 people
The Complete Virtual Reality Game Development Course is the world’s most comprehensive online course on virtual reality game development with Unity 3D.
No prior knowledge is required. Students will learn and master the foundations of C#, Unity and VR by building a portfolio of 15 immersive games and experiences.
Start a rewarding career in VR. Whether you want to make games for fun, run a startup, or become a professional Unity developer (+160k a year on senior roles), this course contains everything you need to reach your goals. Some of the topics included:
- Locomotion techniques
- Gaze-based interaction
- Teleportation: fixed, free roaming
- 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 including terrain generation
- Performance considerations
- Industry best practices on how to organize your code and assets
The following platforms will be covered in the course:
- Oculus Rift
- HTC Vive (SteamVR)
- Samsung Gear
- Google Cardboard
- Google Daydream will be added later in the year
Course Development Diary
21 April 2017
Early Accessed has commenced! 11 lessons are available to watch.
11 April 2017
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.
5 April 2017
Covering 360 photos has been a hugely popular requirement so we decided to build a VR experience that will satisfy most use cases. We loaded two different 360 photos and put together a cool demo with some gaze interaction and UI, where you can “travel” from one image to the next. From this demo, it will be very easy for students to build any kind of 360 photo walk-through (for instance, a VR museum, exhibitions or “point and click” games).
The first image was taken with the Samsung Camera app and it’s a full 360-degree image. The second image was taken with the Cardboard Camera app and it doesn’t cover all 360-degrees. This will allow students to face the most common scenarios they might encounter, as many cameras advertised as “360” (even from well-known brands!) don’t cover the entire spherical projection.
Objects in this demo can show text or images to the user when looked at them, or when “clicked”. Also, we created a reusable button component that uses the Unity canvas (used to make UI / 2D games) and works with VR gaze interaction.
30 March 2017
This week 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.
9 March 2017
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.
2 March 2017
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.
23 February 2017
This week we created a fitness game in VR: an infinite runner where you have to jump in real life in order to jump inside the game. Developing this game has been nothing but fun and some people in the office were close to getting hurt.
This game introduces many interesting concepts: procedural generation of game objects, object pooling to preserve memory, and well of course, how to introduce real-world physics into your VR world. We also cover how to make the far-away background (in this case, mountains) to follow you around to keep the illusion of distance.
16 February 2017
This week we created a puzzle game in VR, where the player has to place all the tiles in their right position. When the puzzle is completed, an event is fired so that other game behaviors can be easily triggered (for instance, a new pyramid could come up from the ground, or a door could open up). The puzzle can be modified so that it works with other puzzle pieces, and have a different number of rows and columns.
The individual puzzle pieces use a component we made named “draggable” which is implemented in a way that can be easily re-used in other games. This component allows us to drag and drop objects in VR. We will be using it again later in the course.
Also, this week we improved on our teleportation targets, so that they can now have an animation (similar to the VR game “Land’s End”), and fire custom events when they are reached.
8 February 2017
Worked further in the Space Invader VR game. Made lots of tweaks and added a wall with a graffiti on it that indicates the state of the game. This wall is really the UI – it shows instructions, number of enemies killed and game over text. To start a new game, simply shoot the wall! In VR, UI can be incorporated into a game as real-world elements and it feels quite natural.
7 February 2017
Started working on Space Invaders VR, one of the games that will be included in the course. This project is an attempt to bring this classic to VR. So far, I’ve completed the basic functionality and it’s already quite fun to play. There are more things I want to add such as small aliens that come from the spaceships and attack the player. Also, need to add kill count, game over and wining conditions. Will also add some more Blender models and maybe a Skybox. to make the scene look prettier
This project doesn’t include that many new elements that are not already part of previous experiences, so it will serve more as a consolidation project. This means, we can go a bit further when it comes to polishing it.
31 January 2017
Completed the implementation of basic teleportation targets that shine when the player looks at them, and allow to set a maximum distance for them to become visible. When “clicking” on them, the player is taken to their location.
These targets are created as prefabs that can be easily dropped into any Unity project, so we’ll be reusing them and extending them in the follow-up modules. More features that I plan to add to these elements are a more smooth movement for the player (currently the player literally teleports), and the ability to hook certain events to a specific teleport station (for example, when you reach a certain point, something happens in the game – door openings, lifts, etc)
Created a low-poly giant tree world in Blender to test-drive the teleportation targets. The floor is made semi-transparent. I also used light baking to gain efficiency, which will be covered in the course.
19 January 2017
This week we worked on the creation of two VR experiences. The first one was a very simple flying experience that takes place in a beautiful low-poly world:
This will be the first VR project that students will work on, and the main goal will be to build something simple they can run on their device. Also, students will learn to capture input from their headset (Gear VR, Cardboard, Oculus or HTC Vive).
The flying experience is actually the second project within the course. The first project is a 3D multi-level platformer which we’ll use to teach the basics of Unity and C#. Later in the course, I plan to make this game work on VR. That game is already ready since a couple of weeks ago (although not yet skinned – final look will be like Minecraft):
The second game that we worked on this week is a mosquito-killing VR game. In this game, you’ll be attacked by giant mosquitos which trust me, look really scary on VR! In this module we’ll introduce using a reticle to interact with objects in VR, as well as Unity particle effects and skyboxes.
The next project I’ll be working on will be a game similar to Land’s End, where I’ll illustrate how to use teleportation to fixed targets and collect items in VR.