Programming Development Guides
When learning XR (virtual and augmented reality) development, you’ll need to rely on programming guides and tutorials and most important of all — start building your own projects and augmented/ar or virtual/vr experiences. 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 recommendations from our instructors, online resources, and more, including what you need to know before you start programming AR and VR applications and immersive experiences.
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 in the real-world, 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 for beginners.
Unity (previously known as Unity3d) 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 for AEC, cinema, healthcare, military simulations, and much more. Did you know that over 50% of mobile games and 60% of VR/AR apps are made with Unity. The use goes beyond just games!
The engine supports a range of software development kits (SDK), application programming interfaces (API) and other integrations and plugins 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 vr games or applications.
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 may no longer a major differentiating factor between these engines (especially after huge acquisitions by Unity Technologies in 2021 and 2022).
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 real-time 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. Arguably you can get away with visual scripting in both engines. By using blueprints in Unreal Engine you could cobble together good vr content however, the code is best optimized if it's written from scratch.
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. If you're just starting out - we definitely recommend buying an Oculus Quest 2 (now known as Meta Quest 2) because of amazing performance, vr hand tracking feature and good price. The next suggestion would be the second version of HP Reverb G2!
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. These development tools will go in handy depending for which platform you're planning to build for; from as low tech as possible Google Cardboard to high-tech HoloLens 2 mixed reality headset.
To decide on which device you want to build for, consider what you want your app to do and how will users interact in your virtual environment. Will the app need to be accessible? Widely available? Highly intractable? Are you building for mobile devices (if so, which ones) or will the it be used stationary? Do you need a large virtual space or is a small living room enough? Will you be using multiple vr platforms (Oculus Store, Playstation store, different VR headsets) or just one? Will your app include a multiplayer functionality where your users interact with others? All these questions needs to be addressed before you dive deep into the app development head on!
We have an article that explains how to set up each VR/AR device with Unity. 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.
Attend a live online introductory workshop to XR
Building your Community
- Learn VR Dev Reddit
- Jenn Duong’s VR/AR Community Resources
- VR and AR Association and its podcast Everything VR and AR
- 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
- AR and VR Live and On-Demand Workshops
- Unity’s Getting Started guide
- A list of useful tutorials for VR development
- A Primer on Designing 3d sound and spatial audio
Most popular 3D Modelling Software for producing AR and VR Content:
- Autodesk 3Ds Max
- Blender — most popular open-source 3d modelling sofware!
- Autodesk Maya
- Maxon's Cinema 4D
Working with Devices
- An overview of building on Vuforia and other AR SDKs
- Vuforia UX best practices
- Vuforia tips and troubleshooting
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.
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.
Download the XR Development with Unity Syllabus