How to Make VR Games in 2022 - Updated Unity VR Tutorial

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
You made it to 2022. And you're  interested in starting VR development. And today's video I'm going to show you how to set  up in Unity a brand new VR project, we're going to   go through the basic setup, we're going to talk  about how to add in locomotion. So teleporting   and just doing continuous move, and then also  a little bit of very basic intractable stuff.   And at the very end, I'll show you where you can  download a template thanks to one of our amazing   discord members where you can just click on it,  and it will do all of the things that I'll show   you in this video. And go ahead and start you with  a perfectly setup project. So you won't have to go   through this process every single time you start a  VR project, which is absolutely amazing. So let's   jump into it. We're in my unity hub. And over  on installs, you'll see that I have the latest   unity version installed. And that is 2021. Point  2.7 f1. And you'll also notice that I have Android   build support and Windows build support downloaded  something to keep in mind as you're developing   your VR apps is if you are running off of a Mac  OS or a Linux OS, you are not going to be able to   play test your game or app or whatever you're  building through unity, you're gonna have to run   a build to the Android device that you're building  for, and test that way. So it takes a little bit   longer. If you're using a Linux or a Mac device.  With Windows, it's super easy. As long as your   device is plugged into the computer, you can test  right there. And to get these modules installed,   all you need to do is click on these three dots,  add modules, and then make sure that Android build   support is downloaded. So this is for standalone  specific headsets. And Windows build support is   needed for the PC headsets. So let's jump into  projects and start with a brand new one. So I'm   going to choose again 2021 point 2.7 F one is  the latest unity version. 2022 is still in beta.   So that's why I'm not talking about that one  right now. And then you're given a VR template   from unity. But the problem with this one is it  doesn't have the XR Interaction Toolkit in it. So   if you start with this one, you're going to have  to go through and change a whole bunch of settings   anyway. So I usually just like to start fresh down  in the description, you can grab the link to the   template that our community has made for VR, which  has the XR Interaction Toolkit and everything you   need already built up for it. So let's start with  a 3d project. And here we go brand new project.   First thing we need to do is set up a bunch of  settings so that when you try to run your program   and actually goes to the headset instead of just  trying to play normally. So let's go up to Edit   and project settings. And then all the way down  to the bottom XR plugin management and install XR   plugin management. This is the system that kind of  does all the passthru stuff of between, you know a   normal, all the Unity things and XR and you'll see  that I have an Oculus option, an open XR option   and a unity mock HMD option. These three are  packages, and most headsets are moving towards an   open XR type package, which basically just says,  Okay, I can give one input. And it will translate   it from a whole bunch of different headsets and  controllers and everything because they all have   different buttons and whatnot. So open XR tries to  standardize all of the software. Essentially, it's   kind of like a middle layer that helps translate  between unity and all of the headsets. So instead   of having plugins for Oculus and Steam VR, and you  know, whatever other standalone headsets come out,   we just have open XR, and that kind of covers all  of them. So I'm going to check open XR, and it's   going to download a package into my Unity project,  you'll notice that I'm in the PC tab as well keep   in mind that all of the boxes you check over here  are going to be PC specific. When you download   open XR, it's going to automatically change your  input mode from the old input system that unity   was using to their new input system. So it's just  going to prompt you for that. So just click Yes,   and it's going to restart your unity project.  When it comes back up. You'll notice that open   XR is now checked in you have a warning symbol  right next to it. And if you hover over it,   it says your project has some settings that are  incompatible with open XR. So if we click on the   warning symbol, it will give us information for  every issue that we have in our current project.   And right now we only have one issue and that is  we need to add an interaction profile. So what   headsets are going to use. So if I click edit,  that will bring me to this page, which I can just   get to by clicking over on the side and open XR.  So we have a new open XR page here you'll see that   we have interaction profiles that are empty and  an interaction profile is really just what kind of   headset controllers are we going to end up using.  So Oculus Touch is the obvious choice. Also,   if you're building for a valve index, you want  to add that in also the HTC Vive as a controller   profile. So you'll just want to make sure you have  all of these included of controllers that you're   planning on using for your particular application.  Something else to keep in mind on this page   is the render mode so some people will have issues  with error when you're running your project,   it will only display in one eye. And that can be  fixed by swapping the render mode from single pass   instantiated, which essentially just takes one  picture of your scene, and then duplicate it and   puts that picture in both eyes, or what we can  do multipass, which means it basically does to   render calls. So one render call for one eye and  one render call for the other eye and then puts   them together, then that is a little better for  VR, as far as visuals go and everything, but it   requires a little more performance, because you're  essentially rendering your application twice,   one for each shot. And we also want to set up  the Android version for all of this as well.   So go back to XR plug in management, and then  we're going to click on the Android tab. If you   don't see the Android tab, that means you don't  have the Android module installed. So you need   to go back to your unity hub and add the module  to whatever version of Unity you have installed.   And for this one, we're actually going to choose  Oculus, because for some reason, inside of the   Oculus quest using a standalone app, when you try  to run an app via open XR, it plays it in like a   theater mode. So the game is actually in 2d, and  you're sitting in your Oculus Home environment,   it's very strange. And the simple fix for that is  just swapping your plugin provider over to Oculus.   And as new headsets come out that are not Oculus,  you'll want to swap over to open XR as well. And   so you'll just have to run builds for both, it'll  be kind of annoying, but you just have to uncheck   Oculus and recheck open XR to run to anything  that's not an Oculus headset that is standalone.   So this Android tab is for any headsets that  are going to run your application stand alone,   not using a PC. And you'll see that we also got an  Oculus page here. And Oculus by default is set to   multipass. You can also set your target devices in  here as well. So we automatically have the quest   and quest to targeted if your application is not  going to be able to be run on quest because it's a   little more performance, you might want to uncheck  this, just to make sure it doesn't get installed   on someone's quest and you know, just not work and  then you get bad reviews. So that's all we need   out of the project settings right now we will come  back to this but at the moment, we are set. And if   we go back into our Scene view, you'll also notice  in the Project window, we have a new XR folder,   which just has basic settings and stuff. Alright,  so now we have XR so now unity can can communicate   with our headset. But how do we know what the  headset is saying? How do we translate those   inputs into actions in our game. And to do that  we use the XR Interaction Toolkit, we can download   that via the package manager. So let's go to  Window Package Manager. And you'll see currently   we are inside of packages in project and you'll  see that the open XR plugin is in here because   we added that via the Settings and also the XR  plugin management package is in here as well.   And so in order to download the XR Interaction  Toolkit you use to be able to go to unity registry   and as long as preview packages were enabled, so  going to this advanced cog here, clicking advanced   package manager settings, enable pre release  packages tick that box say I understand that these   are in pre release and not fully released yet and  that used to make all of the preview packages show   up inside of the package manager. But no longer  does. For some reason, Unity just updated their   package manager and does different things.  Even inside of VR. If we look inside of there,   we only have Oculus XR and open XR which we have  both of them installed in our project already. So the new way to add the XR Interaction Toolkit  is going up to this plus icon up here in the top   left corner, and then going down to add package  from get URL and then it'll allow us to type in a   URL and that URL is calm colm.unity.xr interaction  toolkit hit enter and it will automatically   add in the XR Interaction Toolkit. It's like  you just have to know the secret word. Also,   the XR Interaction Toolkit recently got a major  update. So if you have a project that uses the 1.0   version, you will need to make a backup or just  not upgrade your XR Interaction Toolkit. While   you're building on your project, this new version  is 2.0. And it changes some things renamed a lot   of things. So it will break your project if you  are upgrading from 1.0. And that is the reason   for this pop up. And so if you have an empty  project like we do, or already have a backup are   not afraid of, you know, going through and fixing  some things just say I made a backup and go ahead   and add this. And now we have the XR Interaction  Toolkit which will give us a lot of interactions   that are pre setup for us, which is super nice.  This was recently updated on December 20 2021. So   this is a very new update. Also, we will want to  download the sample package that it gives us. So   default input action so just expand the samples  drop down and click on Import next to default   input actions. This is going to set up a lot of  the input actions that we're going to end up using   and it's nice because it'll just you know, pre  configure all of it in the in unities new input   system which is super helpful saves us a lot of  time and then back in our main screen here you'll   see that we now have a couple more folders so we  have XR array and we have the samples package XR   is just the XR Interaction Toolkit and sample  OLS is the sample inputs that we installed.   So just navigate down to the bottom folder,  there's a lot of folders this gives us five   pre setup input action scripts. So this one is for  continuous move this one is for continuous turn,   this one is your left controller, this one is  right controller and you also have the snap turn   provider. All of these are just actions based on  those particular configurations, we want to add   all of these to our presets. So there's buttons at  the top of each one. So just go through and click   all of those to add the presets and we also get a  pre setup input schematic as well. So you'll see   we have the head mounted display the left hand  and right hand which have different actions so   activate is pushing the trigger and we have select  which is pressing the grip those are the two main   ones. And you also have a bunch of teleporting  and rotating and tracking type things in here.   That was one more setting we need to do and then  we can start adding things to our scene finally.   So let's go back up to edit and Project Settings  and then over here on the left side we'll want   to go to preset manager and you'll see that all  the presets that we just added will be here so   you should have five total and on the presets  that are the left and right hand controllers   for some reason when you add these it does not  differentiate between left hand or right hand   so you have to add left and right into the filter  on the appropriate one. So just type in the word   left and right capitalization doesn't matter on  to these particular filters and everything should   be set up settings wise now so in our scene, let's  go ahead and set up a very basic scene for you to   get up and running with first I'm going to add a  plane onto the ground all this the ground and then   right click and you'll see we have an XR section  here and if you installed everything correctly,   you should see all of these options here and they  may change a little bit when unity updates things   because they are always continuously updating the  XR stuff so if something does not work for you,   they probably updated something so just join the  discord and ask questions and we can help you   out so we've got a lot of stuff in here it used  to be called the XR rig action based in which   has now been updated to the XR origin action  based in this is your full setup controller.   So we're going to find XR origin action based  action base is important because action based   also has your controllers in it XR origin is just  the head just your head mounted display. So XR   action based want to add that to our scene, it's  going to add an XR origin and an XR interaction   manager on the interaction manager, we want  to add a component so we're on the inspector,   we're going to add input action manager,  and we want to add the action assets that   we downloaded from the samples. So I'm just gonna  hit this plus sign and then click on the dot. And   the only option we have is the SRI default  input action. So I'm going to add that one,   and that is all set up. And then we click on  XR origin, you'll see that they have removed   the green box that used to be on the XR rig.  But you can see the camera in which direction   it's facing. It always goes with the blue arrow,  and then they have renamed the script from XR rig to XR origin. So that's one of the breaking  changes from updating from 1.0 to 2.0. And then   inside of the origin, you have a camera offset.  So that's how offset you are from the floor.   This is updated automatically. So don't move this.  And then you have the main camera, the left hand   controller and the right hand controller, you  see that the actions are preset up as well. So   just make sure that the right hand has right hand  actions and the left hand has left hand actions.   And if you see references in all of these,  that means you set up the presets correctly.   If you don't see presets in here, or you have  left hand things on both are and things on both   just delete your XR origin from your hierarchy.  And then go through make sure you added all   the presets correctly and added the left and  right hand filters and then re add your origin   and it should set everything up correctly.  So now let's run it. So if you have a PC,   this does not work on Mac or Linux at the current  time, you can hit this play button in here make   sure that your quest if you're using a quest  is in link mode, if you're not using a quest,   just make sure that your headset is attached  and recognized by your computer and turned   on and all that and then when you hit play, it  should run your scene. Also one little trick,   I like to run the cable or my headset through this  back little loop on the back of the quest and then   plug it in. And that kind of helps the cable from  you know all the weight of the cable resting on   and kind of trying to bend it. So just run it  right through the back of the headset there.   Little little tip. You also want to make sure  you allow USB debugging on your device. And then   we can hit play you should be in the scene and  you should have two lasers that move with your   controllers. So as I move my head around, the  world stays in place and I can move controllers   and they both move separately and I have one for  each. congratulations you have successfully made   your own VR app but you can't do much. So first  let's get you moving around. So we want to add   a locomotion system in the The hierarchy we're  going to right click Go to XR again and then add a   locomotion system. Also action based everything's  action based if you see something that's device   based that's using the old input system is going  to be updated by adding a locomotion system,   you'll see that we have a locomotion script in  here, the transform doesn't matter where it is,   this is just a global component locomotion script,  which will automatically find your XR origin. So   you don't necessarily need to drag and drop  that over here, but you can if you want to,   we have a teleportation provider. So this is  if you're using teleportation, specifically,   then this can be on and then we have a snap turn  provider already set up and you'll see that the   actions in here are already configured because we  added that preset and then in order to teleport,   there's one more ingredient you need to do.  And that is you can either there's two things,   you can either right click in the hierarchy, go to  XR, and then teleportation area. And that will add   in let me turn off the ground. And that will add  in a little plane with a teleportation area script   on it. This allows you to move around anywhere  on this plane going to turn that one off,   turn our ground back on, or you could just add the  teleportation area to you know, whatever you want,   the teleportation anchor that you saw, is being  able to move to one specific spot. So that's like   if you have a bunch of seats in an auditorium  and you don't want people to like you know,   kind of sit in the middle of seats, then you have  a teleportation anchor on each seat. And then   when you teleport to that particular spot, you  can't teleport like you know, in between seats,   if that makes sense. And it teleportation  area allows you to teleport anywhere   on that area. Since our red lasers turn white  when they're pointing at something that we want   to click on and the ground is white, I'm  going to change the ground materials. So I'm going to right click on assets create a folder  called materials, and then right click on that   create and then a material and this is going to  be called Ground mat. And we'll choose kind of   a grayish color and make sure you drag and drop it  onto the ground. So now if we hit play go in here.   All we did was add a teleportation area to the  ground and a locomotion system to our scene. And   now when I press the grip button, I can move  around on on the ground. And I can also turn   by Moving the thumbstick of either of  my controllers. So left one and right   one allow me to snap turn, what if you're going  for a more realistic kind of movement. Let's go   back to the locomotion system. And I'm going to  uncheck the teleportation provider component and   the snap turn provider collapse both of those  make sure you keep the locomotion system   on and we're going to add a continuous move, make  sure that you use the action based one. And then   we also want to add a continuous turn also action  based and you'll see both of these have a left   hand and right hand option. And a continuous  move will allow you to move around like it's a   first person shooter game. This causes motion  sickness, so it is good to have both options   in your game when you're making one. Now there  is one change you need to make after you add   both of these and that is that both thumbsticks  are controlling both actions, which is not going   to be very good. So you need to make sure you  designate which one is controlling which action.   And usually for most games, you move around with  your left thumb stick and you turn with your right   thumb stick so make sure continuous move has left  hand checked and right hand unchecked and then the   opposite for continuous turn make sure that the  left hand is unchecked and right hand is checked.   That way you move with your left turn with your  right so now just by adding those two components   and turning off the other, if we hit play, I can  still point at the ground or my laser still think   it's a valid teleportation area because it didn't  turn the turret teleportation area component off.   But if I tried to teleport with my grip there,  I don't move I don't do anything, I have to   move around with my thumb stick and the speed  setting can be changed in the component itself.   And then I could turn around with my right thumb  stick and this is a continuous turn. So nice and   smooth. Also very motion sick if you are not used  to VR, and you can get used to motion sickness. So   like you like goes away after you do VR enough.  So stay strong, you can get over it. Alright,   we're getting to the end of that tutorial, I want  to show you two more things. One of them is how to   add in grabbing directable. So how do you pick  things up. And then the second thing is how to   download and install the template that basically  has all this setup. So when you start projects,   you just click on I want that template and  it sets all of this up for you. So let's   grab something. So I'm going to right click in  the hierarchy, go to 3d objects and create a   cube on the Transform. I'm going to reset that  back to the center. And we want to scale that down   to something like point two issues good. Also,  there's a new locking scale. So now if you scale   one, it scales all of them which is super nice.  And then let's kind of drop this in front of us.   And in order to pick this box up. All we need  to do is add one component and that is the grab   intractable that will automatically add on a  rigid body and if you want it to be as smooth   as possible, you want to change the collision  detection to continuous dynamic because you'll   be picking this up and moving it around likely and  growing it so it's going to be moving quickly and   then we have the grab interruptible component  and again for the smoothing type thing we went   to smooth position and smooth rotation as well,  those are not turned on by default because it's   a little more performance intensive. And then  here is also where you can specify if you want   instantaneous movement, which means that every  time you move your hand, the object basically   just gets teleported to the next spot for that  frame there is kinematic which it takes velocity   into account. So it kind of slowly moves it in  instead of just teleporting it. Or you can do   pure velocity tracking, so you can't move it  through walls or whatever, which is, you know,   a more realistic kind of movement. So I usually  go with velocity tracking. So let's play that. So we had, all we did was add the cube, add the  grab interactable and then change a few set. And   now I can point at the cube, my laser pointers are  still pointing up turning up as white. And then I   can grab press the grip button, and it picks the  cube up. And you'll see that I can turn with when   I turn my hand and I can throw it as normal  physics applied to it. And as long as I'm in   range of my laser pointers, I can grab it again  and throw it normally there is one issue though,   is when I grab it, and I move my thumb stick, so  I'm walking, but I'm also moving the cube around   as I'm walking around, which is super annoying,  and kind of a weird default thing that they added.   And I'm not quite sure why they added this in. But  it's quite odd and very annoying. So if you run   into that issue, all you have to do is go to the  XR origin and then on the left hand and right hand   controller, so I'm going to hold down the control  button on my keyboard and click the other one. So   now I have both selected and then we want to not  the XR controller but the RE interact or which is   allowing you to grab this cue we want to uncheck  anchor control anchor controls what was allowing   you to move the cube with your thumb stick, which  might be good for some games, but for most games   that I can think of, we want to just leave that  unchecked. So if the object you're holding is   moving, when you're moving, just uncheck anchor  control. And there we go. You can move around,   you can pick up things, you can throw things, you  have a pretty functional VR app there at least   a good start, if you're running off of a PC, all  you have to do is hit play like I have been doing   to test your application. If you're running off of  a Mac or a Linux device, you'll want to go up to   File Build Settings, make sure you add the open  scene that you want to build and then swap over   to Android, make sure your device is plugged in,  switch your platform over to Android and then   build and run to your device. It will take a few  minutes to build every single time, which is kind   of annoying and why I recommend using a PC for  development. But it can be done you'll just have   to build and run every time you want to test for a  Mac or Linux Device. All the settings we have set   up in here will allow you to run to the Android  devices. And this is also how you share the game   with your friends to so you run a build and then  send the dot apk file or the whole folder with   the dot exe file. If you do a Windows build to  all your friends in order to play your game, no,   let's add that template. So you don't  really have to do this anymore. You can just   open up a new project and everything be nicely  set up for you. So there's a link down in the   description. I'm going to do my best to make sure  that link stays updated. If unity ends up updating   to a new version don't just come back to this  video and there'll be a link down the description   and hopefully that link will be updated if it's  not just ping me on Discord. And if you're not   in the discord join the discord because that's the  whole reason that this template came about because   we have an awesome discord community. It's super  fun, we answer any dev help questions, anything   that you are struggling with. Or if you just want  to share your project that you're working on,   join the discord. It's super fun. So there is a  GitHub link down in description totally free for   this template. And that will bring you to this  particular page and you will want to download   this dot tgz file, click on it, add it to your  downloads and then on your PC will want to go or   your device you'll want to navigate to your unity  folder in like the Program Files or I'm not quite   sure what the equivalent for Mac is. But on PC it  is Program Files and then Unity will want to go to   hub editor and then choose the particular version.  You want to download this template for this one.   As of right now I know works for 2021 point 2.7  F one and then we'll go into the editor folder   data folder, Resources folder, package manager  folder and project templates. And here is where   you'll want to paste your dot tgz file. So  we'll go back to downloads cut this file,   click the back button to go back to the folder  we're just and paste it now you'll need to restart   unity hub so it is usually hidden. Even if you  have it closed here it's going to be hidden in   your toolbars. So make sure you quit unity hubs  right click Quit unity hub. And then let's open   that back up. And let's make a new project new  use the version and here we go. We have our VR   template and I'm just going to call this new  unity project because I don't care. And here   we go. Here's our template project. So it's going  to start out with a basic seen that just has an   origin and interaction manager but you'll see that  the input action manager is all set up we have   samples already installed. If we go to the project  settings you'll see that we have all of our   resets are already in here and all of the settings  are already up to date multipass is already being   used. Everything is all set up in this template,  we are going to do our best to make sure this   stays updated for everyone. And I really hope  this video helped if you have any more questions   or just want to hang out or play some games with  me or whatever, then join the discord because it   is super fun. We are planning on doing a  game jam closer to the end of this month that I will be announcing shortly. So stay tuned  for that if you want to get a private meeting with   me every month or you want access to the source  code of any of my projects, then feel free to   support me on Patreon. I really appreciate  everyone who is continuously supporting me   it's been super nice. And in the meantime, in the  comments down below let me know what projects you   guys are planning on making for VR or what other  tutorials or videos you want me to make. I am   super excited to you know continue on this journey  and I'm going to keep making up to date videos.   If something in this video goes out of date check  in the comments. It's probably answered down there   or in the discord or I'll be making another  update video shortly most likely if unity keeps   changing things the way they do. Anyway, thanks  for watching. I'll see you in the next video.
Info
Channel: Justin P Barnett
Views: 295,808
Rating: undefined out of 5
Keywords: unity xr, unity new input system, xr interaction toolkit, unity vr tutorial, how to make oculus quest 2 games, how to make oculus quest games, how to make oculus quest 2 games in 2022, how to make vr games, how to make vr games in 2022, unity 2022, unity xr interaction toolkit, unity input system, xr toolkit unity, xr interaction toolkit unity, unity xr toolkit, vr unity, xr toolkit, unity xr toolkit tutorial, unity 2021, unity vr development, xr unity tutorial, openxr, vr, xr
Id: yxMzAw2Sg5w
Channel Id: undefined
Length: 26min 19sec (1579 seconds)
Published: Wed Jan 05 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.