Development Platforms for XR
Tags: mixedreality, beginners
Published: 2020-09-18 17:06:57

Whether you prefer an engine or directly using APIs, there's a solution for you to discover and try when building AR, VR or MR apps! However, before we dive into platforms, let's talk languages.

## Which Programming Language(s) Should You Know?

When I started out with XR development, I only knew Python. Having an understanding of another programming language was relatively helpful given that I had to learn a new language. The languages used in XR development are C#, C++, or JavaScript. I personally chose the C# route since I prefer to use Unity for my development. If you're new to C#, I would suggest starting with the [Take Your First Steps with C#](https://docs.microsoft.com/learn/paths/csharp-first-steps/?WT.mc_id=mixedreality-devto-apspeigh) learning path on Microsoft Learn. If you're more of a visual learner, check out the [C# 101](https://channel9.msdn.com/Series/CSharp-101/?WT.mc_id=mixedreality-devto-apspeigh) video series available on Channel 9.

Codecademy has a [C++ course] (https://www.codecademy.com/learn/learn-c-plus-plus) available for beginners in which I'd recommend giving a try. However, JavaScript isn't a bad choice either! I opted for learning JavaScript on [Codecademy](https://www.codecademy.com/learn/introduction-to-javascript) as well.

Whether you choose C#, C++, or JavaScript may be a matter of comfort. What do I mean by comfort? Well, which language are you more comfortable with learning? I personally started with C# and then learned JavaScript. Although I still prefer C#, that may very well have been influenced by the fact that I prefer Unity scripting for development. So with that in mind, let's talk about Unity!

## What is Unity?

[Unity](https://unity.com/) is a real-time development platform that's great for creating 2D, 3D, AR & VR experiences. Like learning any new technology platform, the learning curve can be relatively steep if you've never used the platform for development. Fortunately, Unity provides a [Learn](https://learn.unity.com/) platform that's pretty helpful for getting familiar with the interface as well as [Unity Scripting](https://learn.unity.com/project/beginner-gameplay-scripting). You can also choose to focus on specific areas of Unity development if you're already familiar with the platform. My advice would be to start with learning how to create for 2D first and then transition to 3D. C# knowledge comes in handy here given that you'll use C# for Unity scripting.

Alas, Unity isn't the only engine available. There's also Unreal.

## What is Unreal?

[Unreal](https://www.unrealengine.com/en-US/) is real-time engine for 3D development. More often, I find that XR developers prefer one platform over the other. Unreal provides a variety of free [online learning courses](https://www.unrealengine.com/onlinelearning-courses) for getting started with the platform. Their written documentation in the [Unreal Editor Manual](https://docs.unrealengine.com/Engine/Editor/index.html) is also pretty extensive as well for getting started. C++ comes in handy here given that you'll use C++ for Unreal scripting.

Although I prefer to stick with Unity, I can honestly say that I've at least given Unreal try. However, I believe I'm biased because it took me a while to get used to Unity and now I couldn't imagine starting over. You may certainly have a different experience so definitely consider an intro course for both engines before settling on one.

But if working with a game engine and getting to know the UI isn't your cup of tea, there's always the web!

## What Options are Available for the web?

Love options? Great - because there are plenty! For starters, if JavaScript is your preferred programming language, then web may be just right for you. There are a few JavaScript libraries available to build 3D experiences:
	• [Babylon.js](https://doc.babylonjs.com/)
	• [A-Frame](https://aframe.io/)
	• [Three.js](https://threejs.org/)
	• [WebGL](https://developer.mozilla.org/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL)

What's great about taking the web approach is that there's no need to get yourself acclimated with an engine UI such as Unity or Unreal. You can code in your preferred editor and view your creations in the browser. I've personally only ever given Babylon.js a try. For a complete JavaScript newbie, I felt that it was approachable.

If you aren't quite sure as to where to get started, Microsoft provides some guidance on [choosing a technology path](https://docs.microsoft.com/windows/mixed-reality/develop/development/?WT.mc_id=mixedreality-devto-apspeigh) as it relates to Mixed Reality.

Curious to learn more about realities? Follow the [#MixedReality](https://dev.to/t/mixedreality) tag!