explaingit

thecherno/hazel

12,980C++Audience · developerComplexity · 4/5Setup · hard

TLDR

Hazel is a game engine built live on YouTube by TheCherno, designed as a step-by-step teaching project so developers can follow along and learn how a real game engine is made from scratch in C++.

Mindmap

mindmap
  root((Hazel))
    What it does
      Game engine from scratch
      Built on YouTube live
      Teaching resource
    Tech Stack
      Cpp language
      Vulkan SDK
      Visual Studio
    Planned Features
      2D renderer
      3D renderer
      Visual editor
    Audience
      YouTube followers
      Game dev learners
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Follow TheCherno's YouTube series and build a real game engine in C++ from scratch, learning each design decision as it is made on camera.

USE CASE 2

Study how a 2D and 3D rendering pipeline is structured in a real engine codebase, including a visual editor called Hazelnut.

USE CASE 3

Use the public repository as a reference codebase for understanding how game engine architecture evolves incrementally.

Tech stack

C++VulkanDirectXVisual Studio

Getting it running

Difficulty · hard Time to first run · 1h+

Windows only, requires Visual Studio 2017 or 2019 and the Vulkan SDK, no Mac or Linux support in the public repository.

In plain English

Hazel is a game engine being built live on YouTube as a teaching project. The creator, known as TheCherno, records every step of development and publishes the videos on his website. The goal is to show viewers exactly how a real game engine is designed and built from scratch, so anyone following along can understand the decisions made at each stage. The engine runs on Windows and requires Visual Studio 2017 or 2019 to build. Setup involves cloning the repository, running a batch script that downloads required tools, and installing the Vulkan SDK (a graphics library) if it is not already present. After that, another script generates the Visual Studio project files so you can open and compile the engine yourself. There are two versions of the project. The public one, in this repository, develops at a pace matched to the YouTube series. A more advanced private version called Hazel-dev exists and is available to supporters on Patreon. The public repo generally takes already-working code from Hazel-dev and re-implements it on camera with explanations. The long-term plan for the engine includes fast 2D rendering, a high-fidelity 3D renderer, support for Mac, Linux, Android, and iOS alongside Windows, native graphics API support for DirectX, Vulkan, and Metal, a visual editor called Hazelnut, physics, scripting, audio, and procedural terrain tools. The short-term goals described in the README centered on building a full 2D workflow so that a game could be designed, tested, and played using the engine's own editor on all desktop platforms. This repository is primarily useful if you are following TheCherno's YouTube series and want to run or study the code alongside the videos. If you are looking for a production-ready game engine, this is not that. It is a learning resource where the journey is the point.

Copy-paste prompts

Prompt 1
I'm following TheCherno's Hazel YouTube series. Help me understand how the renderer abstraction layer connects to the Vulkan backend in this codebase.
Prompt 2
I want to add a simple physics component to the Hazel engine. Show me where existing components are defined and how to add a new one.
Prompt 3
My Hazel build is failing on Windows with Visual Studio 2019. Here is my error output, help me debug the setup.
Prompt 4
Explain how Hazel's entity component system works and how to add a new component type to the Hazelnut editor.
Prompt 5
I want to extend the Hazel 2D renderer to support a sprite atlas. Where in the codebase should I start and what needs to change?
Open on GitHub → Explain another repo

← thecherno on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.