1 free read left. Create a free account for unlimited reading + AI research.
Create free accountHey guys, my name is Thomas Brush, owner of Atmos Games. By the end of this video, you're going to have a full understanding of how exactly video games are made. I'll even throw in a secret at the end of this video that took me well 10 years to figure out and has made my career as a game developer so much easier. Now, obviously, there's a ton of different engines to create games with. You've got Unity, Unreal, Go Dot, the list goes on. But believe it or not, video games are made pretty much the same way no matter what engine you're using. Now, to create a game, you take assets, and that's basically just PGs or JPEG images, or maybe 3D models, MP3 files, wave files, really any kind of digital file you can think of. And then you attach a script to that asset. Now, these scripts are basically, I don't know, magical spells that tell the assets how to behave in the world, or what we're going to call the scene. So, for example, I could tell a PNG image to move left or right if the player presses left or right buttons on the keyboard. This is a script interacting with a
asset. Now, any seasoned game developer is going to have a minimum of, let's say, three applications running while they're making their game at all times because they're going to be going back and forth, back and forth between asset creation, game creation, and coding. So making games requires you to have a ton of software open all the time because well you're creating and tweaking all kinds of assets and then incorporating them into a single piece of software. And again that's going to be your engine. That's Unity, Unreal, Go dot game maker. Now there's advantages and disadvantages to all of them but in my opinion Unity is the easiest to learn and is a decent tool in creating indie games and also double A games. So, if you're looking at making a AAA game, I don't know, your dream openw world game, then Unreal might be a better bet. But for now, Unity is pretty awesome. Okay, so how do you create these assets for
your game? Okay, so here's the thing about making games. Creating assets is like 50% of the work. Manipulating them to do stuff in the game is the other 50%. So, for example, if you're making, let's say, a 2D game and you understand Photoshop, you're probably going to spend a lot of time making your game in Photoshop. Unity is only used when you're ready to make that 2D art actually do something. Now, the same is true for all other assets. For example, sounds are edited in Audacity or maybe FL Studio or 3D models in Blender, textures in Photoshop, scripts in Visual Studio. I mean, this is ultimately where most noobs get hung up. They struggle because the amount of tools they're going to learn is frankly kind of terrifying. But here's the good news. If you know how to create just some assets, you're way closer to making games than you think.
Okay, so we create these digital files and then save them into an assets folder. We can then drag them into a new scene. And that's again just basically a blank level in our game engine. Once you've placed a few assets, you can begin controlling these assets with these magical scripts. Got it so far? Now, here's a big problem. What if we want to create a 2D character for our game? Well, we would place the sprite in our game, but we would also maybe want to play some MP3 files with that sprite, but we also want it to collide with the floor in the walls using physics code and maybe also show a font above the sprite. How exactly do we create a single character with all these different digital files? Well, these various digital files or assets, they end up being called components in Unity, and they can be slapped onto an empty container called a game object, or in
Unreal's case, it's called an actor. But for the purposes of this video, we're just going to say game object. Okay. So, let's say you drag a PNG into a scene in Unity. It's not a PNG object. Unity will automatically create an empty container for you. Again, this is called a game object. And this newly created game object will then contain a sprite renderer component on that game object. And that sprite renderer component not only has a slot containing what the actual sprite should be, but also its X and Y flip values, its coloring, and other parameters. Essentially, a game object is a Frankenstein of an infinite amount of component combinations that all have tweakable variables. And we'll talk about variables in a minute. So here are a few examples of game objects. A player game object. This is a player with a single game object that contains a capsule collider component. And that's just an invisible force field component that interacts with the world and
prevents the player from passing through the ground or walls. Okay. So the player game object may also contain something, let's say like a rigid body, which kind of sounds like a collider, but maybe think of it this way. A rigid body makes something interact with gravity. A collider makes it solid. So a UFO, for example, without a rigid body will simply float in place. The player can also contain audio sources that will play sounds. That's a component. It can also contain a text component, a camera component, or even any custom components that you've written. And these are just basically scripts. And you can also include some from your team or maybe some from online forums. That's totally fine. Frankly, these are my favorite. Now, keep in mind you can parent game objects to other game objects. I mean, this essentially means that the parent objects scale, rotation, and position will impact its children. I mean, ultimately, you can have as many children in a game object as you want.
And even the children can have children. You can have a massive family tree inside each parent game object. This makes it so much easier to deactivate entire parts of levels or groups of enemies or move a bunch of objects around in the editor. Okay, so now that we understand game objects, how exactly is the player going to see them? Well, we need to tell Unity what to look at. For example, should it follow the player smoothly from side to side like a 2D game? Or is it first person? Or should it follow from an isometric perspective? Or maybe the camera still like in Resident Evil. This is all handled by something called, you guessed it, a camera. And you can stack as many cameras in Unity or Unreal as you want and just switch them on and off. These cameras are still game objects. They are just game objects with a camera component on them and maybe a script that tells the camera component what to
do or what to look at. Or you could just use the built-in Cinem Machine tool to quickly get the camera to follow the player. No matter what style of game you have, the Cinem Machine tool is actually pretty sweet. Okay, so what about making these game objects, these prefabs actually do something, anything? Well, you do this with those magical scripts. Well, think about your game objects like they're your teenage kids. They need to be guided. They need to be told what to do, how to behave, and what things are okay, what aren't okay, and I guess ultimately what the rules are. Now, sadly, you have to be really clear with how you communicate to your teenage kids because, well, they're super rebellious and they tend to find just about every possible way to break your rules. So your teenage kids in Unity speak C and C++ in Unreal. Now in both cases, both platforms have something called visual scripting. Visual scripting is awesome.
It makes it a lot easier to write code without really writing code. I mean, it's a great idea though to understand how to actually write code from scratch. Okay, so you slap this script onto your game objects and they basically become possessed almost as if by like I don't know a demon. What you're telling the object to do is on a constant loop in their mind. Command will be on repeat forever until you exit play mode. This repeating command will loop in what's called a constant update function. The update function continually tells your game object what to do on repeat. If I say move right in the x-axis one unit over and over and over and over and over and over again, the object will slowly iterate and move to the right. Does that make sense? But what if we want to maybe just tell the game object to do something once like play a burp sound when the game starts? You do this in what's called the start function. Not the
update function, the start function. Okay, so we've got the start function which happens when you start the game and also the update function which is a constant loop over and over and over again kind of like a psychopath. This is ultimately how scripting works in games. Everything else is flowing from this approach. singular one-off functions that get fired once, maybe by starting the game or by firing them with a single player input, and an update function, which is for things like constantly moving the player with a speed or acceleration variable. Wait, what? What's a variable? Okay, so a variable is well, first off, a variable is everything. I mean, without variables, you yourself would not exist right now. You would poof into nothingness. Our world contains variables all around us. I mean, here's an example of a variable. Right now, your dead variable is set to false. That's a boolean variable. That's true or false. Your eye color variable
is blue. That's a string, right? Or maybe it's green or brown. Your age is, I don't know, 28. That's an integer variable. Your height is 5.1. That's a float variable. Basically, just decimal numbers. All right. So you take these variables and you use them inside oneoff functions like start. And in the start function, we can have the position of the player start at the start position variable or the hair color be the color black variable or the health be the start health integer. Or maybe we want to do a one-off function like shoot. It's only going to happen once when the player clicks the mouse. So, the gun animator is going to play the shoot animation. The gun audio source is going to play a sound, the shoot sound at the shoot volume. Or maybe the gun particles will be activated when the player presses shoot. That's all happening inside of a oneoff function called shoot. Ultimately, a
game is a bunch of assets and scripts latched onto a simple game object and moving and behaving based on conditions and player inputs using scripts. Now, here's the secret I wanted to tell you as we conclude. Games generally should not be made from scratch. All assets, including art, music, and even scripts, can be purchased from things like the Unity Asset Store, Turbos Squid, Craft Pics, Epidemic Sound for music, or Artlist.io for sound effects. I mean, the sky's is the limit of where you source your assets. And yes, you usually have to pay for all this, but of course, if you have the money, it's going to save you a ton of time in the long run to just buy licenses to pre-made assets, bring them into Unity, tweak them, and move on. Of course, you want to have a decent understanding of asset creation in general, script writing, and Unity or Unreal. But ultimately, a seasoned and wise developer, and I've been doing this for 10 years, this is exactly what I do.
This developer will eventually take advantage of pre-made assets. Now, obviously, you need to tweak and flip these assets to fit the tone, style, and design of your game. And frankly, that's where the great developers outshine the bad ones. Being able to be economical with sourcing assets and flipping them to be a cohesive style that fits with their brand. Now, if you can do that, you're going to make an awesome
Game development is fundamentally a process of integrating digital assets with logical scripts within a game engine. Regardless of the specific software used—such as Unity, Unreal, or Godot—the core architecture remains consistent. Developers create or acquire assets, including 2D sprites, 3D models, audio files, and textures, which are then organized into scenes. These assets are attached to containers known as game objects or actors, which serve as the foundational building blocks for every element within a game, from player characters to environmental features.
The functionality of these game objects is defined by components and scripts. Components provide specific attributes, such as colliders for physical interaction, rigid bodies for gravity, or audio sources for sound. Scripts act as the governing logic, utilizing programming languages like C# or C++ to dictate behavior. This logic typically operates through two primary functions: the start function, which executes once upon initialization, and the update function, which runs in a continuous loop to handle real-time movement, input processing, and state changes. Variables, categorized as booleans, strings, integers, or floats, are essential for storing and manipulating the data that drives these behaviors.
A critical insight for efficient development is the strategic use of pre-made assets. Rather than building every element from scratch, experienced developers often leverage marketplaces to acquire art, music, and code. The hallmark of a skilled developer lies in the ability to curate, modify, and integrate these external assets into a cohesive, unique aesthetic. By balancing custom creation with the economical use of licensed resources, developers can significantly accelerate production timelines while maintaining the integrity of their creative vision.
The games and companies this document names on the inner ring, other documents about them on the outer one. Select a cover to see it up close and open it in a new tab; drag to move, pinch or Ctrl + scroll to zoom.
Comments