Game Development
Introduction to Game Development
Choosing a Game Engine
Programming Basics for Games
2D Game Development
3D Game Development
Physics & Collision Systems
Audio & Sound Design
Publishing Your Game
Game Design Fundamentals
AI in Games
Multiplayer & Networking
Professional Game Dev Workflow
Building a Portfolio
What is a Game Engine?
A game engine is a software framework that provides the foundational systems needed to create games. Instead of building everything from scratch—rendering, physics, audio, input handling—you get pre-built, tested components that work together.
What Engines Provide
| Component | What It Does | Without Engine |
|---|---|---|
| Rendering System | Draws graphics to screen | 6-12 months to build from scratch |
| Physics Engine | Handles collisions, gravity, forces | 3-6 months to implement properly |
| Audio System | Plays sounds, handles mixing | 1-2 months to build |
| Input System | Reads keyboard, mouse, controller | 1-2 weeks per platform |
| Asset Pipeline | Imports images, 3D models, audio | Weeks of tooling work |
| Scene Editor | Visual level design interface | Months of tool development |
| Build System | Exports to PC, console, mobile | Platform-specific expertise needed |
Why Use a Game Engine?
- Focus on Your Game: Spend time on gameplay, not infrastructure
- Proven Technology: Battle-tested by thousands of shipped games
- Cross-Platform: Deploy to PC, console, mobile from one codebase
- Community & Resources: Tutorials, assets, plugins, forums
- Industry Standard: Skills transfer to jobs at game studios
Unity
Unity is the world's most popular game engine, powering over 50% of all mobile games and a significant portion of indie and AA titles. It's known for its accessibility, flexibility, and massive ecosystem.
Unity at a Glance
| Primary Language | C# (beginner-friendly, powerful) |
| Best For | 2D games, mobile, indie projects, VR/AR |
| Pricing | Free (Personal) up to $100K revenue; Pro at $2,040/year |
| Platforms | PC, Mac, Linux, iOS, Android, PS5, Xbox, Switch, WebGL |
| Notable Games | Hollow Knight, Cuphead, Among Us, Pokémon Go, Genshin Impact |
Unity's Architecture
// Unity uses a Component-based system
// GameObjects are containers; Components define behavior
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
void Update() // Called every frame
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontal, 0, vertical);
transform.Translate(movement * speed * Time.deltaTime);
}
}
Unity Pros & Cons
Strengths
- Easiest learning curve
- Massive Asset Store
- Excellent 2D support
- Huge community & tutorials
- Best mobile deployment
- C# is beginner-friendly
- VR/AR market leader
Weaknesses
- Graphics not as cutting-edge as Unreal
- Pricing controversy (recent changes)
- Performance requires optimization
- UI system can be clunky
- Frequent version changes
- Not open-source
Unreal Engine
Unreal Engine is the industry standard for AAA games, known for stunning graphics, powerful tools, and professional-grade features. Epic Games uses it for Fortnite and licenses it to studios worldwide.
Unreal at a Glance
| Primary Language | C++ (advanced) + Blueprints (visual scripting) |
| Best For | 3D games, AAA quality, realistic graphics, shooters |
| Pricing | Free until $1M gross revenue, then 5% royalty |
| Platforms | PC, Mac, Linux, iOS, Android, PS5, Xbox, Switch |
| Notable Games | Fortnite, Final Fantasy VII Remake, Hellblade, Rocket League |
Unreal's Blueprint System
Unreal's Blueprints let you create game logic visually without coding:
┌─────────────────────────────────────────────────────────────┐
│ BLUEPRINT EXAMPLE │
├─────────────────────────────────────────────────────────────┤
│ │
│ [Event Tick] ──► [Get Player Input] ──► [Add Movement] │
│ │ │ │
│ ▼ ▼ │
│ [Horizontal] [Move Forward] │
│ [Vertical] [at Speed 500] │
│ │
└─────────────────────────────────────────────────────────────┘
Unreal Pros & Cons
Strengths
- Best-in-class graphics (Nanite, Lumen)
- Blueprints for non-programmers
- AAA-quality out of the box
- Powerful level editor
- Source code access
- Great for cinematics
- Strong industry adoption
Weaknesses
- Steep learning curve
- C++ is challenging for beginners
- Overkill for simple 2D games
- Heavy system requirements
- Large project file sizes
- Slower iteration than Unity
Godot
Godot is a free, open-source engine that has surged in popularity. It's lightweight, beginner-friendly, and has no licensing fees or royalties—ever.
Godot at a Glance
| Primary Language | GDScript (Python-like) + C# + C++ |
| Best For | 2D games, indie projects, learning, small teams |
| Pricing | 100% FREE, no royalties, MIT license |
| Platforms | PC, Mac, Linux, iOS, Android, Web |
| Notable Games | Dome Keeper, Brotato, Cassette Beasts, Cruelty Squad |
GDScript Example
# Godot uses a node-based scene system
# GDScript feels like Python
extends CharacterBody2D
var speed = 300.0
func _physics_process(delta):
var direction = Input.get_vector("left", "right", "up", "down")
velocity = direction * speed
move_and_slide()
if direction != Vector2.ZERO:
$AnimatedSprite2D.play("walk")
else:
$AnimatedSprite2D.play("idle")
Godot Pros & Cons
Strengths
- 100% free, no strings attached
- Tiny download (~100MB)
- GDScript is easy to learn
- Excellent 2D capabilities
- Node-based architecture is intuitive
- Open-source (can modify engine)
- Dedicated, passionate community
Weaknesses
- 3D still maturing (improving rapidly)
- Smaller asset marketplace
- Fewer tutorials than Unity
- Console export requires third parties
- Less industry adoption (for now)
- GDScript skills less transferable
Other Engines Worth Knowing
| Engine | Best For | Language | Pricing |
|---|---|---|---|
| GameMaker | 2D games, beginners | GML | $100/year or one-time |
| RPG Maker | JRPGs, story games | JavaScript/Ruby | $80 one-time |
| Phaser | Web games, HTML5 | JavaScript | Free (MIT) |
| Defold | Mobile, small 2D/3D games | Lua | Free |
| CryEngine | AAA-quality visuals | C++, Lua | 5% royalty after $5K |
How to Choose the Right Engine
Decision Framework
What kind of game are you making?
│
├─► 2D Game
│ ├─► Simple/First Project ──► Godot or GameMaker
│ ├─► Mobile Focus ──────────► Unity
│ └─► Pixel Art/Retro ───────► Godot or GameMaker
│
├─► 3D Game
│ ├─► Realistic Graphics ────► Unreal Engine
│ ├─► Stylized/Mobile 3D ────► Unity
│ └─► Learning 3D basics ────► Godot 4
│
├─► VR/AR
│ └─► Unity or Unreal (both strong)
│
└─► Web Game
└─► Phaser, Godot, or Unity WebGL
Comparison Matrix
| Factor | Unity | Unreal | Godot |
|---|---|---|---|
| Learning Curve | ⭐⭐⭐⭐ Easy | ⭐⭐ Steep | ⭐⭐⭐⭐⭐ Easiest |
| 2D Support | ⭐⭐⭐⭐ Great | ⭐⭐ Limited | ⭐⭐⭐⭐⭐ Excellent |
| 3D Graphics | ⭐⭐⭐⭐ Good | ⭐⭐⭐⭐⭐ Best | ⭐⭐⭐ Improving |
| Community Size | ⭐⭐⭐⭐⭐ Huge | ⭐⭐⭐⭐ Large | ⭐⭐⭐ Growing |
| Asset Store | ⭐⭐⭐⭐⭐ Massive | ⭐⭐⭐⭐ Large | ⭐⭐ Small |
| Pricing Freedom | ⭐⭐⭐ Good | ⭐⭐⭐⭐ Great | ⭐⭐⭐⭐⭐ Perfect |
| Console Export | ⭐⭐⭐⭐⭐ Easiest | ⭐⭐⭐⭐ Native | ⭐⭐ Third-party |
Recommendations by Experience Level
Complete Beginner
Recommendation: Godot or Unity
- Godot: If you want the absolute easiest start, no cost concerns, and plan to make 2D games
- Unity: If you want maximum job prospects, more tutorials, and may do mobile games
Intermediate Developer
Recommendation: Depends on goal
- Unity: Building a diverse portfolio, mobile games, VR projects
- Unreal: Want to work at AAA studios, focus on 3D, already know C++
- Godot: Open-source advocate, indie focus, contribute to engine
Professional/Studio
Recommendation: Project-dependent
- Unreal: AAA quality required, large budget, realistic graphics
- Unity: Mobile-first, AR/VR, quick prototyping, diverse platforms
- Custom Engine: Very specific needs, massive budget, long-term investment
Exercise: Engine Evaluation
Goal: Try before you commit—install and test at least two engines.
- Download both Unity and Godot (both are free)
- Complete the "getting started" tutorial for each (2-3 hours each)
- Try to make a square move with keyboard input in both
- Note which editor felt more intuitive to you
- Commit to one for your first project (you can always switch later)