What is a GAME ENGINE?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Kamath look guys my name is achernar and welcome to my game engine series feels so good to say that this series has been in the making for like two years I'm a finally beginning and today suitably I think we're going to be talking about what a game engine actually is because before we start making one it's probably a good idea to actually define what we're going to be making and over the next kind of few videos we are gonna start planning this game engine specifically so definitely check out those later videos they will come out very soon but first of all before I begin I just want to say a huge thank you to all the patrons who made this series happen patreon accomplish the Cherno is my patreon if you guys want to support me then that would be absolutely amazing because that is what makes this possible and your continued support is very very important to me so huge thank you to everyone because I wouldn't be here without you so it's just so amazing that I can do this because I've wanted to do this for so long and you've given me the opportunity and the time to actually do this ok so anyway in this first kind of set of planning videos as I want to say we're gonna be basically just talking about what a game engine actually is so game engines right they've been around for a while what are they why do we need them do we even need them and what is it that we're actually going to be making in this series so people have very very broad definitions of game engines ranging from everything from like oh it's just something that helps you kind of build games quickly to like full kind of like sweet of like tools that content creators can use to make models and everything like that and I mean if you kind of just go on the internet and search for a minute like what a game it actually is and what examples you'll probably stumble upon engines such as unity or unreal right and those engines are examples of game engines that have been kind of commercialized and kind of I guess released out into the public either for free or kind of on subscription plans or on kind of some kind of royalty agreement right and they kind of present themselves essentially as a set of tools like a one big tool usually like a level editor pretty much in which you can actually build your game it's like a kind of platform pretty much for building an interactive kind of application doesn't even have to necessarily be a game it's just really at its core an interactive application now those are the ones that you kind of see that are out in the wild right because they've been kind of commercialized and publicized I guess as specifically as game engines that is the product the product is the game engine but for a lot of companies it's not even about you know making a game engine that's not their product their product is a game and so we look at all of these video game companies like EA Ubisoft you know whatever Activision Blizzard valve they have their own in-house engines that they've built that never see the light of day as an actual game engine they're not released as a game and no one has access to them outside of the company as a game and they're all internal right but what they do provide is a platform for the staff working on those game teams to actually construct that game to actually build that game so when we think about a game engine what I really want to kind of push for is the idea of it's a platform which you can use to build video games and the term game again is something that I keep coming back to because hypothetical you know realistically speaking it doesn't have to be a game now these game studios their products are games so they do build games with these engines but if you look at something like unreal or unity they can be used for much more than just games they can be used for building VR applications like architectural visualizations even in some cases simulations which again obviously would require a lot of additional code but they could just be used as a way to kind of build an application kind of rendering lifecycle type type of real-time application thing right essentially what I'm saying is if you want an application that displays graphics in real time you could just use unity or unreal to visualize whatever data you have right now on top of that it's not just even about visualization it's also about interaction on a number of platforms even VR right it's a whole kind of platform for you to actually kind of convert the data that you have into a more interactive will kind of oh I guess interactive visual format and that's where my definition of game engines come comes in and I want you to just think about for a minute what it is we're building and what a game engine actually is that's cool right let's simplify this whole thing let's take it down a notch and actually think about well okay good it's a platform to build games but what is it really it comes down to this and before I continue coffee what would we be without coffee anyway where are the damages yes so what is a game engine at school well basically what it is is a or at least its goal is to transform data from one format into another that's what this is all about data transformation right we essentially read in a set of files from disk we take the data from those files and we transform it into something else that shows up on our screens okay that's it and furthermore we almost always provide a way to interact with that data as well but that's really all a game engine is and that's what we're going to be building something that reads data in and transforms it into something that we see on our screens now because of the way I phrased that it's important to realize that at its core that's really what a game engine is it's not a hard-coded kind of program application that just does certain things right if you're building that you're probably most likely actually just building an application or a framework for an application like that what we're building is something that reads files in transforms them and then puts them on the screen and as you know interactive capabilities to that as well that's what we're building and that's really as simple as it is so because of that it's important to realize the game engines are extremely data oriented meaning that the purpose of a game engine is not to kind of create data based on nothing right we're not doing that at any point act like ever right what we're doing is we're just loading existing files now let's focus on the files for a second where are these files coming from what are they how do we make them that is also part of what a game engine is it's a platform to make those files now we call these files assets an asset is just something a file that the game engine actually takes in as input now I did say a file it doesn't have to be a physical file but essentially it's just a bunch of data it could be a virtual file it could be something that the game engine creates while running right that is based on some other asset like an asset it could tell the game mentioned to create another asset for example on the fly that would also be an asset even those on a physical file but what I'm saying is a game engine typically includes a platform a suite of tools that can create these assets right it creates a way for us to actually offer a sets now what I mean by that is picture someone building a level for a game or maybe building a 3d model or texture or something like that an artist or a content creator will actually go in in a game studio structure a content creator will use game engine tools right to actually author those assets now they might make a texture in Photoshop or they might make it make a 3d model in like 3d studio max or Maya or something like that right all blender oh right but at the end of the day they still need to get that model that's pretty model into a format that the game engine can actually receive because for like kind of real serious kind of big game engines it's pretty much never happens that they just take in like you know JPEG or PNG images or like just kind of obj models or something like that that doesn't happen right usually they get built into a format that's custom designed for that specific game engine whether it be textures models levels whatever so typically speaking that content creator would also be responsible for kind of you know turning that kind of model in that third-party format into the game engine format and that's kind of defining everything that needs to exist for that game and to actually do something with that model right because typically speaking game engines probably have more than just the data that is included in a model that's exported from like Maya they might have additional information such as where to place it in the world what kind of other components it might have on it what functionality might have on it right all that kind of stuff so that is essentially what a contact writer does creates content for the game engine so in other words content creators are responsible for authoring assets for the game engine and the game engine reads those assets at runtime and essentially presents something on the screen and presents a way for the user to interact with that and that is what a game is ok so we can break down all the systems of a game engine there are very very very many systems of a game engine it depends on the engine obviously but I'm not even I'm thinking that maybe probably wouldn't even be wise to kind of cover that now we might just do that in the next episode because in the next episode we're gonna kind of go through all the different systems of a game engine and talk about how we're going to design and actually implement them but essentially in order to facilitate this kind of data transformation that we have we need a number of various systems right including like platform abstraction layers if we want out our engine all this data transformation to happen on a variety of platforms whether that be you know desktop based platforms like Windows Mac Linux or like mobile platforms like Android Iowa some console platforms like Xbox Playstation you know Nintendo whatever right we need platform abstraction layers so that our code can kind of run on different platforms and the point of a platform structure layer of course is to taste abstract those platforms specific the platform details away from us so the we can just write code that is generalized for all platforms and then there's many other I'm not even going to get into everything that yeah men didn't have you know we have rendering we have kind of audio we have like filing put out the way of serialization we have just so many different things right that facilitate is kind of dodge transformation and again writing them is going to be quite an adventure so I'm really excited for this entire series but apart from that kind of runtime which takes that data transforms it and puts up on the screen as I said and as interaction to it apart from that you know we also have the actual tools that people use to both of that data initially like a level editor for example is probably I think the the simplest example that most of you have probably heard about or are used to you know stuff like that that's also part of a game engine because without that I mean you're probably going to be stuck actually writing out your levels manually and like simple source code or something like that which obviously isn't going to be very very useful for anyone so game engines a really huge kind of topic they're these amazing kind of engines really that take data transform them but also provide a way to actually author that data and that's what this series is gonna be about this is the first episode first official episode of the game engine series in which we're going to I'm going to along with you guys it's going to be a lot of community interaction a lot of community support as well we're gonna go ahead and we're gonna build a game engine from scratch in C++ and in any in any other languages that we decide we need to use as well like c-sharp for example it's a common one and this journey is going to take a really long time it's gonna be really in-depth I'm gonna treat this as a tutorial series not like as I kind of watch me write a game engine with minimal explanation I'm actually going to teach this as a course pretty much and we're just gonna build this huge system right and one of the reasons the Gammage is exist as well remember is that games nowadays have become so complicated that if we were to do not have that platform to build games upon we would end up building everything from scratch every time think about a team of 200 people making a game like I don't know Grand Theft Auto or something like that right just example to talk my head that's probably way more than 200 people probably like a thousands but anyway right picture them trying to reiterate can I kind of build the same technology over and over again like that's impossible and furthermore engineers like programmers right can't be available for everything that is needed to make a game like that right which is why engineers end up building all these tools that content creators are artists that aren't familiar with programming or engineering can actually use to build all the content because as I just mentioned game engines convert they they transform that data there's assets into something that you see on the screen what are those assets come from right content creators so really when you think about it what is a game well is a game about programming is a game about writing code and doing all that well not really write big scale professional games aren't about that at all they're about taking data and putting it on the screen so that's really all the game engine is doing and that's kind of the point of it the point of it is to say okay enough programming enough writing code to do everything right all we're going to do is design some kind of way for people who aren't familiar with programming to actually create all that data to author elect art of course they will need to be stuff like scripting but don't direct programming right that's kind of the idea of a game engine and of course I am being kind of general in that case there is a lot of actual engineering support required for games but in the ideal case look at something like unity you can make pretty much any kind of non huge scale game with very minimal scripting right because the bulk of the work is just creating systems can take that data and put and position them on the screen at the right time and also kind of cure of different events that might happen and also add that kind of interaction with the user anyway I hope you guys enjoyed this video if you did you can hit that like button you can help support this series I got a patron icon for slash the channel you'll get many rewards such as access to source code early access to videos about a week early as well so all these videos will be up a week early so if you want to watch the second video it's actually already up on patreon so you can just watch that right now but also we have like monthly hangouts on on discord and there's private discord channels and there's just so many rewards that you guys get for helping support this series because it's really important to me that we kind of build this as a community and your support is very important to me I hope you guys enjoy this video I can't wait to see in the next one next time we're going to talk about all the systems that we're going to kind of put into our game engine and then after we kind of get over that initial planning and design stage which I do want to keep very brief because we'll kind of you know what I'm going to sign the whole thing and then I may then start programming what kind of kind of design as we go but we still have to kind of define the scope of this so that we can start in the right place and not end up rewriting quite a billion times so next time we're gonna complain everything in and up to that when I finally create that new project from scratch and get on with this at all I'll cover kind of setting up the environment that you need for this and all that stuff as well so don't worry it's gonna be kind of step by step from scratch every episode I can't wait I'll see you guys next time goodbye [Music]
Info
Channel: The Cherno
Views: 186,604
Rating: 4.9454823 out of 5
Keywords: thecherno, thechernoproject, cherno, c++, programming, gamedev, game development, learn c++, c++ tutorial, game engine series, game engine, how to make a game engine, let's make a game engine, What is a GAME ENGINE?
Id: vtWdgtMo1T4
Channel Id: undefined
Length: 16min 22sec (982 seconds)
Published: Sun Oct 14 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.