ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/random_maps.pod
Revision: 1.3
Committed: Tue Jun 29 18:29:29 2010 UTC (13 years, 11 months ago) by root
Branch: MAIN
Changes since 1.2: +1 -7 lines
Log Message:
*** empty log message ***

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     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 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     50% of the time a maze layout will be "doorified", meaning that doors
130     will be placed at random in the maze.
131    
132     onion layoutoptions1 0 (default) Pick random options
133     See "Onion Rooms" below for
134     the rest of the options.
135    
136     onion layoutoptions2 0 (default) Pick a random number of
137     "onion layers"
138    
139     =head2 Map generation parameters
140    
141    
142     difficulty Set the map difficulty. Has no relation to the
143     "difficulty" defined in common/*.c.
144     If nonzero, this map and its descendants will
145     have the same difficulty. If zero, it'll be set
146     to the value of dungeon_level and incremeneted with
147     each recursive map.
148    
149     difficulty_increase Sets how fast the difficulty increases. This value
150     is a float - the default value is 1.0. Reducing
151     This only applies to map without a default
152     difficulty set (but that could change in the
153     future). For each level of a map, the difficulty
154     is set to depth * difficulty_increase. Setting
155     this parameter to 0.5 (or other values between 0
156     and 1) is a way to have deep dungeons that do not
157     increase in difficulty all that rapidly.
158    
159    
160     dungeon_level Another way of setting the map difficulty. This
161     has no relation to the "difficulty" defined in
162     the common/*.c source code. The effect is to pick
163     which monsters to use: for example, if the
164     monsterstyle
165     is "humanoid" and the dungeonlevel is 9, the style
166     map /styles/monsterstyles/humanoid/humanoid_9 will be
167     the style from which monsters are chosen. After the
168     monsters are placed, the map
169     difficulty is set according
170     to the server's rule, for treasure purposes.
171    
172     dungeon_depth The map generated will have an exit to another
173     random map of the same style if
174     dungeon_level < dungeon_depth. The next random map
175     will have dungeon_level incremented. If dungeon_level
176     >= dungeon_depth, no exit to a more difficult map
177     will be made.
178    
179     orientation How the exits look:
180     0 random "orientation"
181     1 player arrives in the map at
182     a "stairs up", he goes to harder
183     levels by finding a "stairs down"
184     2 reverse of 1
185     3-6 exits are horizontal. In the future
186     these will be made to make exits to
187     rightward, leftward, north and south.
188    
189     origin_x <You shouldn't need to set this> The exit which
190     leads back from this map will go to this x.
191    
192     origin_y Like origin_x
193    
194     random_seed Set the random seed number used. This number
195     completely determines the random numbers: a map
196     with the same random seed and other parameters
197     will always produce exactly the same map.
198    
199     final_map When dungeon_level >= dungeon_depth, another exit
200     isn't usually made. However, if final_map is set
201     to a map's name, then an exit to this map will
202     be made.
203    
204     exit_on_final_map The default action is to place an exit on
205     the final map. When explicitly set to 'no' this will
206     not place a return exit on the final_map.
207     If you use this setting YOU MUST PROVIDE A WAY BACK IN THE FINAL MAP!
208    
209     =head2 Misc. Parameters
210    
211     decoroptions <option> Currently, ignored. Possibly in the future it
212     will cause the decor to be patterned in some way,
213     such as <put decor along walls> or <put decor
214     in center of rooms>
215    
216    
217     treasureoptions <opt> Parameterizes how the treasure is placed and protected.
218     0 choose random treasure options
219     1 concentrate the treasure on the map in a few locations
220     2 hide the treasure behind hidden doors
221     4 put the treasure in a chest which must be unlocked.
222     (a key will be placed somewhere in the map, probably
223     in a monster.)
224     8 Put locked doors around the treasure (a key to each
225     door will be placed in a monster or somewhere reachable
226     by the player: one key on each side of the door.)
227     In onion maps, the treasure is co-located with the
228     exit to harder levels, so this makes the exit harder
229     to get to.
230     16 Trap the treasure. A trap from /styles/trapstyles/traps
231     is selected and inserted into the treasure chest.
232     32 sparse treasure. 1/2 as much treasure is generated.
233     64 rich treasure. 2x as much treasure is generated.
234    
235 root 1.2 If option 1 is not set, options 2-16 are ignored. Options
236     may be added together: treasureoptions 3 means treasure
237     optons 1 and 2 are set.
238    
239 root 1.1 =head2 Map Layout styles
240    
241     =head3 Onion Maps
242    
243     Onion rooms are like this:
244    
245     regular random
246     centered, linear onion: bottom/right centered, nonlinear:
247    
248     ######################### #########################
249     # # # #
250     # ######## ########## # # #####################
251     # # # # # # #
252     # # ###### ######## # # # # #
253     # # # # # # # # ######## ########
254     # # # #### ###### # # # # # # #
255     # # # # # # # # # # # #
256     # # # ############ # # # # # # ########### ##
257     # # # # # # # # # # #
258     # # ################ # # # # # # #########
259     # # # # # # # # #
260     # #################### # # # # # #
261     # # # # # # # #
262     ######################### #########################
263    
264     options:
265     0 Pick random options below
266     1 "centered"
267     2 linear doors (default is nonlinear)
268     4 bottom "centered"
269     8 bottom-right centered
270     16 outer wall off: i.e., no outer wall.
271     32 irregularly/randomly spaced layers (default: regular)
272    
273     =head3 Maze Maps
274    
275     Maze maps are like this:
276    
277 root 1.2 A "roomy" maze:
278    
279     ########################################
280     # #
281     # # # # # # # # #
282     # ## ## # ### # # ## #
283     # ### # # # ## # #
284     # ## ## # ## # # ## #
285     # ## # # ## # # # # # ## ## #
286     # # ## # # #### # #### # # #
287     # ## ## ## ## # # # ## ## # #
288     # # # ## # # # # #
289     # ## ### ### ## #### ## #
290     # ## #### ### # #
291     # ## ### ### # # ## #
292     # ## ### # ## # # # #
293     # ### ### # ### # #### #
294     # # ## ## ##### # ## #
295     # # ## # # ##### ## # #
296     # ## ## ## # # # ## #
297     # ## ### # ## ## # ##### #
298     # #### # # # ### # # #
299     # # ### ## ## # # # # #
300     # ## ## # # ## # #
301     # # #### ## #### #
302     # ##
303     ########################################
304    
305 root 1.1 A "sparse" maze:
306    
307 root 1.2 ########################################
308     # # # # # # # # # # # # # # #
309     # # # # # # # # # # # # # #
310     #### # # ## ### # # # ## ## #
311     # # ### # ## # ## ## #### ##
312     ## # ## # ## # # # #
313     # ## #### ## ## # ## # ## ####
314     #### # ## ### # ## # #
315     # ## ## ## ## # #### #
316     #### # ### ## ## ## ## #
317     # # ### # # # # ###
318     # ##### #### # #### ### ### #
319     ## # # ### # ####
320     # ## # ## ## ### #
321     ## ## ### #### ##### # #
322     # # # ## # # ## #
323     #### #### ## ### #### # # #
324     # # ## ## ## # # #
325     ### ##### # #### #### # ## # ## #
326     # # # ## ## # ## # # #
327     ##### ## ## # ## ## ## # ## # # #
328     # # # # # # ## # ## # # ###
329     # #### # # ## ### # ## # # ## ## # #
330     # # # # # # # # # # # # #
331     ########################################
332    
333     A "braided" maze:
334    
335     ########################################
336     # # # # # # # # # # # # # # #
337     # # # # # # # # # # ##
338     # ## # # ## # # #
339     # ## ## # ## # ## # ## #######
340     # ### # # # # # # ## # #
341     # # # # # # ### ### #### ## #
342     ### #### ## ### # # # ## ##
343     # # # # # ## # #
344     # ## ## ###### ## ### ## #### ####
345     #### # ### # ## # # #
346     # ## # # # ## # ####### ## ####
347     #### # # ### # # # # #
348     # ## ### # ## # ## ### # ##
349     # # ## ##### # # ### ## # # #
350     ## # # ## ### ## ## #
351     # # # # # #### # ### ###
352     # # # ## ##### # # # ## # # #
353     # ## ## # # ## ## # ### # #
354     # # ### ###### # # # # # #
355     ## # ## # # # ## ## # ### #
356     # # ### # ##### # # # ## # #
357     # ## ## ### # ## # # # # ### #
358     # # # # # # # # # # # #
359     ########################################
360 root 1.1
361     A "full" maze:
362    
363 root 1.2 ########################################
364     # # # # # # # # # # # #
365     # # # # # # # # # # # # # # #
366     ## #### ### #### #### #### ## ### # #
367     # ## # # # # ### ### #
368     #### ##### #### ## # # #### # #
369     # ## # # ## # ## # ### ## ## #
370     # ### ## ## # # # # # #
371     # ### ## ## # ### # ##### ##
372     # ## ## ###### ## # ## #### # # #
373     ### # # # # ## # # ########
374     # ####### # ## # ### #### # #
375     # # # # #### ## # ### ##
376     #### # # # ## ## #### #### # # #
377     # ### # ## ## # ### ### ##
378     # # ## ### # ### ### # # #
379     #### #### #### # ## # # # ### #
380     # ## # ## # # # ## ## # ## #
381     # #### #### # ## ### # # ## # ###
382     # ### ## # # # #### ##### #
383     # #### #### ### ### # # # #
384     # ## # # ### # # ##### #
385     # ### #### ###### ##### ####### # #
386     # # # # # # # # #
387     ########################################
388 root 1.1
389     =head3 Spiral Maps
390    
391     A Spiral Map::
392    
393     ###########################
394     ###########################
395     ########### D ##########
396     ######### #### ########
397     ######## ######## #######
398     ####### ########## ######
399     ###### ############ #####
400     ###### #### #####D#####
401     ##### ### ### #### ####
402     ##### #### ##### #### ####
403     #####D#### ###### ####D####
404     ##### ### #C### #### ####
405     ###### #### >###D#### ####
406     ######D########## ####D####
407     ###### ######## ### ####
408     ####### ###### #### #####
409     ######## D D D #### #####
410     #################### ######
411     ################### ######
412     ################# #######
413     ################# <########
414     ###########################
415     ###########################
416    
417     layoutoptions1:
418    
419     0 pick random options
420     1 Regular spiral: distance increases constantly with angle
421     2 Fine spiral: most coils possible are fit in
422     4 Fit Spiral: scale spiral to fit rectanglar region
423 root 1.2 (i.e., the spiral will look elliptical)
424 root 1.1
425     =head3 Rogue-like Maps:
426    
427     A Rogue-like Map:
428    
429     ###############################
430     ############# ###########
431     # ## ###########
432     # DD ###########
433     # ## ###########
434     # ## #### ##
435     # #####D####### ##
436     # D D ##
437     ###D######D##### ####### ##
438     ### ## ### ## ##
439     ###D D ### ###D####
440     ### ## D D < ### ####
441     ### ######D##### ### ####
442     ###D###### ##### #### ####
443     ## #### ##### # ##### ####
444     ## #### ##### ######### ####
445     ## ####D##### ######### ####
446     ## ## ### # ### ####
447     ## ## ### # ###D####
448     ## ## ### # ### ##
449     ######## ### # ### #
450     ######## D D D ### > #
451     ######## ##### ### #
452     ######## ##### ### ##
453     ######## ##### ########
454     ################## ########
455     ###############################
456    
457     layoutoptions1:
458    
459     0 pick random room shapes (i.e., mix it up)
460     1 Always use rectangular rooms
461     2 Always use "circular" rooms
462    
463     =head3 Snake layouts
464    
465     No options are available for snake layouts.
466     A player must touch every room to descend deeper in a snake.
467    
468     This is a basic snake layout:
469    
470     ############################
471     #> #
472     # #
473     # #
474     ##########################D#
475     # #
476     # #
477     # #
478     #D##########################
479     # #
480     # #
481     # #
482     ##########################D#
483     # #
484     # #
485     # #
486     #D##########################
487     # #
488     # #
489     # #
490     # #
491     # <#
492     ############################
493    
494     This is a roomified, xy-symmetric snake layout:
495    
496     ###################################
497     #> # # # # >#
498     # # # # # #
499     ##D####### D D #######D##
500     # # # # # #
501     # # # # # #
502     # D # < # D #
503     # # # # # #
504     # # # # # #
505     ##D####### D D #######D##
506     # # # # # #
507     #> # # # # >#
508     ###################################
509    
510     =head3 Square spirals
511    
512     No options are available for square spirals
513     A player must touch every room to descend in a square spiral.
514    
515     This is a basic square spiral layout:
516    
517     ###############################
518     # # #
519     # D #
520     # #####################D#####
521     # # # # #
522     # # # # #
523     # # D # #
524     # # #############D### #
525     # # # # # # #
526     # # # # # # #
527     # # # D # # #
528     # # # #####D### # #
529     # # # # > # # # #
530     # # # D # # # #
531     # # ######### # # #
532     # # # D # # #
533     # # # # # # #
534     # # D # # # #
535     # ################# # #
536     # # D # #
537     # # # # #
538     # D # # #
539     ######################### #
540     # D #
541     # # #
542     # # #
543     #< # #
544     ###############################
545    
546     This is an xy-symmetric square spiral layout:
547    
548     #####################################
549     # # < # #
550     ##D##########D# #D##########D##
551     # # # ####D#### # # #
552     # ###DD### # # ###DD### #
553     # # #> # ##D###D## # ># # #
554     # # ####D### ###D#### # #
555     # # D # # D # #
556     # ############D#####D############ #
557     # D D #
558     # # # #
559     # D D #
560     # ############D#####D############ #
561     # # D # # D # #
562     # # ####D### ###D#### # #
563     # # #> # ##D###D## # ># # #
564     # ###DD### # # ###DD### #
565     # # # ####D#### # # #
566     ##D##########D# #D##########D##
567     # # < # #
568     #####################################
569    
570     =head2 An example input file
571    
572     layoutstyle onion
573     monsterstyle humanoid
574     dungeon_depth 3
575     xsize 15
576     ysize 15
577     exitstyle cstair
578     orientation 1
579     decorstyle furniture
580     floorstyle dirt
581     wallstyle wooden
582     symmetry 1
583    
584 root 1.3 =head2 AUTHORS
585 root 1.1
586     The original document was taken from Crossfire and subsequently modified by Marc Lehmann.