Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import division
- from perlin import Perlin
- from biomes import biomes
- import time, random
- def generate(master, chunk):
- chunk.terrain = generate_terrain(
- chunk.position[0],
- chunk.position[1],
- master.seed,
- master.quality,
- master.minz,
- master.maxz
- )
- chunk.biomes = generate_biomes()
- sr = ((-1, -1), (0, -1), (1, -1),
- (-1, 0), (1, 0),
- (-1, 1), (0, 1), (1, 1))
- for x in range(16):
- for y in range(16):
- z = chunk.terrain[(x, y)]
- u = 0
- for ch in sr:
- cx = x + ch[0]
- cy = y + ch[1]
- if cx < 0 or cy < 0 or cx > 15 or cy > 15:
- continue
- cd = z - chunk.terrain[(cx, cy)]
- if cd > 1 and cd - 1 > u:
- u = cd - 1
- for i in range(1 + u):
- bz = z - i
- bt = chunk.biomes[x, y].get_dbt(x, y, bz)
- chunk[x, y, bz] = bt
- def generate_terrain(cx, cy, seed, quality, minz, maxz):
- dt = quality + seed # Modulator.
- pl = Perlin() # Generator.
- op = {} # Output.
- for x in range(16):
- for y in range(16):
- z = pl.noise((x / seed) / dt, (y / seed) / dt, 0)
- if z < 0.0:
- z = 0.0
- if z > 1.0:
- z = 1.0
- z = int(round((z * (maxz - minz)) + minz))
- op[(x, y)] = z
- return op
- def generate_biomes():
- op = {}
- for x in range(16):
- for y in range(16):
- op[(x, y)] = biomes['forest'] # no generation yet
- return op
Add Comment
Please, Sign In to add comment