PlanetGen is a runtime C++ plugin (with full Blueprint support) for Unreal Engine 5 that generates streaming procedural spherical terrain — a full planet you can fly around, land on, and explore. Async chunk streaming, layered 3D noise, biome blending, foliage, water sphere, and radial gravity, all without blocking the game thread.
Includes a ready-to-use jetpack character (BP_JetpackCharacter) with full planetary gravity — walk on the surface, jump off, fly around, and land anywhere on the sphere. Reparent your own character to ACLMPlanetCharacter and gravity works automatically.
Drop ACLMPlanet into your level, assign a material, and click Preview Planet. Hit Randomize for a new world.
0.1 Cube-Face Sphere Terrain Explained
0.2 Noise Layering & Biome Blending Explained
0.3 Biome-Aware Vegetation System
──────────────────────────────
CORE FEATURES
──────────────────────────────
Spherical Streaming Terrain — Cube-face parameterization divides the sphere into 6 faces, each streamed as a grid of chunks. Actor pool recycles chunks at runtime — no spawn/destroy overhead.
3D Noise Sampling — All noise is sampled in 3D world space, ensuring perfectly uniform terrain on every face with zero equatorial stretching. No distortion at the poles or seams between faces.
Async Mesh Generation — Geometry built entirely on a thread pool. Game thread is never blocked.
Layered Noise Stack — Stack up to N noise layers. Layer 0 acts as a continental mask controlling where mountains appear vs flat plains. Built-in presets: HighDetail, Smooth, Mountains.
Custom Noise Library — CLMNoise is a lightweight, purpose-built noise engine supporting Perlin, Simplex, Cellular, Ridged Multifractal, and Domain Warp. Tuned specifically for planetary terrain — no overhead from unused noise types, no third-party dependencies.
Radial Gravity — UCLMPlanetaryMovementComponent replaces the default CharacterMovementComponent and pulls the player toward the planet center every tick. Gravity activates within a configurable GravityRadius and scales with GravityScale (1.0 = Earth, 0.165 = Moon). Auto-finds the nearest planet at BeginPlay, or assign manually.
Playable Planet Character — ACLMPlanetCharacter is a ready-to-use Character subclass with planetary gravity wired in. Reparent your own Blueprint to it and gravity works immediately. Includes BP_JetpackCharacter — a demo character with a jetpack for flying around and landing on the planet surface.
Blueprint Interface — IPlanetInterface exposes GetPlanetRadius, GetGravityRadius, GetPlanetCenter, and GetSeed to any Blueprint or C++ class without a direct reference to ACLMPlanet.
Biome Blending — Vertex color blend weights for Grass / Rock / Snow / Underwater. Plug directly into any landscape material.
Beach Layer — Configurable height band above sea level is flattened and assigned a sand blend weight baked into UV1.x. Sample TextureCoordinate(1).R in your material to drive a beach/sand layer.
Foliage System — BiomeFoliageAsset data assets drive HISM scatter on the thread pool. Per-mesh density, height, slope, scale, clustering, and collision. Same data assets as WorldGen flat terrain — configure once, use on both.
Dense Grass System — WorldGenGrassAsset data assets drive ISM ground cover at high resolution. Slope-aware instance sinking, surface normal alignment, per-chunk random jitter.
Procedural Water Sphere — Smooth UV sphere at sea level. Configurable subdivisions (default 64) for silky-smooth appearance at any planet scale.
Seed and Randomize — Every planet is seeded and deterministic. One click generates a completely new world. Seed is exposed so you can save and share specific planets.
ACLMPlanetSunSky subclass — Optional subclass with full SunSky integration. Requires SunPositionCalculator plugin (bundled with UE5). Assign your SkyAtmosphere and VolumetricCloud components in the Details panel — radius and cloud altitude auto-configure to match your planet on Preview Planet.
Editor Preview — CallInEditor buttons (Preview Planet, Clear Planet, Randomize Planet) rebuild terrain without entering Play mode.
──────────────────────────────
TECHNICAL HIGHLIGHTS
──────────────────────────────
Full Blueprint Support — All properties are Blueprint-readable and writable. PreviewPlanet(), ClearPlanet(), RandomizePlanet(), and UpdateGravityDirection() are Blueprint-callable at runtime.
ProceduralMeshComponent-based geometry
Cube-face parameterization — equal-area distribution, no pole distortion
3D noise sampling — zero equatorial stretching on any planet size
No third-party code — CLMNoise is original, license-free
Fully exposed parameter categories with tooltips and clamped slider ranges
Seeded RNG per chunk — deterministic foliage placement
Compatible with WorldGen flat terrain foliage and grass data assets
ACLMPlanetCharacter — ready-to-use Character subclass with planetary gravity wired in
──────────────────────────────
INCLUDED
──────────────────────────────
Full C++ source
Pre-built planet material (M_Planet) with biome blending wired up
Water sphere materials (M_Water, M_WaterSimple, MI_Water)
Sample foliage data asset (DA_FoliageTrees — trees, pine)
Sample grass data asset (DA_Grass)
Sample tree and pine meshes with materials (SM_Tree, SM_Pine)
Sample grass mesh with material (SM_GrassClump)
Sample jetpack mesh (SM_Jetpack)
BP_CLMPlanet — Blueprint subclass of ACLMPlanet for easy editor configuration
BP_JetpackCharacter — Demo character with jetpack and planetary gravity
PlanetMap demo level — fully configured planet ready to Preview Planet out of the box
──────────────────────────────
PERFECT FOR
──────────────────────────────
Space games, planetary exploration, sci-fi survival, alien world prototypes, and any project needing a fully streaming spherical planet with real terrain, gravity, and biomes — without writing cube-sphere math, noise systems, chunk management, or gravity code from scratch.
──────────────────────────────
ADDITIONAL NOTES
──────────────────────────────
Requires the ProceduralMeshComponent plugin (bundled with Unreal Engine 5, enabled by default).
ACLMPlanetSunSky works with any actor that has a SkyAtmosphereComponent and VolumetricCloudComponent — assign them in the Details panel. Compatible with the built-in SunSky actor (SunPositionCalculator plugin, bundled with UE5) but does not require it.
Foliage and grass data assets are fully compatible with the WorldGen flat terrain plugin — one set of assets works on both flat and spherical terrain.