Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: My take on the Unique Quests/Castle in Scorn thing



> On Tue, 13 Jun 2000, Peter Mardahl wrote:

> have those specialmap segments (like the little shops and chapels. BTW,
> they all seem to be 6x6, is that a limit in the code?). The marker objects

No, they can be any size at all.  However, the larger they are, the harder
they are to place into a random map without clobbering something important.
(Those specialmaps are prevented from clobbering the exits right now, and
some other stuff, but will splatter nearly everything).

> do sound kind of funky too, I could use them in some other maps as well.
> Can you make them decay, like icor?

Yeah.

>   Basically, the sort of maps I was thinking, would be more like actual
> designed quest maps, like Byron's castle, or Eureca, or the Cellar in
> Wolfsburg -Sure, these aren't great examples as some are very detailed,
> and some are a bit random mixed up hack'n'slash, but they have a sort of

Oh.  Map making is a lot of effort, you know?  If you've gotta design a map
each to match all the permutations of possible quests as you described,
that's a huge project.  I really thought that you were just going to
specify styles.

> progress through, avoid traps, solve puzzles thing, you see what I mean?
> Obviously yours is kind of like that too, but each random map on its own
> won't be particularly- or mebbe I should download them and take a

Well, you're right, most of the random maps are pretty stupid.  I've put
in a few things to make a player's mind work, like sometimes I hide
the doors by giving them the faces of walls, or hide keys in the map that
players must find to advance, or use little specialmaps.

>   What would be roughly required would be something like your random-map
> code (which may well support it or be easily altered to do so), such that
> there are maybe sections of wall that have openable gates, special rooms

You could do something similar to the key code (door.c):  
i.e., make this particular
door special and locate handles for it inside and outside.

> that have clever mechanisms,and perhaps some of the bits in different,
> separate walls and rooms could be connected. Such fancy gubbinry could
> *maybe* be done by means of your little specialmaps, but it would
> probably need a separate directory (eg puzzlesections), and code to
> handle them differently as the specialmaps are just placed randomly.

Maybe.

>  The layout code (I know there are different types of layout available,
> but I'm not too familiar. Do you have any sort of docs at all on it, or
> reeeallly well commented code? :) ) would then set out walls and puzzles

crossfire/doc/RandomMaps.doc
crossfire/doc/Styles.doc
I think it's reasonably complete.

There are two basic types of layout available right now:  "onion" and maze.
Both can be modified in the following ways:
1)  symmetrization  (about x or y or both)
2)  roomification (walls with a door in them randomly plunked about)
3)  doorification

One thing you could do is enhance the random map code by: 
1)  making your own layout (layouts are arrays of characters:
only > < # * C have meaning right now, I think.  You could extend this to
have more features, such as connected handles/teleporters...)

>  It certainly is perfectly possible, supposing we have some way of placing
> the different bits sensibly relative to other bits, to make sure that the
> whole thing *is* finishable, and the map could also take onboard ideas

Making a finishable map randomly is somewhat difficult.  It's a bit hard
to teach a computer to do intelligent stuff like "make sure the key/handle
is on the OUTSIDE of the door."

> use quest-givers, and how active the server is, certain areas may get
> saturated with quest entrances (seems unlikely unless only a few tiles
> relevant to a class of quest is placed).

Well, how about having the entrances multiplex based on an object in
the character which describes the quest?

Anyway, as a suggestion, since you say you're not too strong a C coder,
how would you like to write a new layout?