程序化生成 (Procgen)
@esengine/procgen 提供了程序化内容生成的核心工具,包括噪声函数、种子随机数和各种随机工具。
npm install @esengine/procgenimport { createPerlinNoise, createFBM } from '@esengine/procgen';
// 创建 Perlin 噪声const perlin = createPerlinNoise(12345); // 种子
// 采样 2D 噪声const value = perlin.noise2D(x * 0.1, y * 0.1);console.log(value); // [-1, 1]
// 使用 FBM 获得更自然的效果const fbm = createFBM(perlin, { octaves: 6, persistence: 0.5});
const height = fbm.noise2D(x * 0.01, y * 0.01);import { createSeededRandom } from '@esengine/procgen';
// 创建确定性随机数生成器const rng = createSeededRandom(42);
// 相同种子总是产生相同序列console.log(rng.next()); // 0.xxxconsole.log(rng.nextInt(1, 100)); // 1-100console.log(rng.nextBool(0.3)); // 30% trueimport { createWeightedRandom, createSeededRandom } from '@esengine/procgen';
const rng = createSeededRandom(42);
// 创建加权选择器const loot = createWeightedRandom([ { value: 'common', weight: 60 }, { value: 'uncommon', weight: 25 }, { value: 'rare', weight: 10 }, { value: 'legendary', weight: 5 }]);
// 随机选择const drop = loot.pick(rng);console.log(drop); // 大概率是 'common'