3.0.1 • Published 2 months ago

gen-biome v3.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Gen Biome

Npm package version Small size Building

Procedural generation 2D map with biomes

.

Demo

Documentation

.

Install

npm i gen-biome

.

Generator

Create world generator

new WorldGenerator<T>(config: WorldConfig)

config - World config

PropDescriptionDefaultRange
widthMap width
heightMap height
frequencyChangeFrequency of biomes change0.30.0 - 1.0
borderSmoothnessSmoothness of biomes borders0.50.0 - 1.0
heightRedistributionRedistribution of biomes height1.00.5 - 1.5
heightAveragingAveraging of biomes heighttrue
falloffScale of falloff area0.0

.

Biomes

Add biome

generator.addBiome(
  config: WorldBiomeConfig, 
  data: T,
): WorldBiome<T>

config - Biome config

PropDescriptionDefault
lowerBoundLower biome bound0.0
upperBoundUpper biome bound1.0

data - Biome data that will be stored in the world matrix

Get current biomes

generator.getBiomes(): WorldBiome<T>[]

Clear all biomes

generator.clearBiomes()

.

Generation

Generate world

generator.generate(
  params?: WorldGenerationParams,
): World<T>

params - Generation params (optional)

PropDescriptionDefault
seedGeneration seed(autogenerated)
seedSizeSize of seed array512
offsetXGeneration offset X0
offsetYGeneration offset Y0

.

World

Get matrix of biomes data

world.getMatrix(): T[][]

Each all positions

world.each(
  callback: (position: WorldPoint, data: T) => void,
): void

callback - Callback with position and biome stored data

Get biome data at position

world.getAt(
  position: WorldPoint,
): T | null

position - Position at matrix

Replace biome data at position

world.replaceAt(
  position: WorldPoint, 
  data: T,
): void

position - Position at matrix

data - New biome stored data

Get current world generation seed

world.seed: number[]

Get world width

world.width: number

Get world height

world.height: number

.

Example

const TILE_SIZE = 2;
const BIOMES = [
  { // WATER
    params: { lowerBound: 0.0, upperBound: 0.2 },
    data: { color: 'blue' },
  },
  { // GRASS
    params: { lowerBound: 0.2, upperBound: 0.7 },
    data: { color: 'green' },
  },
  { // MOUNTS
    params: { lowerBound: 0.7 },
    data: { color: 'gray' },
  },
];

const generator = new WorldGenerator({
  width: 100,
  height: 100,
});

for (const { params, data } of BIOMES) {
  generator.addBiome(params, data);
}

const world = generator.generate();

world.each((position, biome) => {
  const tileX = position.x * TILE_SIZE;
  const tileY = position.y * TILE_SIZE;

  ctx.fillStyle = biome.color;
  ctx.fillRect(tileX, tileY, TILE_SIZE, TILE_SIZE);
});
3.0.1

2 months ago

3.0.0

2 months ago

2.4.1

4 months ago

2.4.0

9 months ago

2.3.0

10 months ago

2.2.0

10 months ago

2.3.2

9 months ago

2.3.1

9 months ago

1.4.1

1 year ago

1.3.2

1 year ago

1.4.0

1 year ago

2.1.1

1 year ago

2.1.0

1 year ago

2.0.0

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.2.0

2 years ago

1.1.9

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.1.10

2 years ago

1.1.8

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.6

2 years ago