Game Development

Game development is software engineering with an unusual constraint: everything must finish in about 16 milliseconds, sixty times a second, forever. That single requirement reshapes every decision downstream — why games favor data-oriented layouts over deep object hierarchies, why garbage collection is treated as a hazard, why simulation and rendering are separated, and why "correct but late" is a bug.

The other defining trait is breadth. A shipping game touches real-time rendering, physics, audio, input, networking, asset pipelines, tooling, and platform certification. Engines like Unity, Unreal, and Godot exist to absorb most of that so a team can spend its time on the part players actually experience.

TL;DR

The Frame Budget

Featured Topics

Engines

Gameplay Architecture

Graphics

Multiplayer

Common Questions

Which engine should I start with?

For a first project, Godot or Unity. Godot is small, free, open source, and has the shortest path from "empty project" to "something moves on screen" — especially in 2D. Unity has the largest tutorial and asset ecosystem, uses C#, and is the industry default for mobile and mid-size 3D games. Unreal has the strongest out-of-the-box rendering but a heavier toolchain and a C++ codebase; it pays off on visually ambitious 3D projects and less so on a solo 2D game. Choosing "wrong" costs far less than not shipping — every engine teaches the same fundamentals.

Do I need to write my own engine?

Almost certainly not, unless engine work is the goal. Writing an engine is a valuable education in systems programming, rendering, and memory management, but it is a different project from making a game, and it defers everything players see by months. The common exception is a small, tightly scoped 2D game built on a framework rather than an engine — libraries like SDL, raylib, or Bevy give you a loop and a renderer without the editor.

How much math do I need?

For 2D: vectors, basic trigonometry, and linear interpolation get you a long way. For 3D: add matrices, dot and cross products, and quaternions for rotation — you rarely derive them, but you need to know which operation you want and why gimbal lock happens. Shader work leans harder on vector math and interpolation. Most of it is learned on demand, driven by a specific problem, rather than up front.

What actually makes a game run slowly?

Different things on each processor, which is why profiling before optimizing matters more here than almost anywhere else. On the CPU: too many per-object updates, cache misses from pointer-chasing object graphs, and garbage collection pauses. On the GPU: too many draw calls, overdraw, expensive fragment shaders, and oversized textures. On memory: asset bloat and allocation churn during gameplay. A game that stutters and a game with a low average frame rate usually have completely different causes — frame-time graphs tell you which you have.

Is multiplayer hard to add later?

Yes, and this is the most common expensive mistake. Networked games need a clear authority model, deterministic or reconcilable simulation, and a separation between "state the server owns" and "state the client predicts." Retrofitting that onto a codebase that assumed one local player usually means rewriting the gameplay layer. If multiplayer is in scope, design for it from the first prototype. See Multiplayer Netcode.

Learning Path

Beginner

Build a complete, tiny game — Pong, Breakout, a one-screen platformer — in Godot or Unity. Finishing is the skill being practiced.

Intermediate

Learn the game loop and fixed timesteps, collision and physics, state machines for AI, and basic shaders. Ship something with a menu, save data, and an ending.

Advanced

ECS and data-oriented design, custom render passes, netcode with prediction and rollback, procedural generation, and platform-specific performance work.

Related Hubs