Skip to content

Instantly share code, notes, and snippets.

@dr5hn
Created July 16, 2025 08:51
Show Gist options
  • Save dr5hn/2580e30d4a5b566ea12d7dcf8dde28fd to your computer and use it in GitHub Desktop.
Save dr5hn/2580e30d4a5b566ea12d7dcf8dde28fd to your computer and use it in GitHub Desktop.
Train an AI to play Snake game using Deep Q-Learning - watch it go from terrible to superhuman!

Snake Game AI Project - Complete Learning Roadmap 🐍

🎯 Project Overview & Learning Path

This is a 3-phase project that takes you from zero to AI expert:

  • Phase 1: Learn Pygame & Build Snake (1-2 weeks)
  • Phase 2: Understand AI Concepts (1 week)
  • Phase 3: Build AI that learns to play (1-2 weeks)

Total Time: 3-5 weeks (1-2 hours daily) End Result: AI that plays Snake better than humans!


🎮 Phase 1: Learning Pygame & Building Snake Game

Week 1: Pygame Fundamentals

Day 1-2: Pygame Basics

Learning Resources:

  1. Official Pygame Tutorial: https://www.pygame.org/wiki/tutorials
  2. Real Python Pygame Guide: Search "Real Python Pygame tutorial"
  3. YouTube: "Pygame Tutorial for Beginners" by Tech With Tim

Core Concepts to Master:

🎯 Day 1 Topics:
- Installing Pygame: pip install pygame
- Understanding the game loop concept
- Creating a window with pygame.display
- Handling events (keyboard, mouse, quit)
- Basic drawing: rectangles, circles, lines
- Color systems: RGB values, named colors

🎯 Day 2 Topics:
- Coordinate system (0,0 is top-left)
- Moving objects with keyboard input
- Frame rate control with pygame.time.Clock()
- Collision detection basics
- Sound loading and playing

Hands-on Practice:

  • Exercise 1: Create a window that changes color when you press keys
  • Exercise 2: Make a rectangle move around with arrow keys
  • Exercise 3: Bouncing ball that bounces off walls
  • Exercise 4: Simple "catch the falling objects" game

Day 3-4: Snake Game Foundation

Game Design Planning:

🎯 Game Requirements:
- Grid-based movement (not pixel-perfect)
- Snake grows when eating food
- Game over when hitting walls or self
- Score tracking
- Simple restart mechanism

🎯 Technical Components:
- Snake representation (list of coordinates)
- Food generation (random positions)
- Direction handling (prevent reverse movement)
- Collision detection (walls, self, food)
- Game state management (playing, game over)

Step-by-Step Building:

Step 1: Grid System

  • Understand why Snake uses grids (20x20 pixels per cell)
  • Convert between pixel coordinates and grid coordinates
  • Draw grid lines for visualization (optional)

Step 2: Snake Structure

  • Represent snake as list of (x, y) coordinates
  • Head is first element, tail is last
  • Movement = add new head, remove tail
  • Growing = add new head, keep tail

Step 3: Basic Movement

  • Start with snake moving automatically
  • Add keyboard controls for direction change
  • Prevent snake from reversing into itself
  • Handle edge cases (multiple key presses)

Step 4: Food System

  • Generate food at random empty positions
  • Detect when snake head touches food
  • Remove food and grow snake
  • Generate new food immediately

Day 5-7: Complete Snake Game

Advanced Features:

Game Over Logic:

  • Wall collision detection
  • Self-collision detection
  • Game over screen with score
  • Restart functionality

Polish & User Experience:

  • Score display during gameplay
  • Different colors for head vs body
  • Smooth game speed (not too fast/slow)
  • Visual feedback (screen flash on game over)

Code Organization:

  • Separate functions for different tasks
  • Clean, readable variable names
  • Comments explaining complex logic
  • Easy-to-modify constants (colors, speeds, sizes)

🧠 Phase 2: Understanding AI Concepts

Week 2: AI & Machine Learning Fundamentals

Day 1-2: Core AI Concepts

Learning Resources:

  1. 3Blue1Brown Neural Networks: YouTube series - visual and intuitive
  2. Crash Course Computer Science: AI episodes
  3. Khan Academy: Intro to Algorithms

