Lumberyard Game Engine Revisited

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello this is Mike again from scratch and today we're going to take a quick second look at the lumberyard game engine from Amazon now I looked at lumberyard very briefly right after Amazon released it and a few things have happened since so I decided to take another quick look at it now if you've never heard of it lumberyard is a fork of the CryEngine game engine a long time ago basically Crytek the first time we're running out of money which they've sort of done again but when they're in a whole bunch of trouble that Amazon came in and bailed them out and as a result that gave them a whole lot of money and in return they got a really big perpetual license for the cry tech cry engine now cry engine is probably the also-ran of triple-a game engines it's been used by a couple of commercial games such as Ryse son of Rome Crytek of course or trisys sorry of course neck warrior online star citizen was probably the most famous in development title which has since moved over to lumberyard it's a beautiful engine but it's always had its weaknesses first off the support has been awful the documentation has been terrible so since then Amazon has taken over they put a lot of resources behind it and their big push and their big idea behind lumberyard is to try and push game developers towards their other services now Amazon also purchased twitch so one of the big things are doing here is trying to integrate twitch in here they've also got a number of online services things like uh s3 ec2 basically Amazon is the number one cloud services provider so what they want to do is provide cloud services for game developers and that sweared lumberyard comes in basically it is free to use as long as you use their online services for your online component which is a pretty sweet deal so the question is is lumberyard worth using well this new release has a couple of things going for it now first off the big thing the thing that I'm looking at today is they released a huge starter game to get you going on it was made in correspondence with climax studio the people behind Silent Hill chatter memories and Assassin's Creed chronicles series basically they created the starter game template for developers to work with and this is a nice development because while frankly the resources you've got to learn the lumberyard game engine are pretty terrible still so this is another big resource it's a pretty much full-featured game and it gives you the ability to really do a deep dive now at the same time they've made a lot of changes to the lumberyard a lot of things have been deprecated basically the old visual programming interface is going away their old ways of you know controlling entities in the scene are going away and instead they're going to a you know pretty much ubiquitous component entity system like most of the rest of the game engine industry so I'm gonna take a quick look at that today now another thing I really liked about this release is they've changed their setup process now back when lumberyard was first released it was a pain in the ass to install this guy you had to do a bunch of SDK installs before you can order the tools or plugins even stuff that you weren't using get to download and install it like in download and install the power VR SDK on your own need to download some Nvidia tools etc is a real pain in the butt now the lumberyard setup assistant has a one-click option which I've already done it comes out to about 15 to 16 gig installs by no means is it small but it is easy it will automatically download and configure and install everything you need and if you want to come back in here you can also go ahead and change what you want to do with the number your game engine for example I don't have the source code installed or the source code for the pipeline the editor and all those things so this isn't an open source engine but you do get all of the source code and that kind of will make sense if you stop and think about it it's not an open source project but you have the source code available for you to modify for your own use unfortunately there is no Visual Studio 2017 support you'd also come down here and install the various plugins if you need them so if you're using Maya Mac's Photoshop etc they've got all of the tools available now the nice thing that they've done we changed it from when it first started out is you can now import FBX files so if you're working with any kind of art asset that supports FBX you can now import it into lumberyard which is a big deal based off the original release you are pretty much screwed if you didn't use one of the platform's that was supported out of the art pipeline so now you can use blender or cheetah or moto or various other content creation tools to work with the lomito game engine so that's a nice development there now this is the new starter project in action and you can see it's actually a pretty impressive demo now one thing that nobody is ever going to say about the Crytek engine or cry engine or in the case of lumberyard nobody is going to call it ugly this is not an ugly game engine not at all and this is the new game basically that they've created for you so um I'm running around the editor right now using typical washed keys but you'll see I can right-click and interact with entities within the scene scripts oh man these like it whoops flew through the world let's get back out of the world all right so see I got blue crate here you see over here the properties come up and that's where we come into the new system so you see over here we've got the various different entities that are available so door pickups bird flocking particle manager for example and go down here you can see all the different things that pit that make it up so with the particle manager selected over here under the entities you see over here these are the components that make it up and we'll get into that in a second just to show you a little bit more of this actual game engine in action I'm running this on a laptop a lash generation GeForce mobile carnatic not a piece of crap by any means but you see I'm pulling a constant 60 frames per second I was running this today on battery actually in Michigan hour-and-a-half battery life out of running the game engine which is actually pretty impressive when I first started working with Unreal Engine I would get about 40 minutes tops so it's actually not as resource intensive as you might expect so let's go ahead and run this game so ctrl G and now we're actually in game mode for the game and get an idea this is the starter game that is now included with it so you can see all the resources that go together make this we'll go back into that in a second so here I will go ahead and run around c22 the movement is a little clunky but you get a pretty good idea what we're dealing with so we're starting off inside of this room as you can see it very very pretty you see from our logs we're getting some invalid subscript errors as we go but the fidelity of CryEngine games are lumberyard games they are very beautiful and this is something that you are getting full assets and control over so here where is where we were a second ago run on down here I think there's a couple of enemies so this is the newly available demo that they've made with full assets and source code for you to jump into I will go through those resources in a second as soon as I get myself killed here so I think left shoots now the game itself isn't incredibly polished but it is rather complete so it does give you most of what you need to get going which is a good thing because as I said earlier on the documentation for this guy is it's atrocious to be honest now it is getting better and we see if anything I appear to be lobbing like a watermelon Oh switch weapons where the other guy go but there is all right die alright and with that I'll exit out so you see over here here are the various different resources and assets available to us so we've got you know the AI scripts the various different scripts that go together to control this guy our level we've actually only got a single level going on here we've got our various textures that go in here so there's our terrain textures for example you see instant preview the normal maps etc where are our models objects so there's characters Jack you see here is the Jack model no no I didn't get a preview there hmm what I thought that would work so there you see those we saw those guys hanging on the way out so you can see they've given you all of the resources you need for a full game you got various different effects already created for yourself like uh runnin effects there's the textures that went into making them all of the pin the bits and pieces that go together and make a game here are again the scripts that go together and control the game now you'll notice here the scripts are da lua file so we'll look at this in a second basically a the game engine itself is C++ the documentation on creating your own C++ version game is a bit minimal but basically you bind out to Lua and you can basically do all your game scripting in Lua now they did use something called flow graph which was kind of like um Unreal Engine blueprints but one-tenth the Polish level it was a really kind of ugly visual scripting system so they've gone ahead and replaced that out which is a good thing now we're the same game open I'm gonna actually just go ahead and switch it to a simple level that I created and when I say simple I mean sample but I will show you the component model in a little bit more detail so this is the other aspect that is new so I'm not going to save my changes here so this is an empty level with one entity in it so I created an entity it is entity 1 and you know what I'll go ahead and I'll recreate the entity so let's go ahead delete this guy and I'll show you from the very beginning so now they've moved to this entity component model so let's go ahead and we'll create a new entity so there we go we current entity 1 by default the entity just has one component attached to it which is a transform one that allows you to be position in the world so here you can see where it is in fact being transitioned go ahead and add a component to it here you can see we got all these different kinds of components that are available out of the box so we've got for example Network physics controller so we could add a rag doll to it or a mesh Collider to it we got rendering components here for like area Lighting's point Lighting's etc it is a pretty straightforward and nice system so it is a definite improvement over what used to be there now you'll notice on the topic of what used to be there when you come in here and look at the tools you're going to see all these things basically either is preview that's the new way or legacy so flow graph for example is that visual programming system they used to use its marked as legacy because it is ultimately going to be deprecated going away so used to do everything in this roll up bar this used to be the way everything was done into these different tabs and and for some reason if you're working with legacy code you're still gonna be using this guide the the new replacement is so much nicer so in the long run this is going to be a better solution so we got our entity here that I created I couldn't rename it to I don't know I'm just gonna leave it as amputee but I'm gonna go back to add component we're gonna add a mesh so this is a static mesh so span that out a little bit and now we're just going to go ahead and add an asset to us so pick an asset and then we're going to go into so we're just in the the objects from that starter game that we're in now one of the things that sucks about lumberyard this goes back to crying in itself is you can actually only have one project active at a time so you have to go back and say okay here is my new project that's what creates this this hierarchy here and it's actually under the directory structure of the crisis engine so if you want to go ahead and download this starter game you actually extract the content out it's about a two gigabyte file and you extract over top of your engine install it's kind of a gross hack and then when you're actually ready to go ahead and change which one you're working on so you've got multiple different projects under your directory you come up here and actually switch between them so starter starter game here is the newly downloaded one kind of gross to be honest and then they've also got this gems here this is a plugin system this is the other big thing that lumberyard has been adding on top of the crisis the CryEngine game engine lumberyards are kind of sorry gems are like um plugins you could say that integrate and support you know mostly web services so you've got things like access to the amazon's game lift servers so yeah here's a camera gem chat and play a cloud canvas this is where they've been putting a lot of their support is these various different effects and the extensions etc in-app purchases so they've got this plugin system they've named gems and you can go ahead and embed new supports is a cool thing is we've got things like open via our OS VR support added this way bring in sky clouds rain snow but what we did here was basically I'm gonna do none of that but it's back in the project configurator so this is the guy that you used to say okay my currently active project is this and all of your resources and actions and everything need to be in those subfolders so when I go into my crisis install folder everything needs to be there somewhere so the dev lumberyard so here is my lumberyard install when I got that download so it was available here the PC started game you open it up and basically you extract that dev folder over top of this dev folder and it creates the sub hierarchy so you can see there's the starter game so everything needs to be underneath your cry engine or your lumberyard install which is a little hacky and you switch what is currently active with this guy so a bit of a new there but yeah so anyways I'm back here these are the subfolders within that hierarchy that I was talking about so my active project is this starter project that underneath that I got the started game various objects etc this does correspond directly to the file system which I think I just so your starter game and then you'll see so start a game and then textures we come back over here and look you see start a game and then say start our game oh it's looking for static meshes right it's looking in very specific directions so let me go on back to what I was doing um so go to weapons rightful sure we'll bring in a row I'm not the FBX file the config file so there we just brought a gun into the world so I'm going to zoom in there is our new gun file and so that is how you bring an entity into the world and we can move it around so confined to an individual axis which is currently not actually doing there we go so then you got your standard transforms along this line so that is how you actually the new relationship so you've got entity is at the top level thing and they are built out of components now we're probably coming in as okay well how do I script good question that is also a component so you come in here go to script and we can attach a Lua script now you'll notice we can also do flow graph still but again it's Marcus legacy that means it's deprecated and going your way plus if I'm honest flow graph was kind of ugly so I don't think I would recommend it in the first place anyway so we attached our Lua script and go ahead and now we need to attach a Lua script here I created one earlier about the simplest script you can create and we'll go ahead and attach it in now now as I said earlier the documentation for the scripts is very very very minimal but I'll show you probably the best way to go about learning how things can work so now that we've got that attached I'm going to go ahead here and this going to open it up in the Lua editor so here we are we're in the Lua editor you can use this it's got syntax highlighting but I can't get code completion which is a little annoying now the cool thing is I am now hooked up to the editor it came from if will not click this guy and connect it back to the game engine what this does is a live hook between the two and what's very important there is it gives you these class preferences if this class reference system showing just come on up here and go to view class preferences and that's how you're going to figure out pretty much everything so you see here this is a list of globally available classes so my code here I'll see if I'm getting Terry up so here is some very simple code going on the nice thing is you can set breakpoints debug real time jump through when you're working on your code but let's look at this very very simple example so I'm creating a local table for my script and I've defining the properties that are there so if I basically said I see I can add a value like so as a property into my properties of Ray I think I may have screwed up my code there let me just check see if that worked out right and then now you'll see some int is now available as a property bound back to the editor so you can very easily expose your code back and forth between the two now let's go on back we don't actually need any properties to this examples let me just go get rid of that but that's how you can basically expose your code to the editor itself and you'll see here we've created the two big guys you're going to have right off the hot as if these two callback functions one is on activate and the other one is on deactivate and they're called bury consistently the first one is when your game is created the last one is when your points are when your script is created and then one it is destroyed and then finally at the end of your script basically return an instance of it now what you're probably seeing here is in our on activated we're calling this function called debug log now where the hell did I come up with this debug well that's where these classes come in really handy because again the reference material the API reference is terrible so you come on in here and you can see here is the globally available classes so there is the bug and then you see here log and that's kind of in all honesty the majority of your best source of Lua API information now the majority of your code actually isn't going to work with these these globally available classes although obviously there's handy stuff in here such as math functions your debugging function as you saw here etc but where you're really going to be going is these buses now bus is a basically integration back to C++ code this is where you link the two together now what I've done here for example is I've connected to the ticket bus now how the hell are you going to figure out that you need to use the tick bus trial-and-error mostly now if you go through a couple of other examples you go through basically some of the script code from this example right here so you come into scripts and you look at a couple of things like Jack has the name of your robot here's your camera controller script you come into here into this guy so if I open that guy up should open in the editor anyways you come on it will show you the code they used and you're going to learn a lot of this via sprayed up trial and error but what I've done here basically is I've hooked into the tick bus and the tick bus is going to be basically this is your game loop this is um every time the game runs it's going to fire off a tick event and you're also going to subscribe to the tick bus basically say connect me to it now if I look down here so tick bus is available data tick bus right there I'm going to be mostly working with buses and now it's going to say notify on tick so this is the name of the on call this is the function basically the callback function the tick bus is going to call after you've connected it to your object so you'll see here I've implemented the on tick method and then all I'm doing basically is debugging out that it tick a curve so I go back and we'll run our game here control G and you'll see down there on the bottom left hand corner you see our console was rapidly updating I'm not sure why it stopped I may have scrolled out at the end of the console but basically that's what that is it's basically every pass through the event loop that particular code is going to be called and you'll come back here you're going to notice there's all kinds of these buses or various different callback so there's the camera request bus and then broadcast get saw you could call off these methods on it so get the field of view so this is how you would say what is the field of view for the camera or we can have these callback function or methods that you actually implement if you're going the other way and that's how the majority of your scripting works your entity bus over here so on and to the activated on entity deactivated game entity context request bus light component request bus so everything in the game every object on one end basically has these buses and then you've got these broadcasting messages and then you've got these event message so what you can do is something like light component request bus dot and this as long as there is wear Co completion would be nice very nice get and yen etc or if we go back into like an example that they're using let's see if they've got some of these buses being called area here's the call to transform bus so transform bus event get world TMR the transform matrix of the world of the entity camera and everything is basically all entities are identified by their ID their event of Eid in you by default will have an event I event ID assigned to you so it's through this system that here you see another cry character physics request bus event dot request velocity for this guy's event ID and then fill the velocity value in there so all of your call backs the C code is basically using these buses is it intuitive not particularly but once you've figured it out and once you figure out what you know what the damn buses are then you can make sense of it in a hurry but again that is hands-down the weakness of lumber Europe now they are working very actively to improve this aspect of their documentation so that's nice hopefully we get code completion in here that will go a long way towards good if I could just sit here and Boop's yeah just minimize you anyways if I just sit there and you use dot you know self thought and then find all the different buses available very very handy but I do really highly recommend what you do is you make sure you connect to your editor and then go through these global classes EBUS --is and global variable lists and then you'll have an idea of the code that is available for you to call what is available in each one of these things and then you get an idea of what you're dealing with but there is going to be a lot of trial now now there is documentation on every single one of these things but basically it will boils down to one or two lines of text tops and not a really great navigation and no hook back into this so you basically have to have a web browser open all within a single page or you have to do a ctrl F to find the event and then you're just going to get one sentence description anyways so again the documentation is definitely one of those areas they need to improve on now what is cool once again is this newly created starter game it does show you an insight into the various different systems available you've got you know a full functioning game to work from and all the corresponding assets so you're probably in a better place that we were before it was released so if this is an engine that is of interest to you I would definitely consider checking it out now I still don't think I recommend this guy to a smaller team like again you can create some amazing graphics in CryEngine or lumber your game engines but I don't see the appeal of this over using a unity or an Unreal Engine or a Godot at this point maybe for a larger team or if graphics fidelity is your number one priority but the cost in return is a hell of a learning curve a smaller community by quite a margin now of course if you are at the point where you're you're realistically physically going to be shipping a game the economics that by far and away lumberyard has the best cost return of the you know between unreal and unity being completely and utterly free except for from the networking side of things and then you're basically paying for usage on server side so the value proposition is definitely there but for a small team that you know is trying to get up to speed quickly god this one's a bit of a fight now it does get better it the the changes they're making they're this entity set up the component system it's all definitely an improvement it is a step forward and so in time I think lumberyard will be a much more approachable better engineered game engine but right now it certainly isn't accessible to the - mob to the majority now the cool thing again they are making sprites the Installer isn't a fifty six step process now a one-click installer potentially so that's the kind of stuff they need to keep focusing on that's the stuff that makes this engine accessible to the masses but until they really nail that documentation component while they're learning curves of but again I thought I'd take a look at the lumberyard again available they just released 1.9 a few weeks back and then just yesterday they released this new starter game and the starter game is the only piece of documentation that is you know up-to-date and modern using this new system using Lua instead of flow graph so a lot of the examples that you've got with the lumberyard engine up to this point we're already basically outdated so this does give you an avenue for exploring so I thought I would do an updated video on that hope you did find this useful I hope you enjoyed it if you did please do click like and we've got all kinds of game developer related stuff here so if you're interested please do hit that subscribe button now I don't know if I intend to cover lumberyard in much more depth if I'm honest again the the missing pieces are definitely frustrating that my entire learning experience was trial and error I would often come across actual documentation that contradicted itself or was just wrong and when I'm talking about coming across documentation there is like almost nothing but on the flip side of that that might be you know I should be creating some tutorials for this guy because it's needed so I don't know where I stand on that one I'm I'm not sure I should put any more coverage into this but please do let me know if you're interested in in using lumberyard you know despite there being alternatives that are probably a little better suited for you at this point and you would like to see me do some beginner oriented material on it please do let me know and I will definitely consider it I do like the fact that you know you a mere mortal can install it now and it doesn't take you a day and a half so it does make it much more accessible to a lot more people which is the biggest reason I did not work with it before so that is definitely an improvement there do let me know in the comments down below alright that's it for now see you later good bye
Info
Channel: Gamefromscratch
Views: 33,877
Rating: undefined out of 5
Keywords: Lumberyard, GameFromScratch, Game Engine, Review, Tutorial, CryEngine, Amazon, CryTek, 3D, Game Development, Game Programming
Id: zNYMLtnlt2I
Channel Id: undefined
Length: 27min 17sec (1637 seconds)
Published: Wed May 17 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.