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

Re: CF: Comments about random map generator



> >From the comments that I saw on this list about the random maps stuff,
> it looks like very few people have actually tried the patch.  ;-)  Here
> is my personal experience, maybe it can encourage others to try it...

Thank you, Raphael.

> After applying the patch and copying server/main.c as explained in the
> README, I had to modify two things in order to be able to compile the
> new code:
> - In configure.in, I added random_maps/Makefile at the end of the
>   AC_OUTPUT line in order to ensure that the Makefile is correctly

I thought I had done this, but maybe I bollixed it.  Or maybe I only
did it in the configure script. 

> - In random_maps/Makefile.in, I had to replace random_map.a by
>   librandom_map.a.

"oops".

> After that, I ran "configure", "make" and everything worked fine
> (that's on a three years old Linux system).  Good!  Well, it crashed
> the first time I tried to use the standalone map generator, but that
> was because I forgot to install the maps/styles files in the maps
> directory.  With the maps in the right place, it worked better.

Yes, I didn't build *too* much error tolerance in for when the
style maps and archetypes are inconsistent.

> Hmmm...  I also had to update the archetypes file in order to get
> the correct wall types.  For the lazy ones who do not want to unpack

Yes, you need the new wall types, in the *.arc files.

> I tried "random_map inputfile1 test" and I started crossedit to look
> at the result.  By the way, I was a bit surprised that the map was
> saved in the maps directory instead of the current dir, but I see that
> it is because of new_save_map().

Yes, exactly.  I think I commented on this in the documentation.  I used
the library code as much as possible, and this was one side effect.

> My first reaction when I looked at the test map was: "Wow!".  I was
> and reloaded the map in the editor.  Wow again!  After a dozen more
> Wow's, I was convinced that the random map generator is a truly GREAT

Thank you.  I'm glad you like my work.

> I found lots of nice tricks in the random maps.  For example, some
> symetrical onion maps give nice results.  Also, I was pleased to see a

Mazes can be symmetrical too.  The symmetrical mazes can be awfully pretty.

> magic mouth saying "You have just entered a random map."  Well, except
> that the magic mouth was only triggered on exit, not when entering the
> map.  :-)

Thanks for pointing this out.  Perhaps I should surround the entrance with
these guys.  I'll add it to the TODO, this isn't that complex, though.
Won't take long.

> Creating maps with the standalone map generator worked fine, and this
> looks like an excellent way to create a set of maps that can be edited
> by hand later and used as part of a quest.  Using the map generator
> from within the server (generating maps on-the-fly) worked after I
> created the directory maps/random (IMHO there should be a better way
> to store the info for the automatically generated maps).  But sometimes
> the server crashed and said that it could not load the map, although I
> did not know why.  Re-starting the server and entering the map again
> solved the problem.

Hmm, I didn't observe this to happen when I tested it.  Thanks for
pointing out that maps/random had to exist:  I'd forgotten to note
that in the documentation.

> A nice feature is that the code can generate multi-level random
> dungeons, getting tougher and tougher the deeper you go.  However,
> I found that only the monsterstyle "humanoid" gives a good progression
> for players who are below level 15 or so.  Other styles will quickly

That's very true.  It's because of the monster composition of the various
styles:  there simply aren't very easy demons or undead creatures.  for
the chaos style I created some weaker-chaos monsters using the map editor
to tailor them, but still, they ramp up quickly.

The styles are examples only, really:  I'm hoping people will customize
the monster styles for their maps, though the predefined styles could
be useful if the mapmaker understands that it ramps quickly.

> should keep a player busy for quite a while.  By the way, all these
> styles are an amazing piece of work and appear to be very easy to extend
> and maintain.  Thanks and congratulations, Peter!

There are some gotcha's:  monster styles MUST have at least one '_' in their
name, with a # after the '_', but that's documented, and is the only really
tricky thing.  The other thing to know is that for random picks from a style,
the number of times each object appears in the style modulates 
the frequency of placement in the map.  

