Home
Shaders and presets

Terrain Presets

Pre-configured terrain biomes and landscape settings

Ready-to-use terrain configurations for common landscape types.

Quick Start

import { createTerrainPreset, TerrainBiomes, TerrainPresets } from 'strata-game-library/presets/terrain';

// Use a preset directly
<Terrain {...TerrainPresets.MOUNTAIN_RANGE} />

// Or create with options
const terrain = createTerrainPreset({
  biomes: [TerrainBiomes.GRASSLAND, TerrainBiomes.MOUNTAIN],
  resolution: 128,
});

Available Biomes

BiomeDescriptionKey Features
GRASSLANDRolling green hillsGrass coverage, gentle slopes
MOUNTAINRocky peaksHigh amplitude, snow caps
DESERTSandy dunesTan colors, wind-swept
SNOWFrozen tundraWhite, ice formations
FORESTWooded terrainTree-friendly slopes
SWAMPWetlandsLow elevation, murky
VOLCANICLava terrainBlack rock, red accents
BEACHCoastal sandFlat near water
CANYONDeep valleysSteep cliffs
PLATEAUFlat-toppedMesa formations

Preset Examples

Mountain Range

TerrainPresets.MOUNTAIN_RANGE = {
  biomes: [TerrainBiomes.MOUNTAIN, TerrainBiomes.SNOW],
  amplitude: 120,
  frequency: 0.008,
  octaves: 8,
  snowHeight: 80,
  rockHeight: 40,
  steepness: 0.7,
};

Tropical Island

TerrainPresets.TROPICAL_ISLAND = {
  biomes: [TerrainBiomes.BEACH, TerrainBiomes.FOREST],
  amplitude: 40,
  frequency: 0.015,
  shape: 'island',
  waterLevel: 0,
  beachWidth: 20,
  palmTrees: true,
};

Desert Dunes

TerrainPresets.DESERT_DUNES = {
  biomes: [TerrainBiomes.DESERT],
  amplitude: 30,
  frequency: 0.02,
  duneDirection: [1, 0, 0.3],
  duneSharpness: 0.8,
  sandRipples: true,
};

Volcanic Landscape

TerrainPresets.VOLCANIC = {
  biomes: [TerrainBiomes.VOLCANIC],
  amplitude: 100,
  craterCount: 3,
  lavaFlows: true,
  ashCoverage: 0.3,
  smokeParticles: true,
};

Configuration Options

interface TerrainPresetOptions {
  // Biome selection
  biomes: TerrainBiome[];
  biomeScale?: number;
  biomeBlend?: number;

  // Terrain shape
  amplitude?: number;
  frequency?: number;
  octaves?: number;
  persistence?: number;
  lacunarity?: number;

  // Height zones
  waterLevel?: number;
  beachHeight?: number;
  grassHeight?: number;
  rockHeight?: number;
  snowHeight?: number;

  // Special features
  caves?: boolean;
  cavesDensity?: number;
  cliffs?: boolean;
  cliffsAngle?: number;

  // Quality
  resolution?: number;
  chunkSize?: number;
  lodLevels?: number;
}

Using with Components

import { Terrain } from 'strata-game-library/core';
import { TerrainPresets } from 'strata-game-library/presets/terrain';

function Scene() {
  return (
    <>
      <Terrain
        {...TerrainPresets.MOUNTAIN_RANGE}
        size={1000}
        position={[0, 0, 0]}
      />
    </>
  );
}

Customizing Presets

import { createTerrainPreset, TerrainPresets } from 'strata-game-library/presets/terrain';

// Extend a preset
const tallerMountains = {
  ...TerrainPresets.MOUNTAIN_RANGE,
  amplitude: 200,  // Override
  snowHeight: 120,
};

// Or use the factory
const custom = createTerrainPreset({
  base: 'MOUNTAIN_RANGE',
  overrides: {
    amplitude: 200,
  },
});