
Get a first look at the procedural hex-based planet generation engine you'll build throughout this course. This overview showcases the finished project, introduces the core systems you'll create, and explains how Unity, Blender, and C# come together to build a reusable framework for procedural planet generation.
Get an overview of the course before diving into development. This introductory article covers the recommended prerequisites, software used, project workflow, and the procedural systems you'll build while creating a reusable hex-based planet generation engine in Unity and Blender.
Learn the development workflow used throughout the course and why not every script is intended to become part of the finished project. This lecture explains how temporary helper scripts automate repetitive tasks, preprocess data inside the Unity Editor, and establish a solid foundation before the game ever runs, resulting in cleaner code, improved performance, and a more maintainable procedural generation engine.
Create the hex-based sphere that serves as the foundation for the entire planet generation engine. Starting with an icosphere in Blender, you'll learn why a sphere cannot be constructed from perfectly uniform hexagons alone, explore the role of the twelve required pentagonal cells, and use Blender's modeling tools to generate a clean, gap-free mesh that's ready for use in Unity.
Export your Blender model as an FBX and establish an efficient workflow for working between Blender and Unity. You'll learn how to organize your project by separating editable .blend files from the exported game assets, configure important FBX import settings, and understand how Unity treats FBX files as prefab-like objects that can be unpacked and modified throughout development.
Transform the planet mesh into thousands of individual hexagonal and pentagonal cell objects ready for use in Unity. You'll learn how to separate faces into loose parts, assign each cell its own object origin, and prepare the mesh for object placement, procedural generation, and the systems we'll build throughout the rest of the course.
Build the Cell component that serves as the foundation for every polygon on the planet. You'll learn how to use temporary helper scripts to automate repetitive setup tasks, convert mesh normals into rotations, organize each cell into a reusable hierarchy, and store the references and data needed to support procedural terrain generation, asset placement, and the systems developed throughout the remainder of the course.
Create the terrain materials that will define the different regions of your procedural planet. You'll build a reusable material library for water, plains, forests, mountains, and snow, then apply the initial water material to every cell, establishing the starting point for the procedural terrain generation systems developed throughout this section.
Create the core data structures that drive the procedural terrain generation system. You'll define terrain types using a public enum, build the CellData class that stores references for every cell, and learn how enums can be used to efficiently map terrain types to Unity Materials, forming the foundation for the terrain generation algorithms that follow.
Create the first procedural terrain generation algorithm by randomly planting land seeds across the planet. You'll write the SetSeeds() method to select random water cells, convert them into plains, and establish the starting points from which islands and continents will grow in later lectures.
Create a reusable neighbor map for every cell on the planet by automatically discovering and storing neighboring cell indices. You'll write a helper method that analyzes the distance between cells, builds each cell's neighbor list, and prepares the data needed for procedural terrain growth, region generation, and other systems that rely on efficient neighbor lookups.
Create procedurally generated islands by expanding outward from randomly placed land seeds. You'll build an island growth algorithm that identifies neighboring water cells, maintains a dynamic frontier of expandable land, and continues growing each island until the desired land-to-water ratio is reached.
Create a simple development rig that makes it easier to visualize and test your procedural planet throughout the course. You'll build a looping camera orbit animation, smooth the animation for seamless playback, and implement a quick scene reload using Unity's Input System and SceneManager to speed up testing and iteration.
Visualize the procedural terrain generation process by converting the island growth algorithm into a Unity coroutine. You'll control how frequently the algorithm updates, watch continents grow one cell at a time for easier debugging and experimentation, or generate the entire world instantly by disabling the frame delay.
Transform the terrain generation engine into a flexible, data-driven system by building a modular terrain rule framework. You'll replace hard-coded generation logic with reusable terrain rules that define seed counts, coverage, and terrain transitions, making it easy to generate islands, forests, mountains, snow, and entirely new terrain types using the same procedural algorithm.
Create the first low-poly environmental assets for your procedural planet using Blender. In this lecture, you'll model a stylized tree and mountain, establish consistent scale and naming conventions, and prepare reusable assets that will later be duplicated, varied, and placed procedurally throughout the world.
Complete the initial asset library by modeling a low-poly house in Blender, then export your models to Unity and create reusable prefabs for procedural placement. You'll also see how the cell hierarchy automatically aligns objects to the planet's surface, making it easy to position assets upright with a simple transform reset.
Place environmental assets procedurally by extending the terrain generation engine with a modular asset placement system. You'll create reusable terrain asset definitions, control placement density with configurable coverage values, randomly select prefab variations, and automatically orient each asset to the planet's surface during generation.
Refine your low poly assets before creating variations by cleaning up topology, optimizing geometry, correcting scale, and applying a shared color atlas material. You'll learn an efficient workflow for assigning colors with UVs, organize materials for Unity's external material system, and prepare reusable asset templates for procedural generation.
Create multiple house and mountain variants by combining color palette changes with simple mesh edits in Blender. You'll use proportional editing to reshape existing models, expand a small asset library into a diverse collection, and control the rarity of special variants such as snow-capped mountains for more natural procedural generation.
Create natural-looking tree copse variants by combining grouped trees with subtle changes in scale, rotation, color, and composition. You'll learn how to build organic asset clusters, introduce rare features such as boulders to break repetition, and maximize visual variety from a small collection of reusable procedural assets.
Create a separate outline mesh that aligns perfectly with your procedural world. You'll generate clean polygon borders in Blender, prevent z-fighting, configure the FBX for Unity, and prepare independent outline meshes that can be toggled or assigned their own transparent materials.
Merge the outline meshes into your existing cell hierarchy using a temporary helper script that automates the process. You'll wire outline references into each cell, preserve the reusable project structure, and add runtime controls to toggle the grid on and off.
Complete the project by removing temporary helper scripts, consolidating material references into the terrain asset system, and cleaning up the codebase now that the procedural world has been fully constructed.
Have you ever wanted to build your own procedural planet generator instead of relying on third-party assets or expensive plugins? In this course, you'll build a complete hex-based planet generation engine from the ground up using Unity, Blender, and C#.
Rather than focusing on a single procedural effect, we'll build the project one system at a time. Every major feature is developed step by step, explaining not only how it works, but also why it was designed that way. By the end of the course, you'll have a reusable foundation that you can continue expanding into your own games and projects.
We'll begin by creating a spherical hex-based planet mesh in Blender before bringing it into Unity, where we'll transform it into a fully procedural world. Along the way you'll separate individual polygon cells, generate continents and islands, build modular terrain generation systems, procedurally place environmental assets, and create polygon outlines that can be shown or hidden independently from the terrain.
You'll also learn practical development techniques that go beyond procedural generation itself. Throughout the course we'll write temporary helper scripts that automate repetitive tasks such as wiring together thousands of object references, building data structures, preparing scene hierarchies, and configuring the project inside the Unity Editor. These workflows allow expensive setup operations to be performed once during development instead of every time the game starts.
Rather than hardcoding generation logic, you'll build reusable systems that make it easy to add new terrain types, regions, assets, and gameplay features in the future. You'll also learn how Blender and Unity work together as part of a streamlined workflow for creating and maintaining procedural content.
By the end of this course, you won't simply have a planet generator. You'll have a reusable procedural world generation framework that can serve as the foundation for strategy games, city builders, simulation games, survival games, or any project requiring procedurally generated hex-based worlds.
Whether you're an indie game developer looking to build your own engine or a Unity programmer wanting to deepen your understanding of procedural generation, this course will provide practical techniques and workflows that you can immediately apply to your own projects.