How To MAKE A VR GAME: Beginner's guide to Virtual Reality & Unity XR Plugin

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
So you want to build a vr game? Well, you are in  the right place and more importantly you're doing   this the right time. VR is at the precipice  of becoming a major platform. We've just had   two AAA video games made: Medal of Honor  and Half-Life and it's just starting to   get that momentum of becoming big.  So if you're starting this in 2021,   I am excited for you and without further  ado let's jump into the tutorial.   First thing we need to do is open up Unity.  This project is going to work for version 2020.1   or above. We're going to use 2020.2. I'm going  to name this "VR_Tutorial". Let that spin up. First thing I'm going to do is go into scenes  and rename that to "XR_Rig_Template" so we can   use this later, and we don't have to go through  this process over and over and over again. We   just save one scene and then we can merge that  into other scenes that we need. Before we start   adding things to the project we need to download  a lot of plugins and set a lot of settings, so I'm   gonna walk through all that and then afterwards  I'm going to put a list on the screen. You guys   just follow through with me and then you can pause  it and I'll show that list on the screen for you   guys to just go through into your own projects and  check all the boxes make sure you got everything.   First thing we need to do is go to: Edit > Project  Settings and we're going to start down here at   the bottom and work our way up. So, XR Plug-in  Management we're going to install that. And then   here you're presented a list of different VR  headsets that are available, but you notice that   the HTC Vive isn't there, and the ones using  OpenVR aren't in here. So we're actually going to   go install OpenXR now--it was OpenVR, that's  the old version and then OpenXR is the new one.   And in order to do that we're going to go up to:  "Package Manager" and "Enable Preview Packages",   and I understand that these preview packages  do have bugs. Exit out of settings and now   we're going to go to window up at the top and  package manager and then swap this over to "Unity   Registry" which shows us all of the packages that  we don't have yet--or all of the packages we do or   don't have yet. We're going to scroll down until  we find the "OpenXR Plugin". Install that and one   more we need to install is the "XR Interaction  Toolkit" down here at the bottom. Install that   one as well. Now this interaction toolkit will  give us some samples, and we're just going to   grab this "Default Input Actions" and import that  as well. And that should be everything downloaded.   Now if we go back to "Project Settings" and down  here in "XR Plugin Management" you'll notice that   there is an OpenXR and a features option as  well. So we can now select "OpenXR (Preview)"   and then there will be this little exclamation  point that shows up. And it tells you that   there's some settings that aren't correct  for a VR environment or XR environment,   so we're just going to click "Fix All" and  your project's going to restart a couple times.   After it's restarted there's still going to be  an exclamation point and this is telling us that   we don't have a profile enabled yet. And to do  that we go down to "Features" and then you select   all of the controllers and profiles that you want  to market your game to. " have tried using Oculus   in this, but for some reason there's this  giant like black screen up on the side,   so I don't know what's up with that. So I'm  just going to uncheck that go back to "XR   Plugin Management" and select "Oculus". That's  going to download the Oculus XR Plugin, but the   rest of the video is going to be the same for  everyone. That's the only like weird thing that   I've noticed for Oculus as of right now. I mean  it's still--OpenXR is still in preview so there's   still bugs and issues with it, so this could  be one of those that they're working on fixing.   Checking "Oculus" will download the this  Oculus settings part and I just leave all   of these settings normal. There's a few more  quality of life settings that we want to do,   so we're going to go up inside of "Project  Settings" still, go up to "Quality" and then this   "Pixel Light Count" needs to be set to one (1) and  then we're going to do "Per Texture": Textures and   then "Anti-Aliasing" is going to go up to four  (4) and we're going to uncheck "Soft Particles".   This really helps optimize the project. And  then there's one more little settings type   thing we need to do. Inside of "Preset  Manager" you'll notice there's no   presets in here yet, so we're going to deal  with this. Exit out of "Project Settings"   and then when we clicked the samples for "XR Interaction Toolkit" it put this in our project.   So we're actually going to click on each  one of these and add the "Action Based   Continuous Turn Provider". Add the "Action Base  Controller Defaults". So if we double click on   this guy you'll see that it preloads all of the  different inputs that could be possible for any   XR platform. So you got the head mounted display  position, rotation and then left hand you have   all the different buttons for if you select so you  press the grip or if you move it's the 2d axis or   if you activate it's the trigger pressed. And this  is for generic XR controllers, so this will work   for Oculus, Vive, anything like that. But if you  wanted to add a extra button or something in here,   you could add a binding and then you could click  "XR controller" and add a specific kind of input   if you wanted to do that kind of thing. We  are not so, we're going to delete that guy.   Back to "Project Settings" and then inside  of "Preset Manager" there was nothing,   and we added all of those defaults in here. And we  need to specify which controller for the filters,   so we need to type "Right" in here and  then "Left" in this guy so they line   up with the correct controller. Now  all the settings should be correct. And we can start adding things into our  scene. First thing I'm going to do is make an   "Environment" game object. Add the directional  light into that. Add a 3d object plane,   call that "Ground". Set all of these to  "Static". And now you're able to right click,   and then inside of "XR" we can add a "Room Scale  XR Rig (Action Based)". Action based is the new   input system. Device based is the old system that  they're phasing out. I don't know how long they're   going to support that, but "Action Based" is what  we want to go for. So default is "XR Rig" and then   inside of this XR rig you get a camera offset and  then you get a main camera, left hand controller,   and a right hand controller. There's one  thing that the preset XR rig doesn't have   and that's a Component > "Input Action Manager".  So just search "input". I'm going to add that in   there, and then we're going to add one (1) "Action  Asset" and the default input actions that we   specified. Now your controller should be set  up, and if we hit play we'll see what happens. So now you're able to move around. These little  laser pointers are connected to your hands   and then you should be able to move your HMD  around and there we go. That is the basic setup.   Congratulations, you have started a  project. I'm going to show you two   more things in this video. I'm going to show  you how to pick up things, and I'm going to   show you how to move around the space. Those  are the arguably most important parts of VR,   so let's get into that real quick. Picking things  up is super easy. So inside of our "Environment"   we're going to add a 3D Object > Cube. Move  this guy up a little bit. Press "R" and then   size that up. Set him to "Static", and then  we're going to add another 3D Object > Cube.   Reset the transform on that. Press "W"  to get the position. Press "R" again.   Scale this down to somewhere in the point  ones (0.1s) is always a decent size. Move that so it's right here on this  little table. So this is currently the   default cube. In order for an object to be  grabbable by XR, we need to add a component.   And then we can scroll down here to "XR" and then  we're looking for the "XR Grab Interactable".   And this will add a "Rigid Body" and it  will add a "XR Grab Interactable" component.   Now you should be able to  pick it up, so let's try it. Now when you point at the cube--it's  not a good color--but you can see,   if you point at the cube your laser pointer  turns white and if you press the grip,   the cube will come to your grip and  then you can swap between hands. And you can throw it too. And it's a distance grab--it's   a distance grab so anywhere your laser  touches you can reach out and get it. There's a few cool things you can you can play  around with inside of the "Grab Interactable".   One is the "Throw Velocity Scale". So if you bump  this up you can throw objects super far, like just   launch things. And then the "Attach Ease-in Time"  is how quickly it takes from when you're pointing   at point at it and grab it to it actually being  in your hand. So you can create some pretty cool   like low gravity almost effects by bumping that up  and then it just kind of slowly turns and rotates   up into your hand which can be pretty cool. Feel  free to play around with those. Last thing we're   going to do is add a "Locomotion System". So  inside the "Hierarchy" I'm going to right click,   go to "XR", and then "Locomotion System".  And it presets your locomotion system   to be teleportation and snap turns, but I don't  like teleportation as much. I think it's just--it   just feels gimmicky. It's not super fun. If  you can handle the motion sickness, and inside   of your game there's a few things you can do to  counter the motion sickness of a continual move.   A couple of those are: moving slow, so the slower  you move the better. Or being off the ground,   so the higher you are off the ground when you  move the--. What causes the motion sickness is   you see the ground going by you, but your body's  not moving, so if you push the ground down you   don't see the ground moving by you and your brain  doesn't think that it's-- like it doesn't really   get motion sick. So we're going to remove the  "Teleportation" component and we're going to   add--. We can go down here to "XR" > "Locomotion"  > "Continuous Move Provider (Action Based)".   And the locomotion system is itself. It  defaults with both controllers being able   to do both actions which is going to get really  confusing, so we want to uncheck-- so we want   snap turn to be on the right controller  move to be on the left controller.   I'm going to uncheck the appropriate  ones for those. And now when we hit play. You should be able to move around. So  snap turn with your right controller   there's a delay in there so you can't  just spam it. You can adjust the delay.   And then you can also do a continuous move. Now in order to use this XR rig in other  projects, I recommend saving it as a prefab.   In order to do that I'd take "XR Interaction  Manager", throw that into XR rig and your   "Locomotion System". Put them both in the XR  rig and now you can save this as a prefab. So inside of "Assets" we can create a folder  for "Prefabs". And then just drag this down   into there, and now you have a setup XR rig prefab  that you can just drag and drop into any of your   projects. And you have a setup movement system,  an action system and all that kind of stuff. So   there you go. You see this face? This is the face  of pride. I am proud of you for finishing that   project. In all seriousness, I am super excited  for you to be starting VR development. It's a   crazy world and it's gonna be amazing. I would  love to hear how this went for you. Please don't   hesitate to add to the comments. If you run into  any issues or roadblocks please ask questions   in the comments too. I personally will answer and  help you guys out, and if not me there's plenty of   super smart people who watch this channel who  will also help you out. So don't hesitate to ask   questions and jump in on the community. If this  video has brought you value in any way please   don't hesitate to subscribe. It really gives me  the motivation to keep doing these videos. More   VR tutorials are already in the works. I'm already  working on some more stuff for you guys, and I'm   planning on doing some detailed step-by-step  walkthroughs of how to actually develop   major games like Beat Saber or Super Hot VR and  basically just replicating-- doing several hour   long videos about step-by-step how to replicate  these games. Just so you guys can learn. I learn   by replicating. That's kind of how my process  works, so I want to provide you guys with some of   the same tools that I need in order to learn. If I  could watch a step-by-step guide about how to make   Beat Saber or how to make Half-Life VR... That  would be amazing. So I'm gonna provide you guys   with some of that content. So subscribe for these  upcoming videos and I'll see you in the next one.
Info
Channel: Justin P Barnett - VR Game Dev
Views: 67,181
Rating: undefined out of 5
Keywords: Justin P Barnett, how to make a vr game, gamedev, unity vr, vr tutorial unity, unity 3d, unity 3d tutorial, how to make a vr game in unity, unity vr tutorial 2021, vr unity, unity tutorial, vr in unity, vr development, xr toolkit, how to make a virtual reality game, unity virtual reality, unity vr tutorial, augmented reality tutorial, vr game development, vr, virtual reality development, unity 2020.2, unity 2020.1, unity oculus, game dev, unity vr development, unity3d, xr
Id: 1VC3ZOxn2Lo
Channel Id: undefined
Length: 15min 5sec (905 seconds)
Published: Tue Jan 19 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.