[MUD-Dev] Distributed PSW design

John Buehler johnbue at msn.com
Fri Jan 19 18:43:24 CET 2001


J C Lawrence writes:

> Most of the interesting work 3D world generation I know of is using
> some form of fractals and seeded algorithms to gen their
> environments client-side.  You then just apply deltas (which can be
> quite small) to implement post-generation changes (eg buildings,
> human artifacts, results of recent events (eg eruption, bomb crater,
> etc).  The bit that's bugged me about this approach is that
> simplicitly demands only convex hulls.  There are no complex forms,
> and in particular, there are no concave hulls (caves, arches,
> tunnels, caverns, convoluted canyons, etc).

Secondary algorithms.  The second program that I'm working on is a
cave generator.  They can either be hand-placed or algorithmically
placed according to the fractal information out there.  Things like
arches and specially-structured canyons would be triggered the same
way.  Switch from the primary terrain generator to a secondary one.
Since the fractal approach has to do with refinements of existing
terrain, pick a level in the fractal that's large enough of a step to
incorporate your canyon and then just stuff it in there.

In the case of the caves that I'm doing, it's a batch generation
process.  There's nothing fractal or efficient about the approach that
I'm using, which is to take a series of rectilinear volumes and union
them to produce the cave system volume.  Future refinements would
permit more interesting internal volumes - right now all the walls are
flat as billiard table.

The really nasty problems are cases where there are constructs that
derive their existence from the generated data.  For example, rivers,
lakes and streams.  They flow downhill, which is something that must
be inspected from the data.  So once you have a dataset that you like,
you run a simulator on it that figures out where these things are.  I
suppose cities, towns and villages are placed 'by inspection' as well.
Personally, I'd prefer to see the whole world generated
algorithmically, and let the designers work from there.  The designers
supply the data to say generally how things should relate (villages
near the ocean, castles on high ground with a view over villages,
etc), and then wait until they find a dataset that they like.
Hand-constructing a planet is simply not tractable.

> Quite.  Additionally, given the above approach, such hackers are
> missing the server-genned and delivered deltas which morph the raw
> genned data into the actual data set which is shared
> (computationally albeit) with the other players.  Given taht such
> delta sets can be highly tokenised and compressed, the overhead
> requirements can be small and the actual impacts on the perceived
> world large (yes, there was a Everest-challenging mountain there,
> but a nuclear blast has replaced it with a thousand square mile lake
> of bubbling lava).

And because the characters move relatively slowly, the 'token sets'
can be streamed very incrementally to the clients.  In my case, only
the 272 points of the geodesic sphere need seed numbers (the first
fractal level).  From there, everything can be inferred/calculated.

> Any sources?

Sorry, I'm incrementally building a game and will sit on my creations
for now.  It'll take me 10 years to build, but it keeps me amused and
my engineering skills sharp.  There's nothing like having to do
rectilinear unions in three space and then do the triangle
decomposition of the resulting surfaces :)

> Give me a week or so.  You'll have all the web space you want on Pan
> (currently 160Gig free, with an easy potential for another 480Gig
> with minimal effort.

Any space away from MSN would certainly be appreciated by people
downloading these things.

I neglected to describe how to use the program, however:

The mouse controls the direction that you look, the mouse wheel
controls how fast you go.  One tick forward doubles your forward
speed, one tick backwards halves your forward speed.  I suggest that
you begin with three ticks forward to get a reasonable speed up.  The
arrow keys are UP=forward, DOWN=backwards, LEFT=left, RIGHT=right.
F12 will pop up a map window and slowly fill it in.  The window does
not handle refresh events and the program is completely unresponsive
during rendering of the map.  So if you want to see a map being
generated, hit F12, watch, then kill the process :) The map is an
orthographic projection of the planet.

For chuckles, get close to the ground and press the numeric '5' key,
followed by the space key.  You get 10 space bar presses per run.  A
little fun taken from my flight simulator days.

> Yup, there'e been quite a bit of discussion of such approaches here
> on the list.  In my limited play time my approach has been:

>   Set system to gen world data sets while I'm at work^H^H^H^Hwishing
>   I was asleep.

>   Review the half dozen or so results for any that are interesting
>   and then record the seed values that produced that data set.

>   Repeat.

Yeah, I know what you mean.  The program that I created permits a
certain degree of control via 'roughness sets'.  These are curves of
fractal depth versus perturbation numbers.  For example, at
subdivision 1 perturb by 20% of span, at subdivision 2 perturb by 8%
of span, etc.  You can have as many sets as you like.  Right now, the
sets are randomly selected throughout the world, leaving things
homogeneous as always, but through some selective editing, the
datasets could be applied in order to produce oceans pretty much where
you want them, mountainous areas pretty much where you want them, etc.
I think the general idea of having a carefully-selected set of data
influencing the algorithmic terrain will work well enough to create as
many worlds as we like.

It will be interesting when these games transition to the point where
interstellar travel games actually permit you to visit as many worlds
as you like, and each world might be supported by one server machine.
A 433 gigahertz box with 80 terrabytes of 30 microsecond memory, but
you only need one :)

JB


_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list