struct StandardWorldGenerator: WorldGenerator { private var heightNoise: LayeredNoiseAlt>! private var terrainNoise: LayeredNoise>! private var colorNoise: LayeredNoiseAlt>! public mutating func reset(seed: UInt64) { var random = PCG32Random(seed: SplitMix64.createState(seed: seed)) self.heightNoise = .init(random: &random, octaves: 200, frequency: 0.0002, amplitude: 2.000) self.terrainNoise = .init(random: &random, octaves: 10, frequency: 0.01, amplitude: 0.437) self.colorNoise = .init(random: &random, octaves: 150, frequency: 0.0006667, amplitude: 17.000) } public func makeChunk(id chunkID: SIMD3) -> Chunk { let chunkOrigin = chunkID &<< Chunk.shift var chunk = Chunk(position: chunkOrigin) for z in 0..(chunkOrigin.xz &+ SIMD2(x, z))) for y in 0..(chunkOrigin &+ ipos) let height = fpos.y / 64.0 + height let value = height + self.terrainNoise.get(fpos * SIMD3(1, 2, 1)) let block: BlockType = if value < 0 { .solid(.init( hue: Float(180 + self.colorNoise.get(fpos) * 180), saturation: 0.47, value: 0.9).linear) } else { .air } chunk.setBlock(internal: ipos, type: block) } } } return chunk } }