Learn VR Development: Tips, tricks, and guides to develop VR and AR applications
Last Updated: February 06 2021
When learning XR (virtual and augmented reality) development, you’ll need to rely on programming guides and tutorials. Whether you’re learning to code C#, develop in Unity, or build VR/AR apps, there are core skills and pieces of advice you should know. To help you along, we’ve compiled advice from our instructors, online resources, and more, including what you need to know before you start programming VR and AR applications.
Learning on your own is difficult, but doable. When impostor syndrome starts to creep in, just remember that 81% of professional developers started programming as a hobby. They managed to turn that passion into a career, and so can you. Here’s how.
The Basics: Choosing a 3D Game Engine
Okay, so you’re learning to develop VR/AR programs on your own. First you need to decide which game engine to get familiar with. There’s two leading game engine options: Unreal and Unity. Both are capable, robust, and have pros and cons. Here’s why we prefer Unity.
Unity has been on the market since 2005, and it has grown to become one of the most stable and powerful game engines available. Developers create 3D and 2D video games, applications, simulations, and more. Over 50% of mobile games and 60% of VR/AR apps are made with Unity.
The engine supports a range of software development kits (SDKs) and integrations for all the major VR and AR devices. Unity’s asset store provides downloadable 3D models, SDks and more ranging from free to expensive. You’re able to work with basic assets, build upon more complex assets, and develop your own.
Unity has a lower point of entry for new developers. With a large developer community, Unity and its supporters are creating a space where anyone is welcome to come and learn.
While Unreal does excel in high-resolution graphics, Unity is catching up, and this is no longer a major differentiating factor between these engines.
Much of Unity’s capabilities come from using C# for programming, a language that works best when building desktop, mobile and VR/AR apps. It’s widely used in game development and VR, with over 90% of VR/AR development companies using C#.
Unreal engine uses C++, which has a less consistent syntax than C#. C# is statically-typed, meaning the code is checked by Unity before being ‘turned on.’ Mistakes are identified and corrected more easily. Besides, C# is easier to work with: Stack Overflow found 60% of developers love working with C# versus 46% loving C++ (53% of developers hate using C++).
To learn in depth about Unity and Unreal programming languages check out our C# vs C++ comparison guide. TL;DR version: Both popular game engines are great but Unity is more beginner-friendly and thus recommended if you're starting from scratch.
The Basics: Choosing a Device to build for
Each VR/AR device has its own SDK: HTC Vive uses SteamVR; Oculus products use Oculus Integration; etc. So it’s important that you research which hardware you want to build for before you get started.
But because developers are a clever lot, they created an SDK that works with a few of the more popular VR headsets: OpenVR. OpenVR can build for HTC Vive, Oculus products, and Windows Mixed Reality headsets. The AR equivalent would be Vuforia as it works on both iOS and Android devices.
To decide on which device you want to build for, consider what you want your app to do. Will the app need to be accessible? Widely available? Highly interactable? Mobile or stationary? Have a large virtual space?
We have an article that explains how to set up each VR/AR device with Unity here. Once you know which device you want to build for, configure it for development and change Unity’s platform settings. You’re now ready to start (learning) programming for VR and AR development.
For some of the general tips, check out the 100 simple ar/vr tips.
Our Advice for Learning VR and AR Development
Circuit Stream instructor Nakisa has her desktop background set to these words: Don’t Panic! Besides being a Hitchhiker’s Guide to the Galaxy reference, she takes this advice to heart: “It’s important to keep a playful tinkering attitude when approaching development. Panicking limits your ability to do that.” Not only do we learn best when in a play state of mind, Nakisa (HoloLens 2 AR developer and Unity instructor) explains, but panicking will also limit your ability to think through the problem step-by-step and find solutions.
Like Nakisa said, approaching VR/AR development with a tinkering attitude will put you in the right headspace for trying out new methods in Unity. Another instructor, Raghav, recommends assigning yourself small, focused exercises so you get comfortable with the basics before diving into larger experiments.
“This allows you to take the overwhelming open-endedness of the task you’re about to do and funnel it into a focused creative activity,” Raghav explains. An experimenting, tinkering attitude doesn’t put pressure on yourself to be immediately successful.
Tackle one step at a time
This piece of advice applies to both limiting your project’s scope, and ensuring you take one step of your project at a time. When you start a project, focus yourself to one tool, idea, asset, or interaction at a time. “This not only keeps your projects small and manageable,” Raghav explains, “but it also gives you an opportunity to think like a designer, working with and around the constraints.”
Circuit Stream lead instructor Usman seconds this and recommends starting small by planning and writing out your idea, creating visuals, then prototyping at the most basic levels: “Create the simulated mechanic or interaction at a small prototype level, then apply it to the larger project.”
If you get stuck, take a break and come back later
When you feel stuck or have trouble understanding a concept, sometimes the best thing is to walk away and come back the next day. A fresh brain can better absorb the information you’re trying to understand. Just make sure you come back — don’t get discouraged and avoid the topic altogether! Only 5.5% of MOOC students finish their certificate programs, and burning out or getting stuck is a big hurdle in self-directed learning.
Have you heard of rubber duck debugging? Keep a rubber duck or similar toy at your desk, and try to talk out your problem to the duck in simple terms. Go step-by-step in the process that led you here, and question your duck if any steps were missed. In explaining the problem and background, you’ll often come across the solution.
Find your community
Learning on your own can feel very lonely, especially when you’re faced with a problem you can’t solve. Circuit Stream has a private XR Slack Community which is open to public — just ask and we will let you in. You will beet developers and designers who have already produced and finished VR apps and designed multiple virtual worlds.
Online forums like Reddit’s Learn Virtual Reality Development, organizations and VR/AR meet-ups in your city, and more provide a space where you can let off steam, solve problems, and share in each other’s successes. It’s great for networking and feeling like you’re not alone in this endeavour.
In addition to forums, Usman recommends Discord servers like Virtual Reality, VR Development, and Unity - N3K. On Facebook, we’ve found Women in VR to be very supportive for women of any experience level. And, the Virtual Reality Creative Community is great for workshopping ideas.
Build a portfolio, consciously
As you’re experimenting, tinkering, and building upon your project, Raghav urges you to take notes throughout the process and compare them with other learners of mixed reality spectrum and of course, your peers. Especially when working on a portfolio project — or a project that might become one — try to document your process in the moment using screenshots, writing down decisions you made and why, and how you handled roadblocks. Not only does this streamline the documentation process for your project, but you can your overall progress, share notes as a resource for others in your community, and trace your steps should you get lost down the development rabbit hole.
Ask for help
If you don’t know how to tackle a coding error, or not sure how to setup part of your application, don’t be afraid to ask for help. Search online forums and if the answer isn’t there, ask around; most developers are happy to help figure out the problem. There’s no stupid questions. We’re all learning.
Jenn Duong (@JennDefer on Twitter) has compiled a great list of VR/AR community resources. From meet-ups to blogs, podcasts and education programs, you’ll want to bookmark her doc and refer to it frequently.
Tutorials and programming guides are your friends
Even when you’re not faced with a roadblock, immersing yourself in online how-to videos, step-by-step programming guides, or experimenting with shared code is a great learning experience. Whether that’s troubleshooting, searching for development setup guides or just asking for advice on an online forum, there are a ton of resources available to help you in your journey. Seeing how other developers work and approach VR can provide a unique perspective on how you understand programming and work as a developer.
Building your Community
- Circuit Stream's XR Slack Community
- Learn VR Dev Reddit
- Jenn Duong’s VR/AR Community Resources
- VR and AR Association and its podcast Everything VR and AR
- 27 of the Best VR/AR Meetups in North America
- Women in VR Facebook Group
- Virtual, Augmented, and Mixed Reality Community
- Virtual Reality Creative Community
- HTC Vive Developers Facebook group
- SteamVR Facebook group
- HoloLens Developers Facebook group
- Magic Leap Developers Facebook group
- Oculus Virtual Reality Facebook group
Learning the Development Ropes
- VR design best practices
- Learn C# for Unity: A Beginner Guide to Unity XR Programming (7 Free C# Lessons)
- AR and VR Live and On-Demand Workshops
- Unity’s Getting Started guide
- Setting up interactable objects in Unity
- Quick guide to raycasting in Unity
- Using occlusion to hide objects and more in VR and AR
- Useful tools and code for Unity
- A list of useful tutorials for VR development
- A Primer on Designing 3d sound and spatial audio
- 13 VR/AR funding resources
Working with Devices
- Configuring HoloLens with Unity
- Deploying your AR app to HoloLens or an emulator for testing
- Building for HoloLens tutorial
- HoloLens Development Guides
- Development with HTC Vive 7-Step Tutorial
- Required code to setup functions with HTC Vive controllers
- Setting up the pick-up function on HTC Vive controllers
- Quick setup for throwing and shooting functions on HTC Vive controllers
- Configuring Magic Leap One with Unity
- How to deploy your AR app to Magic Leap One
- Building for Magic Leap One tutorial
- Configuring Oculus Rift with Unity
- Required code to pick up objects with any Oculus controller
- Building for Oculus Rift tutorial
- An overview of building on Vuforia and other AR SDKs
- Tracking custom images on Vuforia
- Vuforia UX best practices
- Vuforia tips and troubleshooting
- Circuit Stream's Introduction to AR and Vuforia workshop
It’s possible to build the app you want to build. To build it quickly and thoroughly, project-based learning, whether on your own or with an instructor, is the best method.
If learning on your own seems too daunting a task, there are online courses and guided tutorials taught by experts in the industry. We’ve also put together a list of the top ten cities where you can learn VR.
With Circuit Stream, we work with you to guide you through each step of development. You’ll have a mentor who will ensure you’re understanding every concept, and walk you through the development process every step of the way.
At the end of the 10-week course, you’ll have the confidence to take on projects on your own. Download our syllabus and see what Circuit Stream has to offer.