Unity Web Player | hero_civ_gdc

Controls: WASD, space bar pauses time (doesn't do anything worthwhile here, but I forgot to remove that feature). You are a free roam camera without collision detection.

I wrote this terrain generator over summer of 2015. Originally, it was part of a much larger project, but that project's hit the backburner for now so you're seeing a somewhat incomplete terrain generator here.

I used 2D Perlin noise to generate the terrain, constructed the terrain mesh with level of detail in code, and then used a fairly simple procedural biome generator which places different biomes (represented by the different tile colors) at different heights. It simply picks a square, picks a biome, and tries to grow that biome using a BFS on surrounding tiles to see if they fit the constraints for growth. Based on a tile's "selectability" (how "good" of a candidate is this tile based on its distance from the original tile and its height) the tiles are then added to a heap, which the BFS grabs from to continue growing each biome.

It isn't quite practical yet; the terrain is too hilly all over the place and from an exploration standpoint the world just isn't much fun to explore yet. The 2D Perlin noise generator I used to create the terrain is very flexible though. I've considered further deforming terrain in different ways after biomes have been created to give each biome a different "feel"... For instance, make deserts (the yellow tiles) have smoother hills using post-processing, or give certain biomes further deformation. I'd also really like to add roads to the maps eventually, possibly using a Voronoi generator, and work out a smarter way to make the world appear more expansive (right now it looks like you could fall off the edge until the terrain chunks regenerate in front of you). But for now, I've put this project aside. I'd really like to revisit it when I have the time.

Click the reset button to generate new terrain. Pressing the space key pauses time, which prevents you from moving. That's really useless here, but I forgot to remove it!

If you're interested in seeing the source code for this project, contact me! I'm assuming if you've landed here, you have my contact info, or can figure out who I am.