Skip to content

microsoft/xr-development-for-beginners

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub license GitHub contributors GitHub issues GitHub pull-requests PRs Welcome

GitHub watchers GitHub forks GitHub stars

XR Development for Beginners

Azure Cloud Advocates at Microsoft are pleased to offer a 8-week, 25-lesson curriculum all about Extended Reality (XR) development. Each lesson includes a written lecture, a post-lesson quiz, supplemental resources, and an assignment. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'.

Teachers, we have included some suggestions on how to use this curriculum. If you would like to create your own lessons, we have also included a lesson template. We'd love your feedback via this form!

Students, to use this curriculum on your own, fork the entire repo and complete the lessons and activities. Another idea would be to form a study group with friends and go through the content together.

Find our Code of Conduct, Contributing, and Translation guidelines.

We welcome your constructive feedback!

A generous thanks to our authors Gustavo Cordido, Htet Htet June Han, and April Speight.

Unit 1: Introduction to Realities

This unit explains the differences between each of the realities that XR encompasses, which devices support each of the realities and how to make the choice as to which reality will work best based on the necessities of a project.

Objectives

  • Understand the differences between Augmented Reality, Virtual Reality and Mixed Reality.
  • Identify the different types of XR-supporting devices and their characteristics.
  • Become able to choose the appropriate reality for a specific project.

Lessons

Assignment

Try and Review an XR App

Unit 2: Core Concepts

This unit covers foundational concepts necessary to understand developing for an immersive 3-dimensional environment. Some of these concepts include how to make digital objects behave like real ones and how to ensure that users are comfortable while interacting with an XR application.

Objectives

  • Understand the concept of comfort and identify the different factors that play a role in enhancing a XR experience to feel real.
  • Understand the concept of coordinate systems and how these are used to mimic real world positioning.
  • Understand how forces and pivots work and their importance in XR development.

Lessons

Unit 3: Spatial Design

This unit explores the design process for creating XR apps and introduces the benefit of creating spatially aware objects.

Objectives

  • Understand the concepts of Spatial Design, and their importance before developing an XR application.
  • Identify the different approaches to XR design.
  • Understand the limitations posed by a user’s environment, and how to take them into account when developing an XR application.

Lessons

Assignment

Design a Basketball Game App

Unit 4: Interactions

This unit introduces the basics of user-application interaction in XR. From hands and controller-enabled operation to gaze functions, XR offers a wide array of possibilities when it comes to interacting with digital objects and applications.

Objectives

  • Comprehend the different ways hands and motion controllers allow users to interact with a virtual environment.
  • Differentiate the best use scenarios for hands, motion controller and hands free interaction models.
  • Identify the different hands-free models alongside their strengths and challenges.
  • Understand the gaze and commit model and how to properly design an application for its usage.

Lessons

Assignment

Interactions for a Basketball Game App

Unit 5: C# Foundations

This unit serves as an introduction to programming using the C# (C Sharp) language. Although there are multiple languages that can be used in XR development, C# is one of the most commonly used due to its prevalence in the Unity Engine (which is the chosen engine for this curriculum).

Objectives

  • Create a basic Hello World application in C#.
  • Understand and differentiate the languages data types, properly declaring variables as needed.
  • Learn how to create a class in C# and create objects from it.
  • Understand how to approach decisions in programming.
  • Differentiate the types of loops and identify their usage scenarios.

Lessons

Assignment

Create C# Logic for a Basketball Game App

Unit 6: Unity Fundamentals

This unit introduces the fundamentals of Unity development. Unity is a cross-platform development engine, which provides different avenues to develop XR applications and games. The Unit Activity starts the creation of the basketball game app.

Objectives

  • Demonstrate how to create and configure and Unity project.
  • Become familiar with the Unity Editor UI.
  • Construct a Unity scene with GameObjects.

Lessons

Assignment

Create a Basketball Game App in Unity: Part 1

Unit 7: Create App Logic

This unit introduces how to use scripting to create logic for an app. This unit also explores additional Unity features such as the input system, the physics engine, and creating UI. The Unit Activity continues the creation of the basketball game app.

Objectives

  • Approach complex logic programmatically with scripting.
  • Identify opportunities for manipulating objects with code vs. the Inspector properties.
  • Explain how object properties relate to one another when creating app logic.

Lessons

Assignment

Create a Basketball Game App in Unity: Part 2

Unit 8: Capstone Project

This capstone project serves as an opportunity to demonstrate what you’ve learned over the course of the curriculum. For your capstone project, develop an XR application to be deployed to your XR device of choice.

Assignment

Capstone Project

Offline access

You can run this documentation offline by using Docsify. Fork this repo, install Docsify on your local machine, and then in the root folder of this repo, type docsify serve. The website will be served on port 3000 on your localhost: localhost:3000.