Unreal VR Dev: Make VR Experiences with Unreal Engine in C++
4.4 (493 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
6,873 students enrolled

Unreal VR Dev: Make VR Experiences with Unreal Engine in C++

Build Stunning Video Games in Virtual Reality. Tutorials Cover Design for Oculus Rift & Steam VR w/C++11.
4.4 (493 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
6,873 students enrolled
Last updated 4/2020
English [Auto]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 17 hours on-demand video
  • 3 articles
  • 1 downloadable resource
  • 1 Practice Test
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Understand and explain the unique challenges presented by VR hardware such as motion sickness.
  • Recreate the most common mechanisms of VR games such as teleportation, spatial UI and object interaction.
  • Compare solutions to VR challenges and assess which perform best in a given context.
  • Choose the most appropriate mechanisms for their own games and projects.
Course content
Expand all 82 lectures 17:06:53
+ Architecture Explorer
29 lectures 06:52:13
  • Why you should take the course.
  • We overview the journey.
  • What are the prerequisites?

(Unique Video Reference: 0_AE_VR2)

Preview 01:45
  • How is the course structured?
  • How should I take the course?

(Unique Video Reference: 1_AE_VR2)

Preview 12:01
Take The Self Assessement Quiz
  • What about mobile VR?
  • Supported hardware: Oculus Rift and HTC Vive.
  • Setting up our base project.
  • How head tracking works in Unreal.

(Unique Video Reference: 2_AE_VR2)

Getting Into VR
  • Overview of the syllabus for this section.
  • A sneak peak at the project we will make.
  • What you will get from this section.

(Unique Video Reference: 3_AE_VR2)

Movement Section Overview
  • Why we will use a character.
  • Finding the look direction.
  • Setup the characters movement.
  • The draw backs of controller movement.

(Unique Video Reference: 4_AE_VR2)

Basic Controller Movement
  • Importing a beautiful environment.
  • Why we shouldn't version these files.
  • Setup the GameMode.
  • Why do collisions behave strangely?

(Unique Video Reference: 5_AE_VR2)

Importing An ArchViz Environment
Mid-section Quiz
7 questions
  • How can we avoid the collision issue?
  • Adding a VR root component.
  • Aligning the camera to the capsule.

(Unique Video Reference: 6_AE_VR2)

Playspace Movement and Colliders
  • Why do we feel VR sickness?
  • The sensory systems involved.
  • How do we fool our senses?
  • What are the limits of existing techniques.

(Unique Video Reference: 7_AE_VR2)

Preview 15:34
  • How does teleporting work?
  • Creating a destination marker.
  • Revision of Line Tracing in C++.
  • Positioning the destination with gaze.

(Unique Video Reference: 8_AE_VR2)

Line Tracing A Teleport Destination
  • Fixing the cylinder bug.
  • Importing a teleport material.
  • Showing/hiding the destination.

(Unique Video Reference: 9_AE_VR2)

Importing And Using Materials
  • Setting up a teleport action.
  • Teleporting to the right location.
  • Fading the camera.
  • Setting a timer to fade up.

(Unique Video Reference: 10_AE_VR2)

Fades, Timers and Teleporting
Mid-section Quiz
7 questions
  • In this video (objectives)…

    1. How can we constrain the teleport destination?

    2. Setting up a NavMesh.

    3. Projecting to the NavMesh.

    4. A brief refactor.

Projecting Onto The NavMesh
  • What is a material?
  • Creating a post processing material.
  • Overview of the nodes we need.
  • Creating a tunnel vision effect.

(Unique Video Reference: 12_AE_VR2)

PostProcessing Materials
  • What are material parameters?
  • Setup a post processing component.
  • Dynamic vs static material instances.
  • Creating a material instance.

(Unique Video Reference: 13_AE_VR2)

Dynamic Material Instances
  • What is a curve?
  • Accessing a curve from C++.
  • Setting the radius from speed.

(Unique Video Reference: 14_AE_VR2)

Adjusting Radius With A Curve
  • Where is the centre of movement?
  • Updating the blinker centre.
  • Projecting to the screen.
  • Getting the screen size.
  • Calculating the centre.

(Unique Video Reference: 15_AE_VR2)

Creating Tunnel Vision
Mid-section Quiz
6 questions
  • Setup hand controller components.
  • Where are the hand controller meshes?
  • Teleporting with hand controllers.

(Unique Video Reference: 16_AE_VR2)

Preview 16:16
  • Why use a parabolic path?
  • How do we trace a parabolic path?
  • Predicting a projectile in Unreal.

(Unique Video Reference: 17_AE_VR2)

Parabolic Teleport Pointer
  • Adding to a spline component.
  • How the component works.
  • Previewing the spline in debug mode.
  • Setting the spline control points in C++.

(Unique Video Reference: 18_AE_VR2)

Using A USplineComponent
  • Creating a new object.
  • Dynamically attaching components.
  • Why is RegisterComponent() important?
  • Setup meshes and materials.
  • Storing an object pool.

(Unique Video Reference: 19_AE_VR2)

Dynamically Constructing UObjects
  • What is a USplineMeshComponent?
  • Replacing the UStaticMeshComponent
  • Getting the spline tangents.
  • Tracing the spline.
  • Hiding extra meshes.

(Unique Video Reference: 20_AE_VR2)

Deforming Meshes With Splines
Mid-section Quiz
6 questions
Notes for 4.22
  • Why should hand controllers be actors?
  • Spawn actors on BeginPlay.
  • Move UMotionControllerComponent into Actors.
  • Fix other build errors.
  • Create a Blueprint child actor.

(Unique Video Reference: 21_AE_VR2)

Extracting A Hand Controller Actor
  • Creating hand hold actors.
  • Handling overlap events.
  • Querying overlapping actors.
  • Printing on the rising edge.

(Unique Video Reference: 22_AE_VR2)

Querying Overlapping Actors
  • Haptic Feedback Effect curves.
  • Playing the effect on hand controllers.

(Unique Video Reference: 23_AE_VR2)

Haptic Feedback Effects
  • Binding input to the controllers.
  • Setting starting climb state.
  • Updating the parent location.

(Unique Video Reference: 24_AE_VR2)

Climbing Motion
  • Creating a climbing wall.
  • Setting movement modes.
  • Pairing the controllers.
  • Stealing control.

(Unique Video Reference: 25_AE_VR2)

Climbing Motion Part 2
End Of Section Quiz
5 questions
  • We review what we have learnt.
  • How to practice your new knowledge.

(Unique Video Reference: 26_AE_VR2)

End Of Section Review
+ Light Painter
52 lectures 10:14:04

In this video (objectives)…

  1. What you will get from this section.
  2. A sneak peak at the section project.
  3. Setting up the project.

After watching (learning outcomes)…

Know what we are aiming for this section.

(Unique Video Reference: 1_LP_VR2)

User Interface Section Introduction

In this video (objectives)…

  1. Overview of the desired setup.
  2. Creating the C++.
  3. Hooking up the Blueprint.

After watching (learning outcomes)…

Have an alternative way of setting up VR Pawns.

(Unique Video Reference: 2_LP_VR2)

Creating A VR Pawn Setup

In this video (objectives)…

  1. Overview of the painting architecture.
  2. Creating a Stroke actor.
  3. Setup the input handling.
  4. Spawning a stroke.

After watching (learning outcomes)…

Forward hand controller actions to their actors.

(Unique Video Reference: 3_LP_VR2)

Binding Actions To Motion Controllers

In this video (objectives)…

  1. Writing and using the interface.
  2. Outlining the algorithm.
  3. Creating a spline mesh.
  4. Updating the end-points.

After watching (learning outcomes)…

Use spline meshes for 3D drawing.

(Unique Video Reference: 4_LP_VR2)

3D Painting With Spline Meshes

In this video (objectives)…

  1. Why frame rate matters in VR.
  2. Viewing the frame rate.
  3. What changes the frame rate?

After watching (learning outcomes)…

Why frame rate is important and how to measure it.

(Unique Video Reference: 5_LP_VR2)

Frame Rate In VR

In this video (objectives)…

  1. What are bottlenecks?
  2. Tools to identify bottlenecks.
  3. Game, render or GPU bound?

After watching (learning outcomes)…

Identify CPU or GPU bottlenecks in own games.

(Unique Video Reference: 6_LP_VR2)

Performance Bottlenecks
Mid-section Quiz
5 questions

In this video (objectives)…

  1. Likely causes of bottlenecks.
  2. Identifying vertex vs pixel bound.
  3. Improving the empty scene frame time.

After watching (learning outcomes)…

Diagnose common GPU issues.

(Unique Video Reference: 7_LP_VR2)

Performance Optimisation

In this video (objectives)…

  1. Log the number of DrawCalls.
  2. Recapping the Instanced Static Mesh.
  3. Replacing the meshes in the stroke.

After watching (learning outcomes)…

Replace multiple meshes with an Instanced Static Mesh.

(Unique Video Reference: 8_LP_VR2)

Reducing DrawCalls With Instancing

In this video (objectives)…

  1. The rotation and scaling maths.
  2. The code outline.
  3. Rotating and scaling APIs.

After watching (learning outcomes)…

How to rotate and scale to fit between two points.

(Unique Video Reference: 9_LP_VR2)

Rotating & Scaling Stroke Meshes

In this video (objectives)…

  1. Importing new meshes.
  2. Creating a material.
  3. Enabling the material for instanced static meshes.
  4. Hiding the stroke joints.

After watching (learning outcomes)…

How to add materials to instanced static meshes.

(Unique Video Reference: 10_LP_VR2)

Instanced Mesh Materials

In this video (objectives)…

  1. Creating a USaveGame subclass.
  2. Saving and Creating APIs.
  3. Our SaveGame header file.
  4. Implementing Save and Create.

After watching (learning outcomes)…

Be able to create and save a SaveGame.

(Unique Video Reference: 11_LP_VR2)

Saving Game State
Mid-section Quiz
5 questions

In this video (objectives)…

  1. Setup saving from user input.
  2. Loading API.
  3. Using the loading API.
  4. Saving and loading a UPROPERTY.

After watching (learning outcomes)…

Load data from a save game file.

(Unique Video Reference: 12_LP_VR2)

Loading A SaveGame

In this video (objectives)…

  1. What is the state of our level?
  2. Defining the UPROPERTY.
  3. The SaveGame serialising API.
  4. Capture and spawn the strokes.

After watching (learning outcomes)…

How to serialise simple game state.

(Unique Video Reference: 13_LP_VR2)

Serialising The Game State

In this video (objectives)…

  1. Create Stroke state struct.
  2. The Stroke serialisation API.
  3. Implementing serialisation.

After watching (learning outcomes)…

How to use structs to serialise complex state.

(Unique Video Reference: 14_LP_VR2)

Serialising Actors To Structs

In this video (objectives)…

  1. Rename the HandController class.
  2. Setup an ActiveClassRedirect.
  3. Creating a base class.
  4. Extracting functionality.

After watching (learning outcomes)…

How to rename a C++ base class and extract functionality into a super class.

(Unique Video Reference: 15_LP_VR2)

Renaming C++ Base Classes

In this video (objectives)…

  1. Introduction to the Daydream sticker sheet.
  2. Importing Sketch files into Figma.
  3. The basic tools in Figma.
  4. Understanding the DMM.
  5. Creating a simple layout.

After watching (learning outcomes)…

How to use Figma to create basic layouts.

(Unique Video Reference: 16_LP_VR2)

Introduction To Vector Design
Mid-section Quiz
5 questions

In this video (objectives)…

  1. Critique the Daydream designs.
  2. Critique you own design.

After watching (learning outcomes)…

How to critique user interface designs.

(Unique Video Reference: 17_LP_VR2)

Understanding Good VR Design

In this video (objectives)…

  1. Creating a design frame.
  2. Create/capture requirements.
  3. Assemble a design.

After watching (learning outcomes)…

How to build a UI design in Figma.

(Unique Video Reference: 18_LP_VR2)

Designing User Interface For VR

In this video (objectives)…

  1. Create a placeholder widget.
  2. Displaying the widget in the scene.
  3. Placing the widget with spline guides.
  4. Scaling the widget.
  5. Placing the buttons.

After watching (learning outcomes)…

How to accurately place UI from a design.

(Unique Video Reference: 19_LP_VR2)

Ergonomic 3D UI Layout In Unreal

In this video (objectives)…

  1. Introducing the Widget Interaction Component.
  2. Creating a button to test with.
  3. Setting up the Blueprints.
  4. Adding a Widget Interaction Component.
  5. Clicking the button.

After watching (learning outcomes)…

How UI selection works in VR with Unreal.

(Unique Video Reference: 20_LP_VR2)

UI Widget Interaction In 3D

In this video (objectives)…

  1. Setting up the grid layout.
  2. Exporting the card button graphics.
  3. Setting up the card button.
  4. Creating all the states.

After watching (learning outcomes)…

Converting button designs to working UMG buttons.

(Unique Video Reference: 21_LP_VR2)

Converting A Design To UMG - Part 1
Mid-section Quiz
6 questions

In this video (objectives)…

  1. Creating the action bar widget.
  2. Laying out the buttons.
  3. Creating the button variations.

After watching (learning outcomes)…

How buttons scale with their contents.

(Unique Video Reference: 22_LP_VR2)

Converting A Design To UMG - Part 2

In this video (objectives)…

  1. Layout the images.
  2. Exporting the graphics.

After watching (learning outcomes)…

How to use a horizontal layout.

(Unique Video Reference: 23_LP_VR2)

Converting A Design To UMG - Part 3

In this video (objectives)…

  1. Add base class and reparent PaintingGrid.
  2. Bind the Uniform Grid Panel.
  3. Create blueprint interface to AddPainting and call it.

After watching (learning outcomes)…

How to bind a widget to C++.

(Unique Video Reference: 24_LP_VR2)


In this video (objectives)…

  1. Introduce the APIs. (CreateWidget, GetChildAt, AddChild)
  2. Creating the Card widget.
  3. Spawn a widget.
  4. Add to the size box.

After watching (learning outcomes)…

How to spawn widgets and add then to PanelWidgets.

(Unique Video Reference: 25_LP_VR2)

Spawning Widgets In C++

In this video (objectives)…

  1. Add PaintingPicker C++ parent.
  2. Create the essential components in C++.
  3. Copy the component values.
  4. Convert the blueprint to C++.

After watching (learning outcomes)…

Practice at reparenting Blueprints.

(Unique Video Reference: 26_LP_VR2)

Converting PaintingPicker to C++

In this video (objectives)…

  1. Add a SlotName variable.
  2. Generate the variable on creation.
  3. Create a getter for SlotName.
  4. Update loading to take the SlotName.
  5. Create a new PaintingSaveGame on every load.

After watching (learning outcomes)…

Using UUIDs to generate unique string names.

(Unique Video Reference: 27_LP_VR2)

Naming Each Slot Uniquely
Mid-section Quiz
5 questions

In this video (objectives)…

  1. Creating the PainterSaveGameIndex.
  2. The Index API.
  3. Using the API.
  4. Implementing Load() and Save().
  5. Implementing AddPainting() and GetPaintings().

After watching (learning outcomes)…

How to use and index to iterate over all save games.

(Unique Video Reference: 28_LP_VR2)

Iterating Over All SaveGames

In this video (objectives)…

  1. Change the AddPainting interface.
  2. Add at index.
  3. Add as many paintings as there are.
  4. Correct the order of slots.

After watching (learning outcomes)…

How to populate the UI lists.

(Unique Video Reference: 29_LP_VR2)

Populating The Game List UI

In this video (objectives)…

  1. Add a text box to the card.
  2. Improve spacing of the grid.
  3. Creating a UPaintingGridCard parent class.
  4. Binding the TextBlock.

After watching (learning outcomes)…

How to make and bind UMG TextBlocks.

(Unique Video Reference: 30_LP_VR2)

Binding Text Widgets To C++

In this video (objectives)…

  1. Creating the SetPaintingName interface.
  2. Calling the SetPaintingName interface.
  3. The UTextBlock API and FText.
  4. Implementing SetPaintingName.

After watching (learning outcomes)…

How to set TextBlock text in C++.

(Unique Video Reference: 31_LP_VR2)

Setting TextBlock Content From C++

In this video (objectives)…

  1. How to use the OpenLevel API.
  2. Binding the button OnClicked.
  3. Opening the "Canvas" level.
  4. How to get around the hanging issue.

After watching (learning outcomes)…

How to open levels smoothly in VR.

(Unique Video Reference: 32_LP_VR2)

Button Actions And Splash Screens

In this video (objectives)…

  1. Creating a GameMode.
  2. Handling the options with InitGame.
  3. Parsing out our option.

After watching (learning outcomes)…

How to parse level loading options.

(Unique Video Reference: 33_LP_VR2)

Parsing Level Options In GameMode
Mid-section Quiz
5 questions

In this video (objectives)…

  1. Why we can't load the game in InitGame.
  2. Loading the game at start.
  3. Why we should hide the splash screen.

After watching (learning outcomes)…

When to hide a splash screen.

(Unique Video Reference: 34_LP_VR2)

Loading Save Games In GameMode

In this video (objectives)…

  1. Creating the GameMode SavePainting API.
  2. Calling the API.
  3. Making it save.
  4. Quitting to the Menu.

After watching (learning outcomes)…

When it's best to hide information and delegate.

(Unique Video Reference: 35_LP_VR2)

Handling Saving In GameMode

In this video (objectives)…

  1. Removing the old loading and creation code.
  2. When to bind buttons.
  3. Create an ActionBar C++ parent.
  4. Binding the "Add" button.
  5. Binding the "Delete" button.

After watching (learning outcomes)…

When to use Initialize in UserWidgets.

(Unique Video Reference: 36_LP_VR2)

Initialize - BeginPlay For Widgets

In this video (objectives)…

  1. Passing a reference down to ActionBar.
  2. Calling back up to PaintingPicker.
  3. Create the painting and reload.

After watching (learning outcomes)…

How to call up to a Widget's parent.

(Unique Video Reference: 37_LP_VR2)

Hooking Up The Add Functionality

In this video(objectives)…

  1. Create the API and the usage.
  2. Overview of the documentation you need.
  3. Iterating over the children.
  4. Clearing the children of the size box.

After watching(learning outcomes)…

How to iterate and clear children of a UPanelWidget.

(Unique Video Reference: 38_LP_VR2)

Clearing Children of UPanelWidget
Mid-section Quiz
5 questions

In this video(objectives)…

  1. Create the PaletteMenuHandController.
  2. Add and spawn a left hand controller.
  3. Connecting in blueprint.
  4. Setting the MotionController hand.

After watching(learning outcomes)…

Revision of the HandController architecture.

(Unique Video Reference: 39_LP_VR2)

Connecting a LeftHandController

In this video(objectives)…

  1. Add a widget component to the controller.
  2. Create and setup a widget.

After watching(learning outcomes)…

Revision of the widget components.

(Unique Video Reference: 40_LP_VR2)

Adding Menus To Hand Controllers

In this video(objectives)…

  1. Create new C++ derived class.
  2. Adding a custom widget to Blueprints.
  3. Overview of IsOverInteractableWidget API.
  4. Implementing the click behaviour.

After watching(learning outcomes)…

How to query the interface from a UWidgetInteractionComponent.

(Unique Video Reference: 41_LP_VR2)

Overriding a Scene Component

In this video(objectives)…

  1. Create UFUNCTION on GameMode.
  2. Calling the UFUNCTION.
  3. Moving the implementation.

After watching(learning outcomes)…

How to call GameMode functions from Blueprint.

(Unique Video Reference: 42_LP_VR2)

Refactoring SaveAndQuit

In this video(objectives)…

  1. Create the C++ parent.
  2. Create the widget Blueprint and reparent.
  3. Setup with the image widget.
  4. Replace in the grid widget.

After watching(learning outcomes)…

Overview of the pagination system.

(Unique Video Reference: 43_LP_VR2)

Create a Pagination Dot Widget
Mid-section Quiz
5 questions

In this video(objectives)…

  1. Creating the API.
  2. Temporarily calling the API.
  3. Implementing the spawning.

After watching(learning outcomes)…

Revision of spawning widgets.

(Unique Video Reference: 44_LP_VR2)

Spawning a Pagination Dot

In this video(objectives)…

  1. What is a UPanelSlot.
  2. Getting the right slot type.
  3. Changing the padding.

After watching(learning outcomes)…

What a UPanelSlot does and how to use it.

(Unique Video Reference: 45_LP_VR2)

Editing UPanelSlot in C++

In this video(objectives)…

  1. Creating the SetActive API.
  2. Binding the image.
  3. Blend modes: transparent vs masked.
  4. Implementing SetActive.
  5. Reproducing the dots in code.

After watching(learning outcomes)…

The differences between blend modes and when to use them.

(Unique Video Reference: 46_LP_VR2)

Transparent Widgets In The World

In this video(objectives)…

  1. How to calculate number of pages.
  2. Implementing GetNumberOfSlots().
  3. Calculating the number of slots.
  4. Implementing Number of pages.

After watching(learning outcomes)…

How to calculate the number of pages to paginate a given number of items.

(Unique Video Reference: 47_LP_VR2)

Calculating Number Of Pages
Mid-section Quiz
5 questions

In this video(objectives)…

  1. Refactoring refresh.
  2. Adding a current page variable.
  3. Add one dot per page.
  4. Clearing the pagination dots.
  5. Selecting the current page.

(Unique Video Reference: 48_LP_VR2)

Refreshing The Pagination State

In this video(objectives)…

  1. Binding an axis for pagination.
  2. Overview of a latching mechanism.
  3. Log latched offsets.

After watching(learning outcomes)…

How to turn an analogue input into an action.

(Unique Video Reference: 49_LP_VR2)

Latching an Analogue Input

In this video(objectives)…

  1. Creating the pagination API.
  2. Using the API with TActorIterator.
  3. Implementing an absorbing boundary.

After watching(learning outcomes)…

How to implement an absorbing boundary.

(Unique Video Reference: 50_LP_VR2)

Moving Between Pages

In this video(objectives)…

  1. Calculating the StartOffset.
  2. For loop over the slots.
  3. Checking the last page.

After watching(learning outcomes)…

How to display paginated results.

(Unique Video Reference: 51_LP_VR2)

Updating The Pages

In this video(objectives)…

  1. How to read the prototype code
  2. Overview of the features
  3. MEGA Challenge!

After watching(learning outcomes)…

To have the confidence to continue your VR journey.

(Unique Video Reference: 52_LP_VR2)

How To Become A VR Master
End of Section Quiz
5 questions
+ Self Assessment and Next Steps
1 lecture 00:35

Not sure if you are ready for the course yet? Take this test to find out.

Don't worry if some areas are weak. The next lecture (called "BONUS LECTURE") will include links to helpful course so that you can brush up on the weaker areas.

If you pass, you're good to go!

Self Assessment
23 questions
  • An Oculus Rift or Steam VR compatible headset.
  • A PC or Mac meeting the minimum specifications of the headset.
  • Comfortable with using UE4 editor for basic scene editing.
  • Able to use the UE4 Blueprint editor to make basic behaviours.
  • Able to use C++ to create actors with basic behaviours.

Learn to build beautiful Virtual Reality experiences. This course, created in collaboration with Epic Games, teaches you everything you need to know to build your very own VR apps and games in the world class Unreal Engine. 

Unreal is a massively powerful game engine that puts performance and graphics first. It includes industry-grade VR tools that power some of the best high-end experiences on the market such as Robo Recall. That's why Unreal is the perfect tool to create your own VR experiences.

Virtual Reality is being used to develop apps and experiences for a broad range of industries beyond games. You can do Architectural Visualisation by walking around a building before it is built. You can sketch and sculpt car designs directly in 3D without a modeller. And of, course, you can play games in a completely different way.

But Unreal being as powerful as it is and VR, so new, it can be hard to know where to start. This course makes understanding Unreal VR super easy. Not only do we show you how to use the engine's VR features, but we teach you the fundamental concepts of VR development. By teaching you the fundamentals, we will put you ahead in the rapidly developing VR space.

Looking for other Unreal content such as multiplayer, or a beginner course? Check out our other Unreal Engine tutorials, just follow the green leaf logo.

This course is aimed at beginner to intermediate Unreal users with some knowledge of C++. Not too confident? Don't worry, the course will take you through everything step by step and give you plenty of practice to build up that confidence with coding.

Note: access to this course comes with an optional, free community site where you can share games and 3D models, as well as connect with other students.

Become a pioneer of VR and create the future!

Who this course is for:
  • Beginner to intermediate UE4 developers looking for a fun way to enhance their skills.
  • Advanced UE4 Developers wanting to understand the unique challenges of VR.
  • Oculus Rift or HTC Vive owners wanting to create their own experiences.