
Opis
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, spatial climate biomes with polar ice caps, player-following grass and foliage, a water sphere with live size preview, SunSky atmosphere integration, and radial gravity — all without blocking the game thread.
Includes a ready-to-use jetpack character (BP_JetpackCharacter) with full planetary gravity — walk 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.
Documentation
Playable demo
Preview 1.2 - 50km Walkable Planet
Preview 1.1 - Atmosphere
Preview v1.0.1
0.1 Cube-Face Sphere Terrain Explained
0.2 Noise Layering & Biome Blending Explained
0.3 Biome-Aware Vegetation System
1.0.1 Planet Gravity
──────────────────────────────
CORE FEATURES
──────────────────────────────
▸ Spherical Streaming Terrain — cube-face parameterization splits the sphere into 6 faces, each streamed as a grid of chunks. An actor pool recycles chunks at runtime (no spawn/destroy overhead). A memory guardrail (Max Chunks Per Face) caps the pool so a large radius can't exhaust memory.
▸ 3D Noise Sampling — all noise sampled in 3D world space for perfectly uniform terrain on every face. Zero equatorial stretching, no pole distortion or face seams.
▸ Async Mesh Generation — geometry built entirely on a thread pool. Game thread is never blocked.
▸ Layered Noise Stack — stack noise layers where Layer 0 is a continental mask controlling where mountains appear vs flat plains. Presets: HighDetail, Smooth, Mountains. Compiled and cached for fast sampling.
▸ Custom Noise Library — CLMNoise supports Perlin, Simplex, Cellular, Ridged Multifractal, and Domain Warp. Purpose-built for planetary terrain — no third-party dependencies, no license obligations.
▸ Spatial Climate Biomes — an optional temperature x humidity model places every point in a Tundra / Boreal / Desert / Tropical matrix. Each biome sets its own snow line, rock line, grass density, and desert sand, bilinearly blended with flat, distinct interiors. Temperature follows latitude (cold poles, hot equator) blended with noise; the climate noise auto-scales to the planet radius. Deterministic and seam-free across chunk borders.
▸ Polar Ice Caps — a latitude-based cap forces snow down to the shoreline (and slightly below sea level) and removes beach/sand poleward of an adjustable Polar Latitude, independent of the climate noise — clean white caps every time.
▸ Biome Blending — per-vertex color weights for Grass / Rock / Snow / Underwater plus a shoreline beach band (UV1.x) and a separate arid desert-sand weight (UV1.y). Seamless normals and a PlanetCenter-driven radial slope mask work for planets placed anywhere. The included M_Planet wires it all up.
▸ Climate Filter Matrix — every foliage entry and grass asset carries a multi-select climate-biome mask (Tundra / Boreal / Desert / Tropical), so cacti only spawn in deserts and pines only in boreal zones, picking a cell of the full biome matrix.
▸ Radial Gravity — UCLMPlanetaryMovementComponent pulls the player toward the planet center every tick. Activates within a configurable GravityRadius and scales with GravityScale (1.0 = Earth, 0.165 = Moon). Auto-finds the nearest planet, or assign manually.
▸ Playable Planet Character — ACLMPlanetCharacter has planetary gravity wired in; reparent your Blueprint to it and gravity works immediately. Includes BP_JetpackCharacter with a full flying animation set.
▸ Blueprint Interface — IPlanetInterface exposes GetPlanetRadius, GetGravityRadius, GetPlanetCenter, and GetSeed to any Blueprint or C++ class.
▸ Foliage System — PlanetGenBiomeFoliageAsset data assets drive HISM scatter on the thread pool. Per-mesh density, height band, slope, scale, jitter, clustering, grow-in-shade, view distance, climate-biome filter, and collision. Master Enable Foliage toggle.
▸ Player-Following Grass — PlanetGenGrassAsset data assets drive dense ISM ground cover in a disc that follows the player, fully decoupled from chunk loading so there's no hitch crossing chunk borders. Re-scatters on movement and uploads on a per-frame budget, so big jumps fade in instead of spiking. Slope-aware sinking, normal alignment, jitter, clustering, and climate-biome filter.
▸ Per-Instance Collision Bubble — each grass asset has a Collision Range, so one asset shows a wide visual field while only instances near the player carry physics (e.g. a 150 m bubble inside a 1 km radius). The bubble follows the player. Optional cast-shadow toggle (off by default) for a big performance gain.
▸ Procedural Water Sphere — smooth UV sphere at sea level with configurable subdivisions. Preview Size (Water Only) rescales just the water sphere to gauge planet size with no terrain generation, updating live as you change the radius. M_PlanetWater uses Single Layer Water so volumetric clouds render over the ocean from space.
▸ SunSky Integration — ACLMPlanetSunSky auto-configures atmosphere, clouds, and sun shadow distance to the planet. Assign your SunSky actor to one slot; its SkyAtmosphere, VolumetricCloud, and DirectionalLight are found and matched to the radius automatically, live in the editor. Sun Shadow Distance drives the Virtual Shadow Map clipmap range so shadows reach across the planet.
▸ Seed and Randomize — every planet is seeded and deterministic. One click generates a new world; the seed is exposed so you can save and share specific planets.
▸ Editor Preview — CallInEditor buttons (Preview Planet, Preview Size, Clear Planet, Randomize Planet) rebuild terrain without entering Play mode.
──────────────────────────────
TECHNICAL HIGHLIGHTS
──────────────────────────────
▸ Full Blueprint support — all parameters Blueprint read/write; PreviewPlanet(), PreviewSize(), ClearPlanet(), RandomizePlanet(), and UpdateGravityDirection() 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
▸ Async chunk streaming with an actor pool and a memory guardrail
▸ Spatial biomes from low-frequency temperature/humidity 3D noise — deterministic and seam-free, auto-scaled to planet radius
▸ Player-following grass scatter, decoupled from chunk load, with a per-frame upload budget
▸ Per-instance grass collision bubble and optional cast-shadow control
▸ Single Layer Water material for clouds-over-ocean from space
▸ No third-party code — CLMNoise is original, license-free
▸ Fully exposed parameter categories with tooltips and clamped slider ranges
▸ Seeded RNG — deterministic foliage and grass placement, stable across chunk borders
▸ Installs alongside other CodeLikeMe plugins (WorldGen, CityGen) in one project — all types and headers uniquely prefixed
──────────────────────────────
INCLUDED
──────────────────────────────
▸ Full C++ source
▸ Pre-built planet material (M_Planet) with biome blending, desert sand, and the planet slope mask wired up
▸ Single Layer Water material (M_PlanetWater) plus alternatives (M_Water, M_WaterSimple, MI_Water)
▸ Sample foliage data asset
▸ Sample grass data assets
▸ Sample tree, pine, grass, and desert cactus meshes with materials (SM_Tree, SM_Pine, SM_GrassClump, Cactus)
▸ Sample jetpack mesh (SM_Jetpack)
▸ Biome surface textures (grass, rock, sand, snow with normals)
▸ BP_CLMPlanet and BP_CLMPlanetSunSky Blueprint subclasses
▸ BP_JetpackCharacter — demo character with jetpack, flying animations, and planetary gravity
▸ PlanetMap and PlanetMap_Atmos demo levels (the latter with SunSky, atmosphere, and volumetric clouds)
──────────────────────────────
PERFECT FOR
──────────────────────────────
Space games, planetary exploration, sci-fi survival, alien world prototypes, and any project needing a fully streaming spherical planet with real terrain, climate biomes, gravity, grass, and foliage — 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).

















