ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/random_maps.pod
Revision: 1.6
Committed: Sat Jul 3 00:39:57 2010 UTC (13 years, 10 months ago) by root
Branch: MAIN
Changes since 1.5: +46 -46 lines
Log Message:
much more random pathing for isolation remover

File Contents

# User Rev Content
1 root 1.1 =head1 Random Map Deployment Guide
2    
3     =head2 Using random maps
4    
5     Any exit with "/!" as the destination map will generate a random map. To
6     specify random map parameters, you put parameters in the message field for
7     the exit.
8    
9     =head2 How styles work
10    
11     A "style" is usually a small map which contains only objects which
12     define the "style". For example, a monsterstyle "orc" might be a map
13     generated with crossedit which has six orcs, a kobold, and a troll in it.
14     When monsters are placed, the generator will randomly choose monsters from the
15     "orc" style, and for this example, on average, it will generate 6 orcs/troll
16     and 1 kobold/troll. So orcs will be very common, and there'll be occasional
17     trolls and kobolds.
18    
19     In principle, you may put any object in any style map. However, the
20     map generator will do special things with the object depending on which
21     directory it is in. Style maps are located in maps/styles/*, you may use
22     the editor to modify the style maps, or create new ones.
23    
24     Any style parameters that accept a map path accept both simple maps
25     (F<.map> files), meta files (F<.rmg>) and directories.
26    
27     Maps will simply be used as-is.
28    
29     Meta files are JSON objects with (currently) only one key: "maps" which
30     must be a hash with C<"path" : weight> pairs, of which one is randomly
31     chosen.
32    
33     Directories are handled based on the filenames in it: if there are any
34     files with "_\d+" in their name (e.g F<map_1.map>, F<map_99.map>),
35     then the one with the value closest to the difficulty value is chosen,
36     otherwise a random entry is picked (which can in turn be a meta file,
37     directory etc.).
38    
39     =head2 Style Parameters
40    
41     layoutstyle <style> (special!) Pick the layout style for the map.
42 root 1.5 Currently, "rogue", "spiral", "maze", "cave",
43     "snake", "onion", and "squarespiral" are allowed.
44     See below for more detail.
45 root 1.1
46     floorstyle <style> Load /styles/floorstyles/<style> and pick a random
47     floortype from that style map for the random map.
48     The entire map will be tiled with the floortype.
49    
50     wallstyle <style> Load /styles/wallstyles/<style> and pick a random
51     walltype from that style for the random map. All
52     the walls in the map will be of this type. The
53     walls are modified on insertion so that players
54     cannot go through them: this is expected for
55     walls, but the random map generator makes sure of
56     it. A <style> of "none" causes no walls or doors
57     to be generated.
58    
59     doorstyle <style> Load /styles/doorstyles/<style> and pick a random
60     doortype from that style for the random map. A
61     <style> of "none" causes no doors to generated.
62    
63     exitstyle <style> Put one or two exits in the map, one leading back
64     to the map where we entered from (origin_map,
65     origin_x, origin_y), and, if appropriate, one
66     leading to another, harder, random map. A style of
67     "none" causes no exits to be generated.
68    
69     decorstyle <style> Load /styles/decorstyles/<style> and pick the
70     decor objects from that style to insert in the
71     map. Decor objects are modified on insertion so
72     that they do NOT block movement, regardless of the
73     archetype. They are placed randomly. A style of
74     "none" causes no decor objects to be generated.
75    
76     monsterstyle <style> Load /styles/monsterstyles/<style>, if it exists.
77     If it doesn't exist, then it will look for a directory
78     of that name. If it finds a directory, it will choose
79     a style based on dungeon_level. It will pick the style
80     with the name <name>_# with the # closest to the
81     dungeon_level. Monster objects are copied from the
82     style map, so you may form style maps with modified
83     monsters which are weaker or stronger than the default
84     archetype.A style of "none" causes no monsters to be
85     generated.
86    
87     treasurestyle <style> (Special) If the style name chosen is contained
88     in the lib/treasures file, it will use
89     that for making treasures. If it is NOT
90     in the lib/treasures file, it will look up
91     /styles/treasurestyle/<style>, and pick random
92     treasures from there. If <style> matches neither
93     of these, it will generate treasures using the
94     "chest" treasurelist. A style of "none" causes no
95     treasures to be placed.
96    
97     =head2 Layout Parameters
98    
99    
100     xsize <int> size of the map: if not set, random from 10 to 70
101    
102    
103     ysize <int> size of the map: if not set, random from 10 to 70
104    
105    
106     expand2x <bool> Do we double the size of the layout? This has
107     the effect of increasing the corridor widths by about
108     2x. Set it to a non-zero integer if this is desired.
109    
110    
111     symmetry <sym> symmetry of the layout: You can cause the map generator
112     to generate a symmetrical layout by using this flag.
113     symmetry 0 random symmetry
114     symmetry 1 no symmetry
115     symmetry 2 symmetry about the vertical centerline
116     symmetry 3 symmetry about the horizontal centerline
117     symmetry 4 both 2 and 3 symmetry
118    
119    
120     Layout Style: Parameter: Effect:
121    
122    
123 root 1.2 maze maze_type 0: roomy (open space with some walls)
124 root 1.1 1: sparse (maze with some larger open spaces)
125     2: braided (few dead ends)
126     3: closed (complete maze)
127     default: random
128    
129 root 1.4 cave cave_type 0: very rough, mazelike
130     1: round 1-2 space corridors, often elliptic
131     2: more open, roundish
132     3: wide open areas, roundish
133    
134 root 1.1 50% of the time a maze layout will be "doorified", meaning that doors
135     will be placed at random in the maze.
136    
137     onion layoutoptions1 0 (default) Pick random options
138     See "Onion Rooms" below for
139     the rest of the options.
140    
141     onion layoutoptions2 0 (default) Pick a random number of
142     "onion layers"
143    
144     =head2 Map generation parameters
145    
146    
147     difficulty Set the map difficulty. Has no relation to the
148     "difficulty" defined in common/*.c.
149     If nonzero, this map and its descendants will
150     have the same difficulty. If zero, it'll be set
151     to the value of dungeon_level and incremeneted with
152     each recursive map.
153    
154     difficulty_increase Sets how fast the difficulty increases. This value
155     is a float - the default value is 1.0. Reducing
156     This only applies to map without a default
157     difficulty set (but that could change in the
158     future). For each level of a map, the difficulty
159     is set to depth * difficulty_increase. Setting
160     this parameter to 0.5 (or other values between 0
161     and 1) is a way to have deep dungeons that do not
162     increase in difficulty all that rapidly.
163    
164    
165     dungeon_level Another way of setting the map difficulty. This
166     has no relation to the "difficulty" defined in
167     the common/*.c source code. The effect is to pick
168     which monsters to use: for example, if the
169     monsterstyle
170     is "humanoid" and the dungeonlevel is 9, the style
171     map /styles/monsterstyles/humanoid/humanoid_9 will be
172     the style from which monsters are chosen. After the
173     monsters are placed, the map
174     difficulty is set according
175     to the server's rule, for treasure purposes.
176    
177     dungeon_depth The map generated will have an exit to another
178     random map of the same style if
179     dungeon_level < dungeon_depth. The next random map
180     will have dungeon_level incremented. If dungeon_level
181     >= dungeon_depth, no exit to a more difficult map
182     will be made.
183    
184     orientation How the exits look:
185     0 random "orientation"
186     1 player arrives in the map at
187     a "stairs up", he goes to harder
188     levels by finding a "stairs down"
189     2 reverse of 1
190     3-6 exits are horizontal. In the future
191     these will be made to make exits to
192     rightward, leftward, north and south.
193    
194     origin_x <You shouldn't need to set this> The exit which
195     leads back from this map will go to this x.
196    
197     origin_y Like origin_x
198    
199     random_seed Set the random seed number used. This number
200     completely determines the random numbers: a map
201     with the same random seed and other parameters
202     will always produce exactly the same map.
203    
204     final_map When dungeon_level >= dungeon_depth, another exit
205     isn't usually made. However, if final_map is set
206     to a map's name, then an exit to this map will
207     be made.
208    
209     exit_on_final_map The default action is to place an exit on
210     the final map. When explicitly set to 'no' this will
211     not place a return exit on the final_map.
212     If you use this setting YOU MUST PROVIDE A WAY BACK IN THE FINAL MAP!
213    
214     =head2 Misc. Parameters
215    
216     decoroptions <option> Currently, ignored. Possibly in the future it
217     will cause the decor to be patterned in some way,
218     such as <put decor along walls> or <put decor
219     in center of rooms>
220    
221    
222     treasureoptions <opt> Parameterizes how the treasure is placed and protected.
223     0 choose random treasure options
224     1 concentrate the treasure on the map in a few locations
225     2 hide the treasure behind hidden doors
226     4 put the treasure in a chest which must be unlocked.
227     (a key will be placed somewhere in the map, probably
228     in a monster.)
229     8 Put locked doors around the treasure (a key to each
230     door will be placed in a monster or somewhere reachable
231     by the player: one key on each side of the door.)
232     In onion maps, the treasure is co-located with the
233     exit to harder levels, so this makes the exit harder
234     to get to.
235     16 Trap the treasure. A trap from /styles/trapstyles/traps
236     is selected and inserted into the treasure chest.
237     32 sparse treasure. 1/2 as much treasure is generated.
238     64 rich treasure. 2x as much treasure is generated.
239    
240 root 1.2 If option 1 is not set, options 2-16 are ignored. Options
241     may be added together: treasureoptions 3 means treasure
242     optons 1 and 2 are set.
243    
244 root 1.1 =head2 Map Layout styles
245    
246     =head3 Onion Maps
247    
248     Onion rooms are like this:
249    
250     regular random
251     centered, linear onion: bottom/right centered, nonlinear:
252    
253     ######################### #########################
254     # # # #
255     # ######## ########## # # #####################
256     # # # # # # #
257     # # ###### ######## # # # # #
258     # # # # # # # # ######## ########
259     # # # #### ###### # # # # # # #
260     # # # # # # # # # # # #
261     # # # ############ # # # # # # ########### ##
262     # # # # # # # # # # #
263     # # ################ # # # # # # #########
264     # # # # # # # # #
265     # #################### # # # # # #
266     # # # # # # # #
267     ######################### #########################
268    
269     options:
270     0 Pick random options below
271     1 "centered"
272     2 linear doors (default is nonlinear)
273     4 bottom "centered"
274     8 bottom-right centered
275     16 outer wall off: i.e., no outer wall.
276     32 irregularly/randomly spaced layers (default: regular)
277    
278     =head3 Maze Maps
279    
280     Maze maps are like this:
281    
282 root 1.2 A "roomy" maze:
283    
284     ########################################
285     # #
286     # # # # # # # # #
287     # ## ## # ### # # ## #
288     # ### # # # ## # #
289     # ## ## # ## # # ## #
290     # ## # # ## # # # # # ## ## #
291     # # ## # # #### # #### # # #
292     # ## ## ## ## # # # ## ## # #
293     # # # ## # # # # #
294     # ## ### ### ## #### ## #
295     # ## #### ### # #
296     # ## ### ### # # ## #
297     # ## ### # ## # # # #
298     # ### ### # ### # #### #
299     # # ## ## ##### # ## #
300     # # ## # # ##### ## # #
301     # ## ## ## # # # ## #
302     # ## ### # ## ## # ##### #
303     # #### # # # ### # # #
304     # # ### ## ## # # # # #
305     # ## ## # # ## # #
306     # # #### ## #### #
307     # ##
308     ########################################
309    
310 root 1.1 A "sparse" maze:
311    
312 root 1.2 ########################################
313     # # # # # # # # # # # # # # #
314     # # # # # # # # # # # # # #
315     #### # # ## ### # # # ## ## #
316     # # ### # ## # ## ## #### ##
317     ## # ## # ## # # # #
318     # ## #### ## ## # ## # ## ####
319     #### # ## ### # ## # #
320     # ## ## ## ## # #### #
321     #### # ### ## ## ## ## #
322     # # ### # # # # ###
323     # ##### #### # #### ### ### #
324     ## # # ### # ####
325     # ## # ## ## ### #
326     ## ## ### #### ##### # #
327     # # # ## # # ## #
328     #### #### ## ### #### # # #
329     # # ## ## ## # # #
330     ### ##### # #### #### # ## # ## #
331     # # # ## ## # ## # # #
332     ##### ## ## # ## ## ## # ## # # #
333     # # # # # # ## # ## # # ###
334     # #### # # ## ### # ## # # ## ## # #
335     # # # # # # # # # # # # #
336     ########################################
337    
338     A "braided" maze:
339    
340     ########################################
341     # # # # # # # # # # # # # # #
342     # # # # # # # # # # ##
343     # ## # # ## # # #
344     # ## ## # ## # ## # ## #######
345     # ### # # # # # # ## # #
346     # # # # # # ### ### #### ## #
347     ### #### ## ### # # # ## ##
348     # # # # # ## # #
349     # ## ## ###### ## ### ## #### ####
350     #### # ### # ## # # #
351     # ## # # # ## # ####### ## ####
352     #### # # ### # # # # #
353     # ## ### # ## # ## ### # ##
354     # # ## ##### # # ### ## # # #
355     ## # # ## ### ## ## #
356     # # # # # #### # ### ###
357     # # # ## ##### # # # ## # # #
358     # ## ## # # ## ## # ### # #
359     # # ### ###### # # # # # #
360     ## # ## # # # ## ## # ### #
361     # # ### # ##### # # # ## # #
362     # ## ## ### # ## # # # # ### #
363     # # # # # # # # # # # #
364     ########################################
365 root 1.1
366     A "full" maze:
367    
368 root 1.2 ########################################
369     # # # # # # # # # # # #
370     # # # # # # # # # # # # # # #
371     ## #### ### #### #### #### ## ### # #
372     # ## # # # # ### ### #
373     #### ##### #### ## # # #### # #
374     # ## # # ## # ## # ### ## ## #
375     # ### ## ## # # # # # #
376     # ### ## ## # ### # ##### ##
377     # ## ## ###### ## # ## #### # # #
378     ### # # # # ## # # ########
379     # ####### # ## # ### #### # #
380     # # # # #### ## # ### ##
381     #### # # # ## ## #### #### # # #
382     # ### # ## ## # ### ### ##
383     # # ## ### # ### ### # # #
384     #### #### #### # ## # # # ### #
385     # ## # ## # # # ## ## # ## #
386     # #### #### # ## ### # # ## # ###
387     # ### ## # # # #### ##### #
388     # #### #### ### ### # # # #
389     # ## # # ### # # ##### #
390     # ### #### ###### ##### ####### # #
391     # # # # # # # # #
392     ########################################
393 root 1.1
394 root 1.4 =head3 Cave Maps
395    
396     Type 0, rough:
397    
398     ########################################
399 root 1.6 ################################# ####
400     ############# ######## # ####
401     ############# ######## ### ## ####
402     ############# #### ######### ####
403     ############# #### ############# ####
404     ########## ## ############ ####
405     ########## ### ####################
406     ######## ## #########################
407     ### ## ### #########################
408     ### ## ### #########################
409     ### ## ## ### #####################
410     ### # ### ###################
411     ### ### ### ###### ###################
412     ######## # ###### # ############
413     ####### ## ######### # #######
414     ####### # ######## # #####
415     ####### ##### ######### ### ### ###
416     ####### ###### #### ### #########
417     ### ### ## ### #### ######
418     ## # # ### ###### ### ####### ######
419     # ## ### ################### #####
420     # ################################ #
421     # #################################### #
422 root 1.4 ########################################
423    
424     ########################################
425 root 1.6 ## #### ########## ######### # ###
426     ## ##### ####### ###### # #
427     ## ## # ## ### #
428     ### ####### # #### # #####
429     ##### # ##### ## # # ###
430     ## ## ### ## # # #
431     ## # #### ## ## ## # #
432     ## ##### ### ## # # ###
433     ### ###### # ## # ###
434     ### ### # ###
435     ## ##### # ###
436     ###### ### ####
437     #### # #### ####
438     ## # ### # ## # ####
439     # ## ### ## ## ## #
440     # # # # # # #### # ## #
441     ### ### ##### #### # # ## #
442     # ## ## ## ## ## #
443     # ### ## ### # ## # # ## #
444     # ## # ## ## ### ### #### #
445     # ## # ### #### ## #### #
446     # ## ## ####### ## ######
447     # # ###### ###### #### ## ######
448 root 1.4 ########################################
449    
450     Type 1: corridors
451    
452     ########################################
453     ############################ #
454     #### #### ################ ## ## #
455     ### ## ######## #### ## #### #
456     # ## ###### ### ## #### #
457     # ####### ## ## ## ## #
458     # ####### #### # ## # #
459     # ###### ###### ### ### ### #
460     # ###### ######## ### #### ### #
461     # #### ########## ### ###### ## #
462     ### ### ############### ###### #
463     #### ## ## ######### # ###### ###
464     ##### ### ######### # ##########
465     # ### ### ## ##### ## #########
466     # ## #### #### ## # #########
467     # ## #### ## ## ##########
468     # ### ###### ## ###########
469     # ############## ##### ### ########
470     # ## #### ##### #### ####### ######
471     ### ## #### #### ####### #####
472     ## ## # ## ##### ###### ####
473     ## ## ###### ##### ###
474     ### #### #### ######### ##### ## #
475     ######### #### #
476     ########################################
477    
478     ########################################
479     ########################################
480     ### ### #######
481     ## #####
482     # # ############# ########### ####
483     # ### ########################## ###
484     # ### # ###### ##
485     # ## #### ##
486     # ## ###################### ### ##
487     # ## ######################## ### ##
488     # ## ### #### ## ###
489     # ## ## ### # ###
490     # ## ## ############### ### ## ###
491     # ## ## #### ## ##
492     # ## ### ##### ## ##
493     # ## #### ################### # ##
494     # ## ### #################### ##
495     # ## ###################### ##
496     # ### ####################### ##
497     # ####################### ##### ##
498     # ################### ## ##
499     ## ##### ##
500     ### ######### ###
501     ########################################
502     ########################################
503    
504     Type 2: somewhat open
505    
506     ########################################
507     #################### ##### ###
508     ############# ##### #### ##
509     #### ##### #### ## #
510     ### ### ##### ## #
511     # # ##### # ## #### #
512     # # ### ### ######## #### #
513     # # # ## # ### ## # #
514     # # # ## #
515     ## ### ## ## #
516     ### ####### ### ## ###
517     ############## ### #### ####
518     ############### ## #### ####
519     ### ######## ## ### # ###
520     ## ########## ## ## ### ##
521     ### ### ### ## ##### #
522     ## ### ## # ## ######## #
523     ## ##### ### # ## ######### #
524     # #### ### ## ### ####### #
525     # ## ### ##### ## ##
526     ## #### ## # ###### # ###
527     ### ### #### # ## ##### ####
528     #### # ##### ### ##############
529     #### ##### ###################
530     ########################################
531    
532     Type 3: wide open
533    
534     ########################################
535     # ######## ####### #
536     # ######## ######## #
537     # ##### ######### ###
538     ### ##### ## ### ########## ###
539     ## ##### ### #### ### ### ###
540     ### ###### ### #### ## #
541     ### ##### ## ######## ## #
542     ## ## ## ########## #
543     ## ## ## ########## #
544     # ### ######### ## #
545     # ####### ######## #### #
546     # ## ######## ##### ##### #
547     # #### ##### ### ##### #
548     # #### ### #### #
549     # #### ### #### #### #
550     # ### ### ##### ##### #
551     # ### #### ## ########### #### #
552     # ## #### ## ########## #####
553     # ## ####### ##### ####
554     # ### ####### ###### # #
555     # ### ######### # ### #
556     # # ##### ## ######## #
557     # #### ####### #
558     ########################################
559    
560 root 1.1 =head3 Spiral Maps
561    
562 root 1.4 A Spiral Map:
563 root 1.1
564     ###########################
565     ###########################
566     ########### D ##########
567     ######### #### ########
568     ######## ######## #######
569     ####### ########## ######
570     ###### ############ #####
571     ###### #### #####D#####
572     ##### ### ### #### ####
573     ##### #### ##### #### ####
574     #####D#### ###### ####D####
575     ##### ### #C### #### ####
576     ###### #### >###D#### ####
577     ######D########## ####D####
578     ###### ######## ### ####
579     ####### ###### #### #####
580     ######## D D D #### #####
581     #################### ######
582     ################### ######
583     ################# #######
584     ################# <########
585     ###########################
586     ###########################
587    
588     layoutoptions1:
589    
590     0 pick random options
591     1 Regular spiral: distance increases constantly with angle
592     2 Fine spiral: most coils possible are fit in
593     4 Fit Spiral: scale spiral to fit rectanglar region
594 root 1.2 (i.e., the spiral will look elliptical)
595 root 1.1
596 root 1.4 =head3 Rogue-like Maps
597 root 1.1
598     A Rogue-like Map:
599    
600     ###############################
601     ############# ###########
602     # ## ###########
603     # DD ###########
604     # ## ###########
605     # ## #### ##
606     # #####D####### ##
607     # D D ##
608     ###D######D##### ####### ##
609     ### ## ### ## ##
610     ###D D ### ###D####
611     ### ## D D < ### ####
612     ### ######D##### ### ####
613     ###D###### ##### #### ####
614     ## #### ##### # ##### ####
615     ## #### ##### ######### ####
616     ## ####D##### ######### ####
617     ## ## ### # ### ####
618     ## ## ### # ###D####
619     ## ## ### # ### ##
620     ######## ### # ### #
621     ######## D D D ### > #
622     ######## ##### ### #
623     ######## ##### ### ##
624     ######## ##### ########
625     ################## ########
626     ###############################
627    
628     layoutoptions1:
629    
630     0 pick random room shapes (i.e., mix it up)
631     1 Always use rectangular rooms
632     2 Always use "circular" rooms
633    
634     =head3 Snake layouts
635    
636     No options are available for snake layouts.
637     A player must touch every room to descend deeper in a snake.
638    
639     This is a basic snake layout:
640    
641     ############################
642     #> #
643     # #
644     # #
645     ##########################D#
646     # #
647     # #
648     # #
649     #D##########################
650     # #
651     # #
652     # #
653     ##########################D#
654     # #
655     # #
656     # #
657     #D##########################
658     # #
659     # #
660     # #
661     # #
662     # <#
663     ############################
664    
665     This is a roomified, xy-symmetric snake layout:
666    
667     ###################################
668     #> # # # # >#
669     # # # # # #
670     ##D####### D D #######D##
671     # # # # # #
672     # # # # # #
673     # D # < # D #
674     # # # # # #
675     # # # # # #
676     ##D####### D D #######D##
677     # # # # # #
678     #> # # # # >#
679     ###################################
680    
681     =head3 Square spirals
682    
683     No options are available for square spirals
684     A player must touch every room to descend in a square spiral.
685    
686     This is a basic square spiral layout:
687    
688     ###############################
689     # # #
690     # D #
691     # #####################D#####
692     # # # # #
693     # # # # #
694     # # D # #
695     # # #############D### #
696     # # # # # # #
697     # # # # # # #
698     # # # D # # #
699     # # # #####D### # #
700     # # # # > # # # #
701     # # # D # # # #
702     # # ######### # # #
703     # # # D # # #
704     # # # # # # #
705     # # D # # # #
706     # ################# # #
707     # # D # #
708     # # # # #
709     # D # # #
710     ######################### #
711     # D #
712     # # #
713     # # #
714     #< # #
715     ###############################
716    
717     This is an xy-symmetric square spiral layout:
718    
719     #####################################
720     # # < # #
721     ##D##########D# #D##########D##
722     # # # ####D#### # # #
723     # ###DD### # # ###DD### #
724     # # #> # ##D###D## # ># # #
725     # # ####D### ###D#### # #
726     # # D # # D # #
727     # ############D#####D############ #
728     # D D #
729     # # # #
730     # D D #
731     # ############D#####D############ #
732     # # D # # D # #
733     # # ####D### ###D#### # #
734     # # #> # ##D###D## # ># # #
735     # ###DD### # # ###DD### #
736     # # # ####D#### # # #
737     ##D##########D# #D##########D##
738     # # < # #
739     #####################################
740    
741     =head2 An example input file
742    
743     layoutstyle onion
744     monsterstyle humanoid
745     dungeon_depth 3
746     xsize 15
747     ysize 15
748     exitstyle cstair
749     orientation 1
750     decorstyle furniture
751     floorstyle dirt
752     wallstyle wooden
753     symmetry 1
754    
755 root 1.3 =head2 AUTHORS
756 root 1.1
757     The original document was taken from Crossfire and subsequently modified by Marc Lehmann.