Beautiful :) I'm not going to be around till Tuesday so I'll read this in detail later.
Jon Quoting Kris Schnee <[EMAIL PROTECTED]>: > > Nice screenshot. Is that multiple runs of the terrain generator tiled, or > one run? > > Thanks. The screenshot is one run of another program making the > generator run repeatedly, then applying a texture heightmap (like, > anything in a certain height range is blue), then blitting the little > maps into a big surface and saving it. > > > JoN wrote: > > By the way - > > > > Given the same input parameters will it generate the same terrain every > time, or > > is it random ? > > Yes. 8) > > It uses the function random.randint(), so the numbers involved are as > random as you can get with a computer... but by calling random.seed(), > you can feed the number generator some data and get the same terrain > every time. > > In the screenshot: > http://kschnee.xepher.net/pics/061025skygold.jpg > You can see what happened when I called seed() using the X,Y coordinates > of a game-world "zone," on the theory that every time you visited zone > (4,2) it'd be the same even though it's "random." But I found there was > this weird repetition. Looking into it, I found that seed() was calling > hash(), and that (say) the values (1,-1) and (1,-2) had the same hash > value, causing copies of the same islands to get generated. Not good. > The solution hashed out was to mess with the data some more, to be > relatively sure of getting unique hash values for each coordinate pair. > The result was this: > http://kschnee.xepher.net/pics/061025skygold2.jpg > Which has no obvious repetition. Still, there's an obvious grid of > similarly-sized islands. I tried making bigger zones and found that my > algorithm wasn't very well suited to the 300x300 size, and that it still > gave me an obvious grid. So, what I'm thinking of doing now is to make > some zones more flooded than others, so that some have little or no > land, reducing the sameness of the world and creating more water areas > instead of the street-like NSEW waterways seen above. Another option > would be to somehow alternate semi-randomly between big zones (2x2, 3x3) > and little ones, or to semi-randomly switch between algorithms. > > I made this partly in reaction to traditional random dungeon games, > which I dislike (except for "Disgaea!"). By using a seed function it's > possible to avoid the problem that everybody's game is different. I made > fun of the randomness in an article on RPGamer.com: > http://www.rpgamer.com/editor/2001/q3/070601ks.html > > By the way, I did a couple of random-content generators using Python and > CGI, here: > http://kschnee.xepher.net/generators.htm > > Kris > -------------------------------------------------------------------- Come and visit Web Prophets Website at http://www.webprophets.net.au
