Skip to main content

CE Procgen

CE.Procgen provides deterministic random, noise, and layout generation tools for synchronized procedural content.

Quick Start

using UdonSharp;
using UdonSharp.CE.Procgen;
using UnityEngine;

public class ProcgenExample : UdonSharpBehaviour
{
public int seed = 1234;

void Start()
{
CERandom rng = new CERandom(seed);
CENoise.Initialize(seed);

float h = CENoise.Fractal2D(10f, 20f, octaves: 4);
Vector3 randomDir = rng.OnUnitSphere();
Debug.Log("Noise: " + h + " dir: " + randomDir);
}
}

API Reference

CERandom

MemberDescription
CERandom(int seed)Deterministic RNG with seed.
Range(int, int) / Range(float, float)Random range helpers.
NextFloat() / NextDouble()Random floats.
Chance(float)Random probability test.
InsideUnitSphere() / OnUnitSphere()Random directions.
Shuffle<T>(T[])Deterministic shuffle.
WeightedChoice(float[])Weighted selection by probability.

CENoise

MemberDescription
Initialize(int seed)Set the global noise seed.
Perlin2D, Perlin3DClassic Perlin noise.
Simplex2D, Simplex3DSimplex noise.
Worley2D, Worley3DWorley noise.
Fractal2D/3D, Ridged2D/3D, Turbulence2D/3DFractal noise variants.

CEDungeon

MemberDescription
CEDungeon.Generate(CERandom, DungeonConfig)Generate a dungeon layout.
DungeonConfigRoom sizes, counts, connectivity, bounds.
DungeonLayoutRooms, corridors, bounds, critical path.

WFCSolver

MemberDescription
WFCSolver(WFCConfig, int seed)Create a solver.
Tick()Run a limited number of iterations per frame.
Solve()Run to completion (can be heavy).
GetResult()Get the tile ID grid.

Common Pitfalls

Bad

var rng = new CERandom(); // Non-deterministic seed

Good

var rng = new CERandom(seed); // Same seed yields identical results