Fourth-age has just gotten a Procedural Content Generation boost!
I've ported the venerable C++ libnoise library to Python. This is pure Python, but I mainly just want the module logic in Python to make using it from Fourth age more 'Pythonic'. There does exist a Perlin noise generator implemented in Python's C API, so I hope to shortly adopt this and use it instead of a pure Python implementation.
Notice that's no ordinary Perlin noise. libnoise (and now noiselib) works by taking base noise generators, and wrapping the generators in functions which modify the output. Each module taking a set of noise sources acts as another noise source which can in turn be passed to another module. Through this sort of composition complex noise-scapes can be made. The one in the screen shot produces wide-scale terrain with mountain ridges and rolling lowlands. Noise is fractal, so if you zoom in and amplify noise in some small sector then you get noise which resembles that which you zoomed in on (of course, the noise function is not infinite resolution, so you need a high resolution array of noise to do this satisfactorily).
So that's just a little of what Fourth age development has been up to recently. We soon hope to begin moving into more concrete game programming (and not just low level libraries like this).
For the curious, that's an 11 octave, 0.5 persistance ridged-multifractal generator along with a so-called 'billow noise' generator at 8 octaves and 0.75 persistance and scaled to 0.125 and biased by -0.75 then blended to the ridged multifractal generator using that generator itself as the control value for the blend lerp (the ridged multifractal is the '1' end of the lerp scale). That way the ridges stay sharp and as the height drops the rolling effect of the billow noise become more pronounced.