[MUD-Dev] Re: Terrain/Landmass & GIF/BMP
marc at jb.com
Thu Oct 8 00:46:00 New Zealand Daylight Time 1998
On Wed, 7 Oct 1998, quzah [sotfhome] wrote:
This is one of my favorite subjects :-). I have multiple
implementations of various simple methods to generate land including
plasma //I _love_ pine
fractal, more traditional fractals (from Kenton Musgrave), random brownian
motion walks, continent division (take the land. Split into 2 sides.
lower one and raise the other, repeat) etc. If you have any questions or
need some algorithms/code just ask.
I found taking the plasma fractal (the subdivision one previously
described) and creating one 'map' then using that map as a 'roughness'
input for the _real_ map produces some nice heterogeneous land. Otherwise
it can be really smooth.
Another thing to do with plasmafractal is to not just seed the
four corners but to seed a little more. If you had a 512x512 land you
(0,0), (256,0), (512,0),
(or more). This tends to break up the 'one big landmass' effect
plasma often gives.
}>> (For rivers I plan on using heuristics for getting from point
}>> A (river source) to point B (river mouth) but I haven't looked
}>> at it too in depth. Finally I believe I have managed to locate
}>> the actual formula for "A*" so I may see what I can do with it
}>> at a later date.)
}>I'd certainly be interested in seeing this if you have the possibility to
}Actually I don't think I'm going to end up using it, because of
}the fact that water flows down hill. (Yes, I'm aware of the one
}instance, perhaps more, where it doesn't, but as a whole...). So,
}not knowing enough about A* yet, (I haven't played with it yet) I
}probably will opt just to do something like:
A* is a good heuristic for finding shortest paths without using a
complicated or expensive search but as you noted water doesnt necessarily
take the shortest path does it :-> (just the downhill one). In fact it
tends to meander in flatter situations.
}find the valid moves from current local
}flow in one dir at random
for 'find the valid moves' I would recommend using dir,dir+1,dir-1
(where dir is one of the 8 cardinal directions). I tried just selecting
the lowest spot and ended up with some bad rivers. some other ideas
including spawning a new river when certain conditions are met (so you can
get 'fingers' at the river head) etc.
}>Hmmm.... Seems to me that if you want to encode *all* the information in
}>the map in a single picture, you'll get a very messy one. That is, it will
}>be very hard (just as hard as with your ASCII output) to get a feel for
}>what the map looks like. You can simply *not* encode all the data fields
}>in those 20 bits (some of which are heights, others which are resources,
}>and so on, I take it?) and make it useful for a human reader ("so, okay,
}>um, a lot of green mixed in with a little red should mean high altitude
}>and some, um, lessee, iron ore...").
}The only thing I currently need the picture for is water and land.
}The rest will be left off for now. I only need to see how high/low
}terrain is. (So I can see if I like its grouping, or if it just looks
}like a bunch of random crap ;) The image won't be used actually in
}the game, just for some test runs when map generating.
I assume youll have your own '.map' format. I would definatly
make a maptoxxxx (where xxxx is whatever graphics format you choose).
Then you could also split out differnt data into different graphic files.
}>As for graphics formats... The format that strikes me as the simplest is
}>plain BMP (the Windows incarnation, that is). However, other posters have
}>responded to this, so I will refrain from doing it as well.
Another good format is targa. It has a simple 18byte header with
very simple data after (like RGBRGBRGB... for 24 bit and RGBARGBARGBA...
}I haven't done anything with graphics ever, so it'll all be new
}to me. Again, thanks everyone for the help.
Hope this isnt noise.
Marc Hernandez marc at eisoftware.com
More information about the MUD-Dev