I made the same game 10 times - BEST ENGINE?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
which game engine is the best if we go off of popularity Unity wins but unreal is used by Massive AAA Studios but gdau has taken the heart of Game Dev Community by storm and some people out there might even tell you you don't need a game engine and whether you're a new Game Dev or have 20 years of experience it can be quite difficult to choose which engine you want to marry which is the single most important decision you'll make related to your game there's no absolute winner and the only way you'll find out which one will make you happy is to build something with all of them in today's video will build the same game with 10 different engines including Unity unreal gdau game maker love 2D RPG Maker scratch construct G develop and just python in the process you'll learn the tradeoffs between each of these engines so you can make the best choice for your next project this video was a ton of work so make sure to subscribe and hit the like button then leave a comment below with your favorite engine and I'll choose a few random ones to make fun of next week the first thing we'll do is build a simple Flappy Bird game in just python to see we even need a game engine about once a year in a story I just made up a full-time yapper will go viral saying you don't need an engine at all any expert game developer needs to have a solid understanding of programming but even if you are a programming God building a non-trivial game without one is a recipe for disaster what you'll end up doing is building your own shitty game engine and the last thing the world needs is another game engine to build a game from scratch all you have to do is create a python file and import the P game Library what we want to build here is a Flappy Bird clone where the user can hit a key to make the boat jump until it crashes into the pipes or the ground in addition will save the score to local storage as a kind of mock save system so that when the game ends the high score is displayed pretty simple concept but there's actually a lot going on here like Asset Management physics collisions and data binding to think about one thing that all game engines do and python doesn't is provide a way to bind or connect your assets and UI to the code automatically here we need to grab the assets we're working with from the file system and I can tell you right now this is a very annoying way to build a very complex game as you can see in the code we have a few lines of boilerplate code for the game and below that we have the different Sprites the first thing I'll do is write some code using the Sprite class to leverage its collision and Sprite management functionality for each one of these Sprites now that we have access to them I'm setting up a few objects here to represent the Sprites as a group and the scores we also need a way to spawn pipes at the end of the screen dynamically and for that I'm defining a function called spawn pipe that creates a top and bottom pipe with a random Gap and adds them to the Sprite group in addition to keeping track of the data we also need to update the data every frame and for that I'm defining an update function and every class to update the Sprite and any game logic like Collision detection or increasing the scores when needed and as an added touch I'll save the score to local storage if it's a high score with the save high score function now this is where things get ugly without a game engine in order to run the game we need to manually create a game Loop loop with a while loop then iteratively check for any events that are fired with pi game event get for exiting the game or user input and only then can you fire a call back or update the game logic now a few extra lines of code isn't that bad but the reality is that in addition to this we also need to manually render each Sprite to the screen update them every frame and set the frame rate one final thing to think about is the save system when the game is first initialized what we want to do here is grab the existing high score from local storage if a high score file exists then we return the score and store it in a variable and then we can start the game in main congratulations you just build a Flappy build game in Python but this code is not going to scale complexity very well and there's likely many other features we'd want to add like animations different levels or menus that we would have to implement from scratch that's why developers choose to build their games with an engine first we have Unity which many people would consider the most popular engine because it seems like every indie game and their dog is made with it and I don't mean that in a bad way because un has been used to create very successful games like Among Us and Hollow night it is minimal by Design and uses c as its programming language but itself was developed in C++ it is by far the most popular Engine with almost 40% of developers using it as their primary tool the popularity alone makes it a great skill to learn because there are many employers out there looking to hire unity devs and you'll find tons of resources online to learn from Unity has its official installer called Unity Hub which we can use to create a new project now it's worth noting that there are built-in templates depending on the type of game you're making which will add any dependencies or features the game might need when you open a new project you'll notice it has a main camera and a light object inside a sample scene in unity and most other engines your game is organized as a tree of game objects or node each node encapsulates parts of the game logic and has ways to communicate with each other to add Sprites to your game just drag them into a Sprites folder and then bring the Sprites into your scene hierarchy to run rer them you'll notice that the Sprites aren't positioned properly which can be easily fixed Unity has a way to automatically Implement physics and collision detections to games by adding components like rigid bodies or colliders now to add code add a new C script component to the objects and inside you'll notice two functions called start and update start is called when the object first loads and update is called every frame of the game Loop what we want to do here is access the rigid body of our bird and with the serialized field attribute we can directly assign its value in unity without needing any initialization then I'm going to start writing some code to implement the jump logic by checking for user input with a key down method and then assign the jump Force to the rigid body velocity and move the pipes with transform position and then scale that value with Delta time which is the time between the last two frames ensuring that the movement is frame rate independent but now let's spawn the pipes dynamically by dragging the piper object into a new folder which creates something called a prefab more on that later and now we want to create create a pipe spawner object at the same location or pipes were add a pipe spawner script to it and inside we can now access the pipe object we created because it's a prefab after implementing the spawn logic and start an update I'm going to define the spawn method which creates a new pipe using the instantiate method which takes the prefab as the argument and with the destroy method we can remove them when they leave the screen now we want to add a score to the player and a game over screen which can be easily done by creating a new UI canvas and text smash Pro objects which is unity's package for UI elements and to access these through code we'll create a game manager object and add a new script to it inside I'll begin writing core for updating the score and displaying it and the final thing we need to do here is access the local storage with the player prefs class to save and access the high score can be confusing but in any case Unity is the gold standard for beginners but there's more than one way to get the job done next we have the final boss of game engines and unity's arch nemesis unreal and unlike Unity most of our logic is not written through code but rather its visual scripting solution called blueprint you can use C++ but most of the tutorials you'll find are for blueprint it is the second most popular engine and is Way Beyond anything else for large scale 3D games many famous titles like fortnite pal world and the upcoming sparking zero would made it unreal it's a great option for big teams but maybe a little overwhelming if you're a beginner to start an unreal project open up the editor and select the template you'd like to use that will give us a fairly large project to start with that's already configured with a level create a new level with command n or just go into the menu and click on it then we can create Sprites from the images with Sprite actions create Sprite to create a new player we need to create a blueprint class as a pawn which is a type of object the user can control and to let unreal know this is the player we also need to create a game mode blueprint which sets up the basic settings for the game and then set its default class to the world blueprint from there we can add components like capsules and Sprites to this blueprint just like in unity but to add any game logic go into the event graph and you'll notice the event begin and event take notes which are like start and update in unity and at this point it's just a matter of implementing your logic through the connection of different nodes making unreal approachable to people without a programming background but who are still interested in developing games a 2d game in and real is still in a 3D environment so for many beginners like me it's a lot to wrap your head around but the blueprint system itself is really easy to learn and the best non-coding solution out there by a wide margin developers use it for prototyping new features all the time moving on the UI system is also fairly straightforward and supports data binding which makes setting up something like a simple score system really easy to implement to render it though you have to create a add to viewport node and blueprint at any point you want to display the UI which gives you a lot of flexibility when switching between different UI screens in addition we can access local storage by creating a save game blueprint class if you go inside it you can create a variable for the high score and set up the save system inside the bir class it required a lot of boiler plate to get it running for what would be just two lines of code in programming and for that reason among many others unreal has a higher learning curve than other engines but everything is here for a reason for a game that will scale well and that makes it popular among AAA Studios but to be honest unreal took me the longest amount of time to build this simple game and that brings me to gdo which is an open source engine completely free to use and comes in a package that is approachable to Independent developers it has been rising in popularity over the last few years and is not common as the other two in the wild but is very well loved by the people who do use it and relies on the open source Community for other features objects are defined as scenes and components are nodes to add code to the word scene click on the script button and you can start writing code in C or C++ but most of the tutorials you'll find will be in gd's own scripting language with GD script it has direct access to the engine's apis and is more beginner friendly than either of the other two the ready function is like start and process is like update the engine is really easy to learn and GD script feels like a mix of python and typescript and shouldn't take you too long to start building production quality shitty games like this one to add objects to the level create a new scene then click on the instantiate button to add the bird and set this as the main scene one thing I really liked in gdo is how easy it is to implement something like a Singleton to do that all you really have to do is click on a node and select the access as unique name from the menu which will be indicated by the percent sign and then in our code we can directly access it with the sign as the prefix in my opinion this is the cleanest implementation we've looked at so far and is fairly easy to read if you are a developer who has never used gdo before in their life the drawback though is that the community is much smaller than something like Unity so if you need a specific feature or if you're looking to get a job then you might run into some roadblock and the same goes for all other items we'll look at from here starting with game maker game maker is an engine focused on 2D games sounds good but the pricing model is notorious to work with the free plan only gives you a non-commercial license and to Port your game to consoles you need the Enterprise plan which is over £600 per year or $800 the cool thing about game maker is that their official page has a bunch of tutorials on how to build different games or complex features from scratch and also provides templates to build different types of games when creating a new project other engines do that as well but for most of them it's just an afterthought and the developer experience is usually not ideal if your goal is to build production quality games it's also worth noting that it has its own visual scripting solution similar to blueprint and unreal but if that's what you're going for then unreal is a better choice and because I love learning dumb and useless languages that I will never use I'll be writing my code in gml to begin writing code you need to select an event in the object and program each event individually like the step event the abstractions really simplify trivial tasks like Collision or Edge detection and as far as I can tell this is the game maker way to do things so I just went with it the bottom line is that you get a nicer way to build 2D games without having to be an expert in the underlying implementations with what in my opinion is the cleanest UI out of all the games we've looked at so far and that brings me to an alternate framework that is also focused on 2D games Called Love 2D which is quite similar to P game and is also the first framework where I learned game development it uses Lua as the scripting language which itself is quite similar to python create a new game with a new Lua file and just like py game add each Sprite with love Graphics New Image each file is split into three functions love load which is called at the beginning and love update and love draw which are called consecutively every frame then to render each Sprite use the love Graphics draw function custom methods can be added at the end to implement game logic and to run the game just go into the directory and run love from the terminal at this point the game looks exactly like the P game code but love 2D has functions for update among others which you would have to implement from scratch in Python this is another great option for 2D games if you're just beginning to learn game development and hardvard actually has its own course on YouTube for game development which primarily uses love 2D for the majority of his lectures which is an invaluable resource regardless of whether you're using love or not but now now we're going to move on to a framework that I used even before I learned about programming RPG Maker it's a tool for building RPGs and as you can tell you can't really build a game like Flappy Bird in it the only tutorial I found was a 3-year-old video which implemented it as a miname in the engine regardless it was really just fun to slap around tiles into the world and play a fully fledged RPG right off the bat when I was young and inspired me to actually start making games so you might want to give it a shot it is really Niche specific and I wouldn't recommend it for building serious games it has a decent Community which you can reach out to if you ever hit a roadblock and I've personally seen high quality RPGs made with it in my time but as you've guessed by now at this point I'm just trying to come up with random to justify the video title but in spirit of the video Let's just quickly go over the remaining items starting with scratch it was developed at MIT media labs for teaching kids how to code it's not really a game engine but that hasn't stopped developers from turning it into one so instead of writing code we use these blocks to implement behaviors to objects which act like small chunks of code stack different blocks together and you'll end up with complex behaviors and eventually a full game of Flappy Bird in no time at all the philosophy behind scratch is to teach upcoming programmers the thought process that goes into writing code and coming up with Solutions the right way moving on we have construct which is a completely web- based engine I couldn't find any commercial games made with it but there are a fair amount of tutorials on YouTube although outdated the latest release construct 3 is actually powerful and and really easy to learn for beginners so instead of writing code you add behaviors to object add the physics Behavior to the bird and it will start falling when the game starts from there we can add different behaviors to different objects in our scene to end up with the full game I can't really justify using it over any of the means trim engines but at the same time I've heard enough about it to include it in the list and finally we have G develop which is something entirely unique in that it is a no code engine which we have definitely not seen before on the list it is really similar to const truck where you add behaviors or in this case events to objects but what I really liked is that there are certain events pre-made for you like the platformer event for the bird the platform behavior for the ground then to add any custom logic go into the event and implement the functionality you want and there you have 10 different ways to make the exact same game but the reality is that you don't need to look at any other engines other than Unity unreal or Gau all three have everything you need to build virtually any game and in my opinion just stick to one and start making games until you get really good at it new features are being rolled out into each engine as I publish this video so this video is likely to be outdated by the time you finish watching it the bottom line is that all these engines do the same basic thing it's really just a matter of choosing one that makes you or your team happy if you want to learn any of these engines leave a comment down below thanks for watching and I'll see you in the next one
Info
Channel: Adi Paode
Views: 9,190
Rating: undefined out of 5
Keywords: gamedev, unity, unrealengine, top10
Id: VDhqNVTKuV4
Channel Id: undefined
Length: 16min 22sec (982 seconds)
Published: Wed Jul 03 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.