Developing for VR in UE4 using Blueprints and C++ with Ronald Dela Cruz

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
folks thanks for coming so my name is Ronald de la Cruz so I'm the lead developer for real serious games and but for this session I'm just gonna be showing you how to create a VR game from scratch using both blueprints and C++ so what we're gonna be doing is we're gonna be setting up a base view our project create a VR pawn from scratch with motion controller input we're gonna do some movement mechanics two types so I'm six if it'll be that and as well as thumb stick or thumb thumb pad driven which everyone seems to like and CPU we're also gonna be going to CPU performance profiling and a little bit of tips on when to use blueprint or C++ so during the creation of the game that we're going to be creating tonight we're gonna make some key decisions on whether to use C++ or blueprint but we'll start off with some basics with the blueprints part so how many of you guys here have actually had some so that I will know how to kind of tailor the session how many of you have actually done unreal oh okay everyone so how many of you have done blueprints ok and C++ alright so gates so pretty pretty much even alright so a probably a little bit faster than during the session and and and if you have any questions just um just let me know alright so maybe we'll start off with just showing you quickly the simple game that we're gonna be creating here so I just cheekily called it um surfboards and boomerang so it's supposed to be part of our series so this is gonna be the first one which is just one surf board one boomerang there's some stuff in your way and you're supposed to go to the portal you're controlling the surfboard as well as controlling that boomerang and then just destroying stuff along the way until you get to the boomerang to a different level so once you get to the portal you're supposed to be teleported to a different so I guess as well how many of you have actually done VR development so two or three all right so there's been gonna be some value in this I guess for for a lot of you guys let me uh okay let me just take the screen off for a while because I forgot to there's some stuff that I can't show the screen sorry let me just start off a project from scratch and okay I'll get through the launcher because I don't have internet here it's like just in dude sorry Petter what does that mean [Music] oh you mean for Wi-Fi no that's fine it's just a bee I can't use the launcher Shahenshah thought to go do it manually alright sorry I'm just gonna go back the screen now all right so we're just gonna start with just gonna start with a basic vr project so we're gonna do a blueprint oops sorry start with a let's start off with blueprint and a Blanc Blanc project with no starter content and it's just called this boards and boomerang say so most of you have probably if you've dabbled with a little bit with VR in unreal so you probably use a template so what we're going to be doing is actually creating something like the template but from scratch so that you have full control on the code itself and like how to set it up properly all right so one of the the first things I'd like to do when I'm in the engine is so kind I just have a little bit of a structure in there and this is pretty common in the real community so you just start off with your root folder as the name off the project itself and just gonna start apps fat Internet I'm going to show you this I'm basically using the format from alar on how to do the structure for the folder al are a ll AR yeah I'm probably not pronouncing his name right as well all right I'm just gonna save this map quickly and this is going to be our end map and I'm gonna create a new one let's start off with a completely empty level save that one I'm gonna use that our start map and I could see that I've hit a couple of mistakes there I'm just gonna move their maps in there and quickly picks up three directors so every time I want to move stuff you'd probably you often want to do the fix-up redirector so that in your directory structure you don't have some stray files in there called V directors one reel so alright and and then let's start with the project settings I'm just gonna type VR here so this is one of the new stuff forgot which engine version it started for 18 I think where you can have the start in VR in there now there are a couple of settings that you can use obviously like using forward renderer I'm not going to activate that now it takes a while to recompile stuff but yes all of this art stuff we're gonna just skip for now I'm gonna focus completely on the development cycle so I'm gonna treat this kind of like a slice of a development cycle in VR development from the studio but we're going to be touching up a lot of different things and I'm gonna be pointing out stuff that we usually do in a studio and who does what okay all right so good story map and one of the things as well I like doing is since now I have start and end map I just quickly do this so that whenever I restart things it's gonna start where I feel it should start all right so pretty basic so far so we've just set up a basic level a blank a blank level so we have an end map which is our goal and the start map where we're actually going to be playing the game so now let's actually set up the VR things right so what I like doing is creating a VR folder here and first thing I do is create a blueprint class called a game mode which basically just tells we you can specify your own custom pond or cause some player character that you can have so you'd like sorry VR game mode tell me if I'm going too fast I'm going with this pace because a lot of you have already done unreal then I'm going to create a pawn which is a basic one and this is where all the magic happens so in unreal arm so the epic engineers have been pretty good in making things very VR friendly so if I run this in VR now it would actually just work with a camera but what we'd not what I do like normally doing and I think a lot of PR developers miss this is this part so Abbi let me just add a scene origin here sorry cuz I've seen a lot of projects that miss this just gonna start with that so I have my own camera and I think also because the templates from the engine also missed this for some reason so that's gonna be the VR camera so what this does is it overrides the default camera that comes with the pond so you have a bit more control over it and one of the things that like changing is the field of view especially if I'm making a something for the vibe over the rift so if it's exclusively for Y of the rift if you if for some of you have done VR projects if you just use a template have a look at your game with the 90 the default change it to 110 and see the difference of what you could see in the world so it's quite a huge difference and it might also decide some of your arts art stuff alright sorry alright alright so let's go back to the slides a bit let's pretend that we have a game designer and we get a game designer coming to us with a GDD for the games design document so this is a very overly simplified part of it so what the game designer wants is a full 360 sorry a room scale VR experience with 6 degrees of freedom and what he wants he or she wants is to be able to use the controller point of the controller and fly around where you're pointing the controller by pressing the trigger here alright so that's one of the key things that they want the goal of the game is to go from level a to level B by going through the portal like you've seen in the video and just to make things interesting there gonna be some obstacles in there which is love floating rocks and you're gonna be able to control a boomerang using your thumb stick here and just moving this thumb stick around okay so that's the three things that we're going to be looking at implementing on this game alright so so far what we've done is just a VR pawn with a camera and we're just now going to add the motion controllers so what's nice with unreal and some of you might already know we just put in the motion controllers is that I'm not 100% sure with unity but within real it's completely Hardware agnostic so if I put motion controller here it will know depending on the hardware that I have in I have on my machine whether I'm using the vibe or the rift or any other VR so I just need to set up a motion controller component so most people have two hands so I'll put motion controller left and motion controller right but a quick setup would be II so normally you'd work with an artist as a developer you'd probably want to start mucking things up with the device model so what with this new new later versions of the engine you have this visualization already built-in that means it shows you the mesh of the controller depending on which hardware that's plugged in so if I'm if I've got my wife plugged in now this will just automatically so it will just simply change to a vibe wand instead of the the oculus rift controllers which I have now okay and you can immediately see that in there and what I do is I just press ctrl W here that probably am spamming the thing outside major city that yep and then press motion controller right and just change the motion source too right yeah okay so now we have a VR point which would represent the player in the world and the game mode now I'm just gonna set that up so that the default pawn class point to that uvr point that we just created here and in the world I'll probably want to add some directional light right so so you have some light in there and play your start which would indicate where the player will be starting in the world so I'm just gonna randomly throw those in and that should be already payable unless I miss something it's made directional light hasn't started yep so one of the things since we're modifying the game-mode we have to obviously set up the VR game-mode into the level make sure we're on the same so you can see now that we have this motion controller represented and it's in here so the engine does that all for you so there's nothing much to see here so if you just want a bit of a frame of reference like can just put a cone in there and that will be alright so you see where the blue thing is that's where the pawn is facing probably just want to face the pawn in there you can see alright so right about this time you've just set up a very basic VR project and this is where the developers don't really push it into either perforce or get into the git repository and then your lead artists would start doing the materials so one of the first things the lead artist will do is create a master material so let me just do that now from here it's gonna create a new folder called material library all right and I'm gonna start off with the basic material to get some interest in here let's just call it master for now right so a lot of you have doubled in unreal before you'd probably just start creating a shader from here which is what we're going to be doing sorry what we're going to be doing it's gonna plug stuff in there and just gonna do a multiply it's pretty dark in this world so yes and we have a value coming off in there and you get I guess you can add stuff in there as well I'm just going to quickly make a master material it's obviously it's gonna be a lot more complicated when video lead artist does it just to show the concept alright so I'm gonna make maybe some interesting color in there just gonna set that to 1 maybe he throws a zero keep forgetting to hit apply it's just taking a while alright and I start converting things super a meters I'm just gonna call this base color so right click with the parameter it's called that bloom and you'll see in a while why maybe it's a specular roughness I guess all right so this is now a master material and this is the only one and only shader theoretically if you if you've done it right you should only have maybe one or three or a couple of master materials and everything else would be a material instance and any other shader will feed off this master material so Peck artists usually takes over from here and then adds more complicated shaders which is that's but then I'm now a tech artist and I'm just gonna create a material instance so I've basically made a very flat master material now I want to create a material instance that glows or glow yeah so I'm gonna change the bloom to maybe ten and immediately you could see that glows it's gonna drag that off there that's something that close maybe it's a little bit too block let's make it more glowy all right so just a example pipeline so yeah so I guess we can make it a bit more glowy but I've been bit more emissive but yeah so that's a pretty basic pipeline of the beginning of well most UV projects and most VR projects so you've now got a start off where the artists would start working and where the developers can start working so we're gonna go back to the becoming a developer and one thing I'm going to skip for this part at least for this session would be the actual levels because we could normally you'd also want I've made it pretty basic here you probably want streaming levels in here at the very beginning so multiple people can start working on the same project at the same time but for this session we'll keep it simple and we'll have this we'll just keep it to this one level and we're not gonna use any streaming levels alright any questions so far am I going too fast too slow everything's all good all right awesome all right so now let's add some movement mechanics so I promised you that we are going to do some movement mechanics so it's 6 degrees of freedom is pretty basic right so you what you'd want to do is that when I point this controller press the trigger I want to be able to move and let's just add something to it like if I press this trigger it will be the acceleration so once while I'm pressing this I'm reaching the maximum so from 0 to 1 and then with our defined speed as I'm pressing the trigger we go faster right so that's how we're gonna do this mechanic so the math should be pretty simple so anyone can basically tell tell us what they feel the map should be so it should be simple so you'd want to have your current vector and then calculate somehow your direction where this thing is facing and then add the speed and the direction to it and then you'll get to the locate your a target location so I don't know if you have a board but it's alright so before I get there so one of the things that's probably do you have any questions so far No so probably one of the things that you'll be asking is like hey how the hell do I get input how do I read the actual input from the controller so within real there's some several mappings available so there's some of the more classic diagrams here made by some people in the community so this is for the vive and since I'm using the rift I'm just gonna quickly move to the Rift and you could see that the you have what we call the motion controller left and motion controller right triggers in there I'm not sure if it shows here truly doesn't so so you have that's a motion controller left trigger and the trigger axis goes from 0 to 1 so zero being nothing and then one being fully depressed so we're going to take advantage of that as our acceleration so let's just open this up if I can snap it in alright so one thing I like doing before what I normally do with event begin play if I start VR like an enable HMV so there's an old code enable HMD well if you remember the project settings that we did earlier so unreal has changed the engine so that you just have a pick box at the beginning so to ensure that you run the the project in in VR mode so a lot of people who maybe participate in game jams find this out too late because everything works in the when you start playing with the editor and then you know how a game jams are right so crunch time you're trying to release the darn thing you package it and then you run it it runs it doesn't run in VR so they used to be a classic problem so epic added that tick box there so but you still have that so I'm just gonna note that so in case you have cases where you want to enable and disable H and D the VR mode that's how you do it I haven't there's a work cache I haven't actually tried it but it will be yeah it should be definitely possible like all right so we have that I'm not going to do that now but one of the things with with VR then is the floor level so this is still something that you have to manually do so with the rift and the vibe we have different floor levels sorry we have a single tracking origin is what it's called so it's just a million things in here so in most cases unless you've sort of developed you've gotten a lot of money and can afford a ps4 dev kit you'd probably be stuck with a rift or a vive so you'd have a floor level in any other case if you have a ps4 dev kit you'd have that into the eye level alright so but in this case we're only going to be using it for the vibe in the rift just as a note so if you've ever seen the VR template you'll actually see that they have a switch node in there for the name of the hmd so just like tagging that so rift and 5 support alright ok so let's get back to the actual input from the controllers so everyone remember is what the input is again feel free to don't be shy motion controller right yeah so motion controller and I'm left-handed so I'm just gonna start with the left one so I want a motion controller event there's also a value if you just want to read the trigger axis but in this case I actually want to have the event with and then with returning the trigger axis so this is going to be the basis of our input and what I like doing that's for then that I haven't done this before so I'll do a prototype a lot of you out know I'll put a comment and what do we need to figure out I need to figure out where I'm supposed to go so I'm gonna be having to calculate my direction right and after calculating the direction can add another reroute though and I'm gonna want to I guess move their move to the location so two simple steps calculate the direction and move to the location so now I've just broken apart that not so big a problem into two simple things all right so how do we actually calculate the direction so as we said I wanted the motion controller that would be my frame of reference right and I want to be able to know where this motion controller is so with the classic game programming just gonna get the rotation of that and you'd want to get the s I'm only wanting to ever move to where it's pointing I want to get a forward vector out of that and obviously like where the pawn is I'd like to be able to know where I am so I'll just start off with get actor location all righty so we have with leave all the key pieces together and what are we still missing so we've got the different vectors but we're probably missing the speed how fast we can go max speed so I'm just going to create quickly a variable here let's call it speed change that to a flow I compile it let's use 10 oh no probably too fast it's just 5 as a default value and we already know this goes from 0 to 1 right so we'll multiply the access value with the speed and that should give us some forward movement and from here we'll multiply the forward vector with whatever comes up in here and I will just simply do an addition there if I can combine notes so basically what I've done is calculated the direction and I'm now starting to move to the location so to move there are several ways to do it I like using the teleport one the teleport node simply because it based physics and collisions so if I was doing a more sophisticated game I probably won't use a teleport node probably use a move actor so yeah because if I want more control over the coal but for this demo we're just gonna use a simple one I'm just gonna start removing that and clean up a bit here alright so and the rotation we'd want to keep the whatever rotation the actor is in or whatever the player's rotation is try to tidy up a bit I'm a bit Oh see with um with blueprint stuff no it's because I'm coming from a C++ background I like to keep things neat but alright so we have the access value it's just double check Thanks so as I'm pressing the trigger I'm getting a an acceleration here from zero to one and then I reach maximum speed which is one and then I multiply that with the forward vector over the motion controller is and add that to the current location and then the and then obviously just plug in the current actor rotation so we're not changing the rotation so let's see how that goes the speed value I've set up a default here of 5.0 from here so I've kind of cheated a bit but just plugging in a magic number from there alright so your your it will then go from zero to maximum five as we're pressing the trigger erratically so now that we also have a frame of reference sure you can see that should be able to as I press a trigger I can speed up and slow down I could point it back I could just fly around so this is one of the first things I started developing in vor they did was basically grab the mesh off Star Trek's spaceship enterprise and started flying around it so it's like a childhood dream so it's one of the more fundamental Kanak said you could do easily with it be are so like relatively quickly so we did that and probably like five to ten minutes alright but obviously this session is not just because of that so we want to be able to expand on that alright so I'm working on a development workflow here alright so I've just done the left hand and I'm just I want to do the same thing for the right hand so the easiest way to do obviously is to just copy but this is a at this point when I'm doing when you're about to do a copy-paste as a developer it's time to refactor so that you can just reuse things and I guess for our developers here it's probably quite obvious what you need to do is just simply create a function so I can just quickly create two functions here in blueprint let's say get direction and then let's say move this actor all right let's start off with this is where you if you have it's that I would get Direction let's see how we broke this apart so basically just all this nodes from here yeah this is really good so the input would be you probably want an input of the speed let's just focus on the direction here so we'd probably want an input of the reference and that's pretty much it for the get direction so we'd like to create a direction reference and I could go to a different class but let's just go to a motion controller components that we're pretty sure that because we're at least in this experience we're going to be pretty sure it's going to be a motion controller as our direction reference and basically all you need to do now is to grab that and we're going to have an output off a forward vector so let's just call it direction I guess it's easy it's just a vector you know we do that we remove the motion controller from there plug that in if it puts in at the direction and we've just really factored that so I can now remove that from here and just simply drag the get Direction function that we have we plug that in and I guess we need to grab this again alright so next we're gonna move all of this in to move this actor we probably we will need the speed and the direction as an input so it's the direction speed which is a float and the acceleration as well I guess all right and just grab all that no those notes in there you factor it here so if I was for the typing this is how I would normally go about prototyping it do that probably put the speed from there and the direction vector so let's make sure the things and we won't have any output all right so now we can just simply do this plug in the direction we plug in the acceleration and we plug in the speed let me just give this as I was washing that a bit just give it a quick try make sure everything still works so everything's still working now it'll be relatively easy to do the same thing for the right let's just duplicate that and has just change the outputs the inputs sorry to the motion controller right and now I should have something that works for both the left and right functions left and as well as the right so it's all working and they can fight with each other okay so one of the things that actually you probably want to do move to C++ or things that happen every tick or every frame so you want to move those things to C++ so let's move in this case just this move this actor bit this whole thing here so pretty simple a bit of math and also like putting things that are math related into C++ just because it's a lot readable in my opinion so one of the things that you can do is I'd probably want to be able to make a component that I can add to every different actor to a lot of different actors that would want to be able to move so because in this game we have the pawn moving and we have the boomerang moving so I probably want to use the same thing without having to recode so one way you could do that in unreal is you basically add a component so what I'm gonna do is I'm gonna create a new C++ class and there's several choices here so you have what we call an actor component an actor component is basically it's attached to the actor and you won't be able to attach it to any other component so if you want it to be able to attach the specific component you use the scene components not really that much difference except the actor component doesn't have the translate and scene component deaths so in this case I just wanted attach to the actor itself so just use actor and let's just go call this VR movement and that has a nice impact as well converting our project to C Pass Plus so wow that's good it's gonna take a while for that thing to start converting stuff so I'd like to go over some of the key things that I promised the divides performance so obviously sacrosanct in VRS probably you've heard it a lot is 90 frames per second so especially if you're going to be trying to publish in the different store so with the oculus stirs when we try to develop things that are going to be published in the store we always look at oculus simply because they're usually the lowest common denominator they're very very strict and yeah one of the projects we were working on is what was a big project and we had what was it gtx 970 was the was the minimum and and out then a couple of months into the project they changed it to 960 i really user then our tech artists went ballistic because like really difficult to get that publish with the amount of artwork done so but epic helped us through that cycle which is very good with with epic if you have a part in either a partnership or a license with them they would actually have like their expert the actual people who develop the engine help you in several things to keep things performance especially in VR so the thing the key stuff in here i need to show it it's 90 frames per second you do have a SW which allows you 45 frames per second but you probably don't want that any in any for any long period of time because then you give the you're almost certainly give a lot of people motion sickness so although that is allowed in the oculus store if you're using a gtx 960 which is the minimum spec the for the code side which is where where i focus on mainly you have three milliseconds so what I always like telling my developers is that us developers is basically to allow people out to allow the artist to do the great job because a lot of the stuff that we developers do is basically facilitate the eye candy and that's where the money comes in because when people see cool stuff they pay for it so the the art of the developer is to make sure that we get out make sure that they have enough leeway or a lot of free room to maneuver and we have a maximum of three milliseconds so for a lot for if I'm leading a team I usually try to make that two milliseconds every frame one of the key rules as well that the epic guys have learned during um creation of the Robo recall it's always harder while from their experiences to scale down than up in terms of scene design so you'd probably want to start with basic scene and then just move up from there and keep adding stuff and not dump a lot of things in there and then try to move it down at least from their experiences you'd want to scale things up then down so especially with with VR and you're one of the key things that I guess if you've gone through a lot of VR titles and made a lot of development in that cycle is very be very pragmatic so developer can sometimes be over zealous with the performance but the key thing is you should always if it works it works leave it alone when you have a problem then deal with it then obviously you try to be careful to make things performant but yeah but they always pragmatic so if you're hitting the frame rates leave it be yeah and it's mentioned additive approach start with base you keep adding to it and then keep making it look good from there and this is sometimes a struggle I find with tech artists is they tend to like to put everything in and then they complain that it's not working and then it's somehow it's a developer who has to actually make it work but it doesn't work that way so some of the products I work with we have to go through the shaders and actually try to scale things down but yeah it's really difficult to once you see it it's very difficult to take it away from them so always try to tell them to move it up the maximum 500 to 1000 draw calls some some wisdom from robo recall as well so drop frames that cause discomfort are not worth better quality graphics so we've gone through some of our the projects I've worked with we we hire like QA QA people and we have focus groups come in like different types of people and it's definitely not worth like making them sick and especially if you're very passionate with VRS we were as we were as we are it's very disappointing to see someone get turned off BR because they had a really bad experience from your game so it's not really worth it especially with the new industry so keep that in mind when you're putting people on their headsets just to make things look good for most people but yeah you probably we want the market we want to increase our market okay so maximum of one to two million tries or vertices and again don't rely on ASL we you and yeah use Lord's calling and batching so a lot of them are art which is not the focus of here but for code three milliseconds is our top goal and I would normally say two and four valve said you know it's 11 milliseconds but Bob always says 10 milliseconds simply because if you try to hit 11 you always hit 11 and more so always try to hit 10 terms of the for the GPU side sorry it would be more clear so GPU and then CPU is the 3 milliseconds all right so let's saying that all right cool so now we're in the fun stuff can that it's a tweetable all right all right so we're now in the seat of C++ so I've just created a component basically from the editor so you could see it's like really easy and what I normally like doing is asking the question and this actually came up when from my plug-in when it first got reviewed by epic is like hey you've got a lot of six here when you're not doing anything on it so to keep keep it performant you can remove them so by default they're there so I would remove all of those sorry I yeah especially critical with with blueprint so anything that's in intake yeah so and everything intake you should in blueprint I would always say put it in C++ shouldn't be there and normally you know all those great out boxes one of the things sometimes is just wipe them all out and then just use the stuff that I need when I need it all right so we've got that um let's see all right for this one we just want to create a function that actually moves the actor so I'd want to be able to get the actor where this component is attached to in the hierarchy right so maybe I'll just use that as private all right so we know it's gonna be an actor some call it owner like some fancy naming yeah right and that's gonna be where we're gonna keep the act or where the component is attached to it's not null pointer we're gonna do a we just want to you function in here it's unreal functions I'm gonna use a u function macro to expose it to blueprint and then just say blueprint callable that's it and so for this function there's no return value and we just say what do we call it again move this actor we had an input of F vector which is the direction and I think we have a float which is the speed and a flow which is acceleration all right and let's just do a quick bill this bill should fail because we haven't implemented it but I'm just trying to kick-start the C++ parsing because with a component this has this weird thing but while that's happening might take a while let's just go back to the performance settings we've actually covered all of it I talked too much tin there so let's just have a look at all right so times like this so you go for a coffee your developer and chat and say this is the best excuse for developers I go it's building and we're just walking around but let's make our time a little bit more productive and let's start putting some assets in let's say the art team has started putting some assets in so I'm gonna do you folder in here let's just type some assets I'm gonna import let's add this surfboard alright so the art team is alright committed this assets here I'm not gonna add them all you're just gonna start with the surfboard so we're gonna do this and what I like doing especially if you're a developer you don't care what the asset is so sometimes I just quickly look alright I like you take that combined meshes if I want it to be a single mesh or if it's a skeletal mesh I don't like importing materials and textures have something clean obviously the art team would have would would do the final touches on it but just to get the mesh there I just press ctrl shift s just to save everything so now we have the surfboard and if I go back to the pond just go to the viewport to see how our pond looks like alright so in a game I'd like to be able to move and I'd like to have a surfboard which is what I'm using back in the good old days some of the key rules in creating movement mechanics is to have a frame of reference in your camera this helps prevent motion sickness so one of the things so what what the surfboard here is doing is kind of also give especially newbie users in VR a frame of reference in their eye especially with this type of movement mechanic which is free roaming so that they don't get Simsek all right so what that does is I'd like to be able to move but not move the surfboard when I do this or up or down and I still want to have a little bit of a natural movement when I do this I don't do I can't serve but I can imagine how it hit here so if you do this I'd like to have the the surfboard move a little bit naturally like this until so if you've done game development in unreal before even outside VR development one of the nice cool things cool components you have is called the spring arm which I would be using here I'll attach it to the camera and that would add that natural movement saying it wasn't meant for this but it works well and I'm gonna limit the pitch I'm gonna allow with the yaw and roll to happen and then we can attach I'm gonna be just lazy here and still a should attach the static mesh component in there all right I'm just gonna eyeball this a little bit obviously in a in a real viewer experience you have either a calibration mode or from the engine if we try to figure out the height of the user from the floor but here I'm just gonna do a bit of eyeballing go and that should be pretty much it it's the thing finished giving us an error it's fine and that should be it but maybe just show this a little bit so now we have a surfboard that should move a little bit naturally if you do this and this all right so yeah so it's a bit difficult to to see from just watching it but B there's a huge difference when you have that tilt in there and in a lot of your developments all about the feel inside the headset so one of the things that for the company I work for now I help started the the VR development team is I ensured that all of my devs would have a rift because it's you can't really develop without a headset in VR you could always see things but it's really different it's mostly about the field mostly about a lot of it a lot on the scale specially for artists so all right so let's go back to the C++ side and let's do and I'll just if it allows me in a crate and implementation I'm using visual assist which is really nice it's quite fast for C++ in especially with unreal and once you become more advanced when you're actually editing the engine itself it's really a lot better than any well there's Reece sharper but but visual assist even the epic guys actually use visual assist because it just compiled a lot faster than this sorry yes yeah so yes alright so we have moved this actor so at the begin play it probably want to get the owner right so I get owner and we have owner so a lot of my creative naming coming up in here and moving this actor is now the math right so we have teleport and obviously after plugging it doesn't help let's keep that as this so we'll have the direction add it to the without it - sorry that's why being silly so we'd want the owner get actor location and we'll add the they'll add the the to the after location without the direction multiplied by the speed times acceleration similar to the one we did in the blueprint right and we'd have the get actor rotation you forgetting the component yes exactly yeah so I yeah in traditional gaming you'd like to you'd be I guess most tutorials should see the Delta but I tend not to use it because here you try to hit 90 anyway so you always try to hit a consistent frame rate and anyways the even a SW would try to the engine would if you hit a SWT it will always try to keep you at a constant frame rate so for VR it doesn't matter as much so as you could see here these annoying red squiggles in there right so and I will give you this weird pointer to incomplete classes that allow I just don't have the internet here at the moment but they usually indicates that you've forgotten and include and just because I know where it is so it's because the owner is an an actor and we need to include that header file so it's in game framework actor age right and that should get rid of that thing and we should be able to build that now with one of the still not quite nice things with with an REO with C++ is if you do an actor component you have to restart the editor with actors you can do it still does the heart hot reloading so it's just gonna do that it shouldn't take too long alright so after that's done sorry boards and boomerangs this one a it's going to restart that so with if you're developing a plug-in as well unreal still an annoying part is when you recompile or add things to your plug-in you still have to restart the editor so sometimes I'll do like a host project and do all the coding as actors and then just move the code across as a plug-in so we have that now if you go back to VR and then we are upon you go to the event graph let's change this bit this guy here left to a side the VR movement all right so you could see that this is a C++ component that we've just made I guess I should show that a it's C in the C++ side you have the VR movement and the function we did is we named it the same thing we just move this actor gonna add that in and we're gonna have a speed and in the acceleration in there and the direction just have a quick go yep so this one is now running in pura see in in C++ and this one is running in blueprints on the right side now to this is about once we start putting assets in this is right about the time if you I will go to the console can't see it from here you just close it console and start doing that unit there's really not much interested in the scene at the moment to show it and I'm hoping OBS it's not gonna kill this strain rate it show me really bad thing they should be able to see it's actually not coming out some reason yeah now the problem is like can't know it should detect my head already this one yeah so just maybe it's just because it's black yeah so alright so I'll add that and once we get more stuff in here when I have more lighting so you could actually see but anyway so this is what the artists usually use just to look at it to the scene and see if there's any problems in there from the GPU side from the CPU side which is what I want to actually show and let's see if this is going to be a challenge here I'm going to start profiling both the C++ and the blueprint so I'm going to do that start file from there so I'm going to use the left controller then the right back right get a couple of frames in there so then you should be able to go to window developer tools session front end go to profiler and be able to load be out having did I say start file yeah so we should be able to load that one now and let's just wait for it to load up all right and so obviously you can read this but what I like doing at least when I'm profiling this so you could see if I do this move this actor in the filter it here I could see the blueprint version that I just made and the C++ version and yes so the moment you could see it's nice to look at the averages and the maxis from here so in sum if we played around with it a bit we should get a bit more than this but even with that simple code we're getting a much better performance from the C++ side from the VR movement component versus the blueprint from here if you look at the averages alone so in some profiling stuff you would normally get like around 10 to 30% improvement even with basic math so you can imagine that for this movement component alone if you attach it to multiple different actors in the scene how much savings that would be especially if you're thinking about the tween with the second rule for developers right questions so far yeah so with native Ising blueprint that actually works in most cases the problem with the native ization at least from a developer perspective is native ization am i pronouncing it right make device asian asian yeah yeah yeah so everything is an inline function which sometimes is yeah it's pretty it's pretty good and pretty solid now after robo recall but the improvement with a with a real developer is still a lot better I would say especially if you've done careful thought with your architecture but if you're not very comfortable yet with with C++ it's probably a good way to go just to improve your your performance yes if you're a tech artist you can use that to write sation it's pretty solved it's a lot solid now there will be cases especially with complex blueprints that won't work on compile what I would suggest if you're doing native ization do consist are do a lot of frequent pest builds of your project just to make sure it actually runs on a published game not just on the editor so but yeah yeah I really wouldn't suggest it especially if you've ever seen the native ice code it's actually hot readable I hate for me unless you like maybe a really really good developer even if you're a really good developer just trying to maintain that codes probably not I will just rewrite it yeah so yeah but yeah but in a pinch if you're a tech artists that's their Savior I would say all right all right so where did we evolve all right so we've got a VR movement how about let's just simply attach this a different actor which is the boomerang right so you've already seen the importing process assets and then boomerang so not just import that already so I just hate those asterisks so I immediately press control-shift this it's to save everything just my OC yeah alright so I'm just gonna convert this so obviously there's a number of ways to do it but I'm just doing it like really basic way so BP underscore blue BP on the score boomerang so it's placeable so put it under play Sable's if you want to read up about this just look at Al our style guide I'll or yeah so al lar it's a name yeah I'll your how would you pronounce it our our is it all our so he used to do the use of you that reviews for the game jam entries right doesn't do it anymore who does the what's his name again anyways alright so another cool component that unreal has is a rotating movement component I used to actually implement this on my own until somebody tweeted it so it's there so because the engine is quite big unless you know what you're looking for so what I do is I just want that to keep rotating kind of like a boomerang and one of the things if you do it from the editor which is why I wanted to show it that this way and then create a static mesh actor out of it by creating edit blueprint is it won't move like this although I added the rotating movement and the reason for that is by default that is set the static so now it should just rotate alright and that's just a quick way for me to test as well they should be moving alright so let's go back to the PowerPoint slides so if we go back here you could see what we want for this boomerang is to respond to the thumbstick so I press up and down like this left and right it should move with it so it's relatively simple the problem is unreal obviously uses its own coordinate system and there's a and the different controller manufacturers have their own coordinate systems in the way they interpret the thumbstick as well from here you can see we just want negative 1 & 1 which is xn which is y and I'm just I just created this quick graphic here for both the vive the oculus and unreal so you could see that this is why up is Y negative Y negative x positive X for the rift which is what we're using this part is negative Y this is positive Y positive x- x and in unreal it's yeah it's not the best place positive x in here negative x in here positive y in here and i get it boy in here that means we have to reverse the X and the y right if you look at here if you're gonna translate which is which and with the Y since its opposite we'd have to negate it to convert it from negative to positive or positive to negative so it's sometimes handy to have something like this just to see so you'll be good if you like have a printout and then when you're doing a game that you want to support different hardware just to have that as a handy reference especially if you want this kind of movement mechanic the mechanic itself now is like gonna be really simple because we've already done the hard work so what Alex was mentioning earlier about this node so I tend to oops remove stuff that I don't need this wall things clean and performance so to get an actor to accept input you'd want to enable input on it so there and we're doing a single-player game so it doesn't really matter for this case get player controller 0 put that in and that's it so we're basically just enable so this actor will now accept input and then the thumbstick we can find one I'm stick access I guess so we have thumbstick X for the left I'm just gonna use a left one notes and then thumbstick y alright and then we're just going to reverse that form our V our movement mechanic and we have move this actor right so this events by the way when you see an axis value that means it happens it can happen per thick or per frame so that's something that you'd need to be careful of when I see that I immediately say all right the function that comes after that has to go to C++ immediately so and that's why I'm using the C++ version here and basically we split this dropped I guess acceleration will keep it a constant one I'm just gonna cheat here and put a movement there maybe five as well alright so X goes to Y and Y goes to X right based on that diagram I just showed you but Y needs to be flipped so just gonna do a simple negation here you get that a negative one right so we have times negative one all right and we're not gonna do anything with the Zed which is the height for now so if we've done it correctly we should be able to yeah this a bit difficult to download unless you're using it so we should be able to move like this I could have put that bit of cold into the pond itself so a lot of people nowadays I don't like this movement mechanic where I do this and then I move around in 360 but it seems to be quite popular in our day so but yeah so that's why I'm adding it to and a different actor so now I can control that and similarly I could fly while I'm controlling the boomerang right figure out where it is yeah and that just made our lives a lot simpler and also a lot of these things can then be done by a level designer or right any questions so far for a new one nope we're almost there so okay so we've basically what we've basically done is we've created something from scratch from blueprint yes yeah so not sure if I got the question correctly but you could use any of these inputs you could use the thumbstick you could use the triggers to do the movement and just change the let me just open that up like from here let's change the input nodes to whichever you want and there's heaps of them like if I do motion controller all of these things are available in there there is some this should work with in most cases with with oculus rift and the vibe for oculus store sorry with obviously oculus for the oculus store steam is coming up with a new input system which makes it a little bit complicated but epic is trying to add it into the same way like this one but I guess I should talk about it because it's gonna come up in the next release off the engine yeah it's just it defaults to something you know actions and then you have to set then you have to kind of do things manually in the loop in the inputs but for now in the current land in current bjorlin current iteration of the engine it's as simple as this until the steam well until the steamvr input system comes up in public thunder beta at the moment but yeah so alright did I answer her question okay was i all right so we have so we've and then he decided to move completely create a I know we haven't actually so we and then we've reused that C++ code onto a different actor so now let's look at this so we've got most of the pieces of the mechanics right just see except the third one so we've got the 360 here we've obviously got this we haven't haven't done this it's quite simple but this one so we have obstacles and we want them to be floating up and down like this so we want smooth movement for this up and down so if now since your CSUN developers now receive as far as developers the key decision there since obviously you have an event dick and all that's doing is bobbing up and down this is something that you'd immediately want to do from C++ so now an ik itself is quite simple just moving up and down so we'll just we don't have to even prototype it I hope and we'll just immediately create the C++ class alright so we'll create an actor so we created one from blueprints right so now I'm going to create an actor straight from C++ so we call this bobbing actor and we're just gonna give it that bobbing motion up and down okay that class and since it's just a basic actor we should be able to do the hot compile and don't need to restart the editor never comes up alright so times like this all right so now we have a bobbing actor and this time I actually want the pic so we're gonna leave that alone in there okay so we're just gonna leave those alone what do we need for a bobbing actor so we need how fast whether it's going up or down yes so let me just do the macro quickly so you your property is what you're looking for and I want to be able to read and write and I want it to be editable anywhere where if I can type it in nope I'm gonna help me and category I like putting things you're ready so we have blueprint we draw it so you can see that's that for us because it's already an actor what did we say boolean and just give it moves up beginning then once I've typed that all down and get lazy just copy/paste that will need how fast it goes so yeah we call it step and start with one else to do we'd want the map things there we go for this one let's keep it simple it's the same Max and min so we'll keep it as float in max then let's say 50 and so those are the stuff we need we'll then need the function itself and the reason I'm exposing the property easy said Oh sort of when I create a blueprint actor out of the C++ code I can just simply add the level editor can simply edit it from his end without having to go to C++ so then I'm gonna do au function again blueprint callable alright and that's it yeah I guess it doesn't return anything some creative naming here so you're just gonna call it mmm this actor actually you know what we don't even need a function here because we'd want the bobbing actor to keep moving on its own so I'll just put it on event tick it simple and we probably want to keep track every frame where we're at at any given time which current Zed and whether we're moving forward or backwards right so I'm just gonna do private hope I'm not boring a lot of people now so coding alright so its new float current Zed and float current step right okay so he's gonna quickly so for current tap will let's check if we are moving up all right so if we're moving up now means it's positive so our current step should be just simply equal to the step that the level designer wants otherwise we have current step equals to the step bye-bye at one point F all right so now we have a step either it goes up or down and then we'll probably want to update the current Zed right so the current said would be what it is now plus the current step whatever that is a bad frame okay all right and then I want to be able to flip-flop the boolean of moving up or down depending if we reach the max or exceeded the max or exceeded the mean min all right so if we're moving up and the current Zed is greater than the min max right then we'd want it to move down so B is moving up equals to false right else if we let's just do it's a style guide from an epic so if B if it's not moving up and the current Z is less than the min max said times negative one then we'd want to flip it yes so a bit late so I hope I'm not walking this up but yeah already so that takes care of that and now let's actually move the darn thing so teleport to where you will want to teleport it to so the current location their location plus the vector whether you're not doing an upward down so because we want to keep track of these so we're doing just on the said axis right so it's zero point F and the whatever the current step is okay I'd like to keep the actor rotation and that should be it is quickly eyeball that so pretty simple stuff shouldn't say simple if it doesn't work yeah so it's just simply compile that's so hot reloading so I can compile from here or from the editor in this case this but I prefer doing it in Visual Studio I immediately want to see stuff from here so yeah so grab another coffee talk to your boss and say I'm compiling doing productive stuff alright go to Reddit or somewhere okay so it's just a so this is what normally like a lot of the VR developers would do is just create a lot of this stuff and then allow the level designers to use this stuff of in blueprint so I'm just going to create a blueprint based on bobbing actor and put that as a passable right so I'm gonna do and I know I'm gonna make a floating stone and if you did this thing why if I do a sign relate here it should bob up and down yeah just bobbing up and down like that alright so we've done some pretty all of the core mechanics now so what we have is pretty much dev art stuff let's add a bit of thing here it's sorry that's important let's import the rock shard here okay and we want it to be able to be split when hit by the boomerang so you make it destructible so with a new version of the engine it's actually a plug-in now so we're gonna do what was it called a back side thing yes the apex alright it's a built-in one Instructables just enable it and fortunately we have to restart that shouldn't take too long to restart yep so it should just restart that no and what that gives me now is ability to create a disruptive all mesh so if I right-click Sadek mesh I could just right-click on a create destructible mesh and I should be able to so from this simple mesh I should be able to fracture it right just see how it sports like that so now we have something that will explode like that when hit so if I do so now we're seeing a little bit of eye candy it's not much so if I do edit be people things stone and open for blueprint editor and I guess just see if we can make that way back in she do her thing right should just move towards it is it what is it doing ah alright so if you see that happening which is something is good when you have make mistakes or forget things in the demo that means if you look at back to the because there's a number of ways to do it to make it more realistic obviously with code but a really quick one if you're making a game it's just in able to impact damage so it will actually be destroyed when you see so yeah so police simple but when you're in the arts pretty cool especially if you hit that with your surfboard which I've done quite a bit trying to prepare for this session but yeah so then you should have where are we pp folding stone right and at this stage let's put some eye candy in it so at this stage we've got all of the mechanics right so developers job is done level designers come in or they should have been coming in earlier and start putting stuff in so let's just make the so feel free to ask questions because at this stage we're just gonna mostly try to spice up the scene some but there could be some things here that you haven't seen before so if you go to this show engine content it's quite a number of content there even if you don't have the starter content back which I really don't like adding in projects because it's just a lot of extra stuff there and if you do sky let's be here a pinch I'm sorry so this is a static mesh what I'd like to do is it's actually not a placeable but I've just copy that there because I want to make modifications and there's a procedural nighttime sky somewhere yeah so there's some material here called procedural sky I'll put that in there and then copy here I'll move because it's their engine content then now I can safely cop make edits to it so put that in you immediately see some real stuff in there so which is also performance thing is I probably don't want any shadows in there anyway so shadows also obviously especially if it's a dynamic object can take a lot of performance stuff and then if we put the material that we just stole from epic and spoke it in there should have a starry sky now we'll probably don't even need the directional light but let's just keep it maybe that now so two bright went one and it's still too bright for me just okay it's a bit difficult when you have one screen just keep everything black yeah something in their stores they'll keep it as is to play around with the sky brightness you know with the star tiling here like to remove the directional light but the problem is we might not be able to see controllers just to keep it thick okay we just can't keep it with this one because I have another step on top of this I'm leading to towards another thing sorry so what is that casting a shadow all right let's just remove that for now it's knowing all right so this is kind of like the environment that I actually want to get to just pure black with just a star and one of the other mechanics that we kind of just breeze through maybe I should do it now it's just do a simple portal from here and this portal basically if I go back here I'm sorry I want to add a sphere coalition but it doesn't make sense at the moment so let's get one of the assets from the art team and use their vortex just to make it look nicer I go to VP portal and I want to change that static mesh to the one we just had and I will just remove that encho engine content gonna have the vortex in there alright so probably something that I'd want don't still have the right shaders but we just add a sphere component here sorry sphere coalition it's gonna quickly rough that up just so I can show the cold so and this leads to more complex mechanic which is a teleport which we which is outside the scope of this one but I just want to quickly show and for the sphere probably only want the pawn to overlap so if we overlap with the pawn I always prefer having the collision so with VR attend to like creating sphere collisions or capsule to the collisions instead of box they're a lot more mathematically more efficient even though unreal does a really good collisions with meshes can even do complex collisions but I feel they're just way too expensive for VR so with that one of the things is if you're moving an actor from one point to another if it's a huge amount of distance in VR one of the things that a lot of research have found out is you'd like to do a fade in fade out effect and luckily you can do this in C++ or in blueprint but luckily in unreal this is really easy to do so if you do that you say start camera fade you could actually just fade the camera out to one fade to black and then you could do this is where it would have been nice to do a streaming level because it's where I would start streaming the level but not show it and then and then do a fade in and then show that show the actual level but it's just that could be for another session so we just do I even forgot the a start level how to do a basic level now open level I think yeah open level so and we want to do an end map and all that does is it moves us to the end map if the porn actually hits that sphere collision in the center all right and I think we've pretty much got to the just mindful of the time so I'm just gonna quickly rough this up all right so we've got all of the key mechanics level designers comes in now and I'm gonna cheat a little bit now is not really cheat like in the game environment Isis we're all for me like it becomes really magical because once the artists start putting their stuff and it looks starts looking really cool so I'm gonna grab some epic assets so if we selected some epic assets in me and kind of modified it a bit and I'm gonna put it in to the project so this could represent a team and that's why we actually put this kind of a structure so the name so at least you know which one comes from where so this one is pretty clean I'm only using the ones I'm actually using so I'm not actually dumping the whole Paragon assets in there or the who Infinity Blade assets in there I've just we selected some stuff and the way I did that and I found like the easiest way because unreal doesn't have a built-in way of doing it is if you do as a mock-up level put all of your assets and use all the materials you want and put it in that level then open up your real project do a migrate migrate the actual map it will just make great the stuff that it actually uses on that level so that's one quick way of cleaning things up so if you have these two projects and hopefully in some future iteration of the engine that should which there should be something built in because if you start building things with all of these things they'll just be it's a nightmare to build all those shaders in and then you should instantly see a lot of those stuff in there so for let me just see what we've got here where's the boomerang so for the boomerang you got the material for the boomerang and it's gonna start building shaders for the floating stone I probably want to do this from here it's not just on material for a surfboard let's make the portal I think that's the coolest one for the portal once it builds so I'm I have a lot of it a 1080 on it but still not enough for even basic stuff once the shade is built-in I could see a little bit better and we just want to scale that up I guess interesting and once the shaders build you should see a little bit more interesting stuff so with the pond obviously you could do this as well directly from the static mesh itself because it's where are you sir I could also do it for me here but pretty lazy I wish you could see it alright so it's just gonna file shaders for now and this is also um if you like learning stuff right so it's sometimes nice to look at how epic does the shaders just for me something it's not as clean as it should be you could also see that they're human too they make mistakes there's some notes there sometimes when you look at it what the hell yeah alright at least you could see that sometimes in Robo Rico I think there's quite a bit of it you could see some errant nodes there and you could see where a developer or attack artist probably under pressure to publish stuff I've seen some stuff on the engine itself as well before I think one of them was before I was trying to change the IPD for the headset and I did the code Basel II trusted epic and whatever we did was it wasn't working is that because for me my eyesight is pretty good but when I have the project manager tested and saying no it's no good it's not really changing anything so no of course it's changing something because the code is always right right and then ultimately I had to check with two other people and said no it's not working then that's yeah not being lazy I actually looked at the code and somebody in epic hard-coded IPD on to the function instead of actually looking at the API and returning the IPD so that was funny I reported it and they never reply but it got changed for the next iteration or maybe somebody got fired no but but yeah but those are one of the things right because the developer sometimes you trust the code too much especially when it comes from epic so yeah so you start seeing some visual interest and you could obviously with unreal just great like really quickly markup this love was like this they should just bob up and down like in our demo so immediately just by putting you know the eye candy in it that starts actually looking quite good and the only other thing that I did which is some not maybe they're gonna put too much time on now with the floating stone thing is remember the variables that I painstakingly typed in which I would not have done so if you do a C++ right if you click on here and show inherited variables so I like in a construction script you should be able to see those properties come up from the blueprint side and then I'd randomize this so it's very easy so you just drag and drop if I set this I'll just do one here do this I'll just do a lazy random boo done step that step it's not really random but in a pinch that should be random float in range and then you could do some stuff in there and then quickly with just that thing because we're doing 1bp and all of those are just copies they'll just pop up and down like in the video so yeah so in how did i do two hours two hours we've been able to mock up like really quickly even if also hey even when talking about it it's like I'm cheating a it's not gonna move oh yeah yeah it's probably the scale is a bit big all but it looks quite cool inside here I don't know how it looks like now but inside the headset they're so close boomerang go this is why I don't like my rift okay can't even control my own game yeah should probably have that a bit higher I could hit that so I'm gonna use my surfboard but I'm gonna give you guys homework which is we've got we've got a win condition here I'm gonna post the code in github I'm gonna just try the it up and then add those randomization things just to randomize it and make it look pretty for you but so we've done a win condition this the homework is to do a loose condition which is the boomerang right and we're able to destroy stuff with the boomerang we're also able to destroy stuff using the using a surfboard here and fly around but what would be nice is if we hit to have a bit of a penalty the user if you hit the surfboard it slowly cracks up and then once it's gone then you can't move you disable all of your movement so from all of the key concepts if the other day that should be pretty doable yep so just a little bit of a step up but should still be fairly doable and yeah so now I'm just realizing I forgot something which is good to be played this so that won't actually move because I forgot to add a collision inside upon itself I'm going to use a capsule one it's never touch it to the camera this eyeball it skip that 2:22 half-height it's really rough work here but ship it yeah sure the artists will love it pretty diwali you should be able to move to the next level actually yeah yeah so it's pretty yeah so they see that you don't see it the fade to black and I would have done of fade in as well for for this but I would have to use streaming levels for it so but that's a whole different thing and especially if you're working with multiple people at the same time in a in a project that really comes in very handy then and it's also quite nice start seeing things pop up and start becoming beautiful as you're developing things it's really quite cool when you have a team of people doing it alright so yeah so that's pretty much a basic game so it's really that easy to create for develop VR and develop for VR and obviously I prepared for this session although it took us like 1 or 2 hours to do it but really if I did this like really quickly without even talking you would be able to pretty much hit the same time with a bit of debugging and a lot of the mechanics aren't really that complicated a lot of the math especially if you've done a bit of game programming before so it's just translating that to VR you know how it works in VR so what have we done we've set up a base VR project to created a VR porn we added a couple of movement mechanics so pretty simple stuff 6 degrees of freedom with the flight thumbstick thump-thump are driven so you should be able to start playing with that and if you have really cool environments or cool scenes like when I first started be alright I told you okay grab the Star Trek Enterprise and just flew around it it's just really a cool feeling once you start with it and the headsets now we're really quiet cheap I think they're like 300 dollars now is it yeah so and yeah so hopefully with oculus connect five is coming up they might be releasing a new headset this might even come / maybe although that's maybe a different Santa Cruz might be a bit of a different one yeah so if this is something that you just a bit of blogging for we're coming to work for this is something that you're interested in and you'd like to do it like full-time I do have an opening in my team I have a team at the moment of six seven developers juniors and seniors and I need another senior if you're good oh I don't have internet if you're good in C++ good and rendering good in the graphics pipeline whether you have a game engine background or we're more interested in looking at someone who can help us out of things and being loved so it's a skill that we we lack in in our team at the moment we're creating some XR stuff and yeah and we fair repay of the wage specially for this one so I was fully out and post a PDF file of this and I also posted in the in the github page where I'll post the source code and then you can just have a quick click on that link at seek which is still there yeah and I'm sure they've we were expanding also globally so real serious games is expanding globally so it's a really good time to start joining at Lisa I think when that VR development team and I believe always we're always looking for artists especially animators good animators and yep so if you want to keep in touch with social media I have this stuff there my online moniker is Gruenberg so I also publish a free plugin vr plugin which has actually some of this movement mechanic but a lot more generic and a little bit has a little bit more to it than just this it does have a teleport as well and implement a full citizen fermentation of the teleport mechanic and a lot of other things including what I'm particularly proud of is like you can record gestures and cast spells it I use it for oh wait sorry something's that yeah but it's using subtitles where yeah where you have some gestures and you can cast spells and record gestures for it alright so I don't have any backup slides but yeah and that's it for me today to pick up some stuff from there or a little bit yeah any questions final stop otherwise were mostly in unity so at the moment whole team is skilled in unity but we do have enterprise license specially for my team for unreal I've started adding unreal into our pipeline so we're using both now so we're gonna have we're having projects both running in unity and unreal and that's why I say it's exciting especially for the developers because you get the use Bowl especially if you're coming from unity and then learning something new so yeah so you get [Applause] you
Info
Channel: Brisbane Unreal Engine
Views: 3,163
Rating: undefined out of 5
Keywords: Brisbane, Unreal Engine 4, UE4, Game Dev, Game Development, Modeling, Animation, Blueprints, C++, Engine, Code, Community, Development, Epic Games, Epic, Australia, VR, Virtual Reality
Id: zrJLAbTpL7A
Channel Id: undefined
Length: 122min 11sec (7331 seconds)
Published: Fri Nov 16 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.