Key Concepts to Understand:

What is AI?

  • AI vs Machine Learning vs Deep Learning
  • Different types of learning: Supervised, Unsupervised, Reinforcement
  • Why Reinforcement Learning fits games perfectly

Neural Networks Basics:

  • Think of it as a "digital brain" with connections
  • Inputs → Hidden Layers → Outputs
  • Learning = adjusting connection strengths
  • No need for complex math yet, focus on intuition

Reinforcement Learning Concept:

  • Agent (AI) takes Actions in Environment (game)
  • Gets Rewards for good actions, penalties for bad ones
  • Goal: Learn to maximize total reward over time
  • Like training a pet with treats and corrections

Day 3-4: Game AI Specifics

How AI Learns Games:

State Representation:

  • What information does AI need to make decisions?
  • Snake example: Where is food? Where are walls? Where is snake body?
  • Convert visual game into numbers AI can understand

Action Space:

  • What can the AI do? (Go straight, turn left, turn right)
  • Keep it simple - fewer actions = faster learning

Reward Design:

  • +10 points for eating food (good behavior)
  • -10 points for dying (bad behavior)
  • 0 points for normal moves (neutral)
  • This teaches AI what to pursue and avoid

Day 5-7: Deep Q-Learning Intuition

Understanding the Learning Process:

The Q-Learning Concept:

  • Q = "Quality" of taking an action in a state
  • Learn Q-values: "How good is turning left when food is ahead?"
  • Always choose action with highest Q-value (usually)

Exploration vs Exploitation:

  • Exploration: Try random actions to discover new strategies
  • Exploitation: Use known good strategies
  • Balance: Start exploring (90%), gradually exploit more (10%)

Experience Replay:

  • Remember past games and learn from them
  • Like studying from your mistakes and successes
  • Prevents AI from only learning from recent games

Neural Network Role:

  • Learns to predict Q-values for any game state
  • Input: Current game situation
  • Output: Quality score for each possible action

🤖 Phase 3: Building AI That Learns

Week 3-4: AI Implementation

Day 1-3: Environment Setup

Modify Snake for AI Training:

Key Changes Needed:

  • Remove human input, AI provides actions instead
  • Add state extraction: Convert visual game to numbers
  • Add reward calculation: Immediate feedback for AI
  • Speed up game: Remove rendering delays for training
  • Reset functionality: Start new game automatically

State Information for AI:

What AI needs to know:
- Is there danger straight ahead? (True/False)
- Is there danger to the right? (True/False)  
- Is there danger to the left? (True/False)
- What direction am I facing? (Up/Down/Left/Right)
- Where is food relative to me? (Left/Right/Up/Down)

Total: 11 simple True/False or directional values

Environment Interface:

  • reset(): Start new game, return initial state
  • step(action): Execute action, return new state + reward + done
  • render(): Display game (optional, for watching)

Day 4-6: Neural Network Implementation

Understanding the Network Structure:

Network Architecture:

Input Layer: 11 neurons (game state)
Hidden Layer 1: 256 neurons (pattern detection)
Hidden Layer 2: 256 neurons (decision making)
Output Layer: 3 neurons (action values)

Key Components to Implement:

DQN (Deep Q-Network):

  • Neural network that learns Q-values
  • Takes game state, outputs action quality scores
  • Updated using training data from game experiences

Agent Class:

  • Manages the AI decision-making
  • Stores game experiences in memory
  • Handles exploration vs exploitation
  • Trains the neural network

Memory System:

  • Store recent game experiences
  • Sample random experiences for training
  • Prevents overfitting to recent games

Day 7-10: Training Process

Training Loop Implementation:

Episode Structure:

For each training episode:
1. Reset game to start
2. While game not over:
   - Get current state
   - AI chooses action (explore or exploit)
   - Execute action in game
   - Get reward and new state
   - Store experience in memory
   - Train neural network on batch of experiences
3. Record episode results
4. Adjust exploration rate
5. Save model if it's the best so far

Training Monitoring:

  • Track scores over time
  • Monitor exploration rate decrease
  • Watch for learning plateau
  • Save best performing models

