ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/random_maps.pod
Revision: 1.4
Committed: Wed Jun 30 23:03:40 2010 UTC (13 years, 10 months ago) by root
Branch: MAIN
Changes since 1.3: +173 -2 lines
Log Message:
add cave maze type

File Contents

# Content
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 Currently, "rogue", "spiral", "maze", "snake",
43 "onion", and "squarespiral" are allowed. See
44 below for more detail.
45
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 maze maze_type 0: roomy (open space with some walls)
124 1: sparse (maze with some larger open spaces)
125 2: braided (few dead ends)
126 3: closed (complete maze)
127 default: random
128
129 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 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 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 =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 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 A "sparse" maze:
311
312 ########################################
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
366 A "full" maze:
367
368 ########################################
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
394 =head3 Cave Maps
395
396 Type 0, rough:
397
398 ########################################
399 ############# ########## #####
400 ####### #### ########## ##### #########
401 ####### #### ########## #########
402 ####### #### ########### #############
403 ####### ## ########## ###############
404 ## ############# ###
405 ## ####### ## ########## ####
406 ## ############### ############# ###
407 ## ################# ############
408 ## ################# #### #########
409 ### ############# ######## ###
410 ### ############# # ##################
411 ### ### ###########
412 ### ###### ################# ###########
413 ### ###### ################# ###########
414 ### ##### ################# #
415 #### #### ###################### ######
416 ########## ###################### ######
417 ########## #################### ######
418 ############ ###### ######### ######
419 ############## ########### ###
420 ############## ######################
421 ########################################
422 ########################################
423
424 ########################################
425 #### ############ #### ## ######
426 ### ########### ##### ### ##########
427 ## ## # # ### ###########
428 ## ### #### # ##### ###########
429 ## ### ####### ## ##### ########## #
430 ## ## ######### ####### # #### #
431 ## # ###### ########### #### ###
432 ## ##### # ### ########## ####
433 # ####### ### ########## # #####
434 # # ###### # ######## ######
435 # ## ########## # # ###
436 # ### # # ########### # #
437 # ## # # ## #####
438 # ####### # ## # ## #######
439 # # # ## ## ## # ##
440 # # ### ## ######### # ##### # ##
441 # ### # #### ####### #### ##
442 # # ## ## ### #### # ## #####
443 ### ####### ############ # ## #####
444 #### ##### ######## ### #####
445 #### ### # ## # ## #
446 ## ## # ## #### # #####
447 ######### ##### # #############
448 ########################################
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 =head3 Spiral Maps
561
562 A Spiral Map:
563
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 (i.e., the spiral will look elliptical)
595
596 =head3 Rogue-like Maps
597
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 =head2 AUTHORS
756
757 The original document was taken from Crossfire and subsequently modified by Marc Lehmann.