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

# 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 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 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 =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 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 A "sparse" maze:
306
307 ########################################
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
361 A "full" maze:
362
363 ########################################
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
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 (i.e., the spiral will look elliptical)
424
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 =head2 AUTHORS
585
586 The original document was taken from Crossfire and subsequently modified by Marc Lehmann.