How are computer games actually made?


For example, a game like Witcher 3: Wild Hunt. I cannot grasp how someone sits at a computer and comes out with that beautiful representation of a real world. What is the actual work and tools that make it happen?

In: Technology

Take yourself step by step through gaming history.

How do you make pong with a computer? Well, it’s just two lines with x and y coordinates with a dot going back and forth with incredibly basic physics and collision detection on a ~32×32 pixel grid. You write some simple code to compare the coordinates of the “ball” to that of either of the “paddles” to determine collisions, and the edge of the screen for scoring.

How do you make pac-man with a computer? Similar deal, only you’re using actual graphics of little ghosts and pac-man instead of individual dots then moving them around a grid and adding simple AI causing the ghosts to kinda chase pac-man, and when you pick up a special dot, switching the state between attacking ghosts and you being able to attack them, and points. Instead of determining the coordinates of a single dot, you’re dealing with the boundaries of each ghost/pac-man.

How do you make super mario bros? Build off of those two things, add some more advanced logic with determining where you’re standing (since if any part of mario is on a ledge he won’t fall off) and make the graphics better. The level is bigger than the screen, so you need to figure out how to make it “scroll”. The “Grid” of pixels is also much larger

How do you make Super Mario World? Build off of that further in all of the ways described.

How do you make Mario 64? That’s the next big step. Instead of 2D graphics and x and y coordinates for everything, now you have a third z coordinates. Instead of things scrolling and essentially a “camera” moving in 2 dimensions, now you have a “camera” moving in 3 dimensions.

From there, it’s mostly just layering graphics and physics improvements on top of everything else which requires more and more and more graphics, processing, and storage requirements.

Oversimplification but pretty accurate.

With few exceptions, it’s not a single person sitting at a computer pouring out the code.

Start off with a game engine. There are a few big jobs of the engine. One is to figure out all the things the player can see. The software pretends there’s a camera at some coordinate location then calculates all the things they can see including the ground, walls, objects, other players, enemies, etc. Then this goes through a bunch of matrix math (often done by the graphics card) to compute how to render it to your screen. Lighting goes through this too, as simulated light sources affect the textures of things around them, so the engine has to provide ways to illuminate your world so the player can see.

Another big job of the engine is to determine the physics. You attack an enemy, shoot a projectile, run into a wall, or just about anything else, and the engine will determine what if anything affects the various characters. This tells the software not to allow the player to run through walls or that their shot hit an enemy so the game can figure out what that means and how to deal with that.

The engine provides a starting point. You have programmers who specify how objects may interact with each other. You have modelers who create the virtual representation of things for the engine to render. You have animators who specify how those models stretch and bend to display actions. You have sound people create effects and music for your game. You have voice actors who record the thousands of lines that may be voiced throughout the game. You have testers to play through various parts of the game over and over and over to try to find ways to break it so that programmers can address issues that arise.

Guiding all this are leads who coordinate the different groups. They create and maintain the overall goal of what the game should look like and what steps the various teams need to accomplish to reach it.

Usually there is a design group and a programming group, and a few managers. The managers decide what the game should be, from art style to genre they decide everything. The design group works on making assets, such as 3D models and textures, while the programming group is divided ino smaller groups that work on their each individual part, such as main menu, or a songle level or basic game mechanics. For example a smaller group can be given the task to make a workong main menu while another one works on making the character be able to for example shoot. But of course, the programming teams don’t allways have all the 3D models that are needed ready, for example the group responsible for codong the character movement may not have a character model at the start, so they just use a placeholder model that might be a square that just glides around the game map. When the models and all the other assets are done they just swap it out with the placeholders.