> I have some suggestions for Peter or for others who are planning to
> extend the map generator (I might start working on some of these issues
> myself, although it will probably not be before a couple of weeks):
> 
> - In some cases, the treasures or decorations are put on top of each
>   other.  This is not a big problem since the player can still get the
>   stuff, but it would look nicer if the code could avoid stacking

I made sure to make all decor objects passable.  Placement of decor is
one of the areas still requiring significant work, IMHO.  Not putting
them on top of each other is one thing, but decor really needs some extensions:
such as options like "place decor along walls", "no decor in corridors",
"this item belongs near this other item", which may be more trouble than
they are worth, but would be nice.

>   possible to find a free spot next to an object).  I haven't checked
>   the code to see how easy or difficult this would be.

It should be simple not to put things on top of each other.

> - Also, in one case I saw a monster on top of a locked door.  This
>   should be avoided if possible, especially if that monster could hold
>   a key.

Well, it can't hold a key if it is a 1-square monster.  But now that
you point this issue out, it could be a problem if it's a multi-square
monster.  I'll have to check this out, thanks for pointing it out.

> - If a symetric map is created and dungeon_level < dungeon_depth, then
>   the xsize and/or ysize will increase in the next level.  I think that
>   it could cause some problems for deep dungeons.

Oops.  I knew about this, but hadn't fixed it because I didn't think it
was important.  You've demonstrated how it is important.  :)  This is
also going on the TODO.

> - Instead of using "/!" for the path of the random map and the message
>   field in the exit for the parameters of the random map generator,
>   you could use something similar to the URL of a CGI script.  For
>   example, you could have a pseudo path like this:
>   /random?xsize=30&ysize=30&dungeon_depth=2&layoutstyle=maze&wallstyle=cave
>   This would give more info to a server admin looking at the list of
>   loaded maps, although the path could get a bit long...  This would
>   also prevent some exits (teleporters) from displaying the map
>   parameters as a message to the user.

I was wondering how to do this.  The message is awfully easy to edit
in crossedit, which is why I chose it to place the parameters in.
Is this ease worth the downside of the players occasionally seeing
the map parameters as a message?  I decided it WAS worth it, because
the parameters would be known to the player anyway:  the information
is contained in what he can see.

> - You could add the three parameters dest_x, dest_y and dest_map.
>   These would be added to the parameters of all exits leading to

I lean toward the thinking that "more parameters is bad". I was simply going
to try to do something like this:  maps can be created with an attribute
"start x" and "start y":  I was going to use these to locate the player in
the destination map.  That way, it would be automatic, if the map maker
had set start x and start y correctly.

However, I haven't fully worked this out yet...

> - If an entrance to a random map contains the parameters "difficulty"
>   and "dungeon_level" set to different values and dungeon_depth greater
>   than dungeon_level (so that a multi-level dungeon is created), then
>   maybe you could keep the difficulty as a constant from level to
>   level, while dungeon_level is incremented.  This would allow deep
>   dungeons of constant difficulty, which would avoid the problem
>   described above with maps becoming quickly too hard.

This is an good suggestion.  I'll look into it.

> Finally, a map created with the decorstyle not set (i.e. random) could
> lead to a level 1 map with the decorstyle "readables", which is a very
> easy way to get a lot of valuable stuff easily (dozens of skill scrolls
> and improvement scrolls).  Even "alchemy" and "minerals" give too much
> good stuff for low-level maps.  Maybe these decorstyles would be more
> appropriate for treasurestyle?

I should really fix up those decorstyles.  I think I put them in as treasure
styles too:  actually what they are are links to the pickmaps in crossedit.
Treasure styles, however, are not picked randomly if not expicitly set:
instead, it creates x number of chest-style treasures.

Some modifications, I suppose, are warranted if alchemy and minerals are
to be used as decor.  I really put them in as examples of what could be done.

> But I must say, the random map generator is an excellent work!

I'll try to work with Mark to make sure they get into the next release.

Regards,

PeterM
-
[you can put yourself on the announcement list only or unsubscribe altogether
by sending an email stating your wishes to crossfire-request@ifi.uio.no]