Hyperparameter Tuning:

  • Learning rate: How fast AI learns (0.001 is good start)
  • Exploration rate: Start high (1.0), end low (0.01)
  • Memory size: How many experiences to remember (100,000)
  • Batch size: How many experiences to learn from at once (32)

📊 Learning Progression & Milestones

Expected AI Performance Timeline

Episodes 0-200: Random Chaos

  • What you'll see: Snake moves randomly, dies quickly
  • Average score: 0-10 points
  • Learning: AI is pure exploration, building experience database

Episodes 200-500: Basic Survival

  • What you'll see: Snake avoids walls more often
  • Average score: 10-30 points
  • Learning: AI discovers that dying is bad, staying alive is good

Episodes 500-1000: Food Seeking

  • What you'll see: Snake occasionally moves toward food
  • Average score: 30-70 points
  • Learning: AI connects food-eating with higher scores

Episodes 1000-1500: Strategic Movement

  • What you'll see: Snake consistently finds food, longer games
  • Average score: 70-150 points
  • Learning: AI develops efficient pathfinding strategies

Episodes 1500-2000+: Advanced Play

  • What you'll see: Snake makes complex decisions, avoids traps
  • Average score: 150-300+ points
  • Learning: AI discovers advanced techniques (spiral patterns, etc.)

🛠️ Development Tools & Resources

Essential Tools Setup

Code Editor Recommendations:

  1. VS Code (free, excellent Python support)
  2. PyCharm Community (free, powerful for Python)
  3. Sublime Text (lightweight, fast)

Useful Extensions/Plugins:

  • Python syntax highlighting
  • Code formatting (autopep8)
  • Git integration
  • Terminal integration

Development Environment:

# Create project folder
mkdir snake_ai_project
cd snake_ai_project

# Create virtual environment (recommended)
python -m venv snake_env
source snake_env/bin/activate  # Linux/Mac
snake_env\Scripts\activate     # Windows

# Install packages
pip install pygame torch numpy matplotlib

Debugging & Testing Strategies

Common Issues & Solutions:

Pygame Problems:

  • Import errors: Check pygame installation
  • Window not appearing: Verify display initialization
  • Slow performance: Reduce window size or simplify graphics

AI Training Issues:

  • Not learning: Check reward system, lower learning rate
  • Learning too slowly: Increase learning rate, check exploration
  • Memory errors: Reduce batch size or memory buffer

General Debugging:

  • Add print statements to track AI decisions
  • Visualize training progress with matplotlib
  • Save and load models to avoid losing progress
  • Test individual components separately

🎯 Project Milestones & Checkpoints

Week-by-Week Goals

Week 1 Checkpoint:

✅ Pygame basics understood ✅ Simple moving objects created ✅ Basic Snake game playable ✅ Comfortable with game loop concept

Week 2 Checkpoint:

✅ AI concepts clearly understood ✅ Reinforcement learning intuition developed ✅ Snake game modified for AI training ✅ State representation designed

Week 3 Checkpoint:

✅ Neural network structure implemented ✅ Training loop working ✅ AI showing initial learning signs ✅ Training metrics being tracked

Week 4 Checkpoint:

✅ AI consistently outperforming random play ✅ Training visualizations created ✅ Model saving/loading working ✅ Final AI significantly better than human baseline


🏆 Success Metrics & Portfolio Value

How to Know You've Succeeded

Technical Achievements:

  • AI achieves average score > 100 points
  • Training process clearly visualized
  • Model saves and loads correctly
  • Code is well-organized and commented

Learning Achievements:

  • Understand neural network basics
  • Can explain reinforcement learning to others
  • Comfortable with Pygame for future projects
  • Confident with Python for AI applications

Portfolio Impact:

  • Impressive demo video showing AI learning
  • Well-documented GitHub repository
  • Technical blog post explaining the process
  • Foundation for more advanced AI projects

This project perfectly combines game development, artificial intelligence, and data science - making it an ideal showcase of modern programming skills for university applications or job interviews!

Remember: The goal isn't just to build working code, but to deeply understand each component. Take time to experiment, break things, and rebuild them. That's where the real learning happens! 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment