ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/random_maps.pod
Revision: 1.2
Committed: Tue Jun 29 18:27:02 2010 UTC (13 years, 11 months ago) by root
Branch: MAIN
Changes since 1.1: +112 -191 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
98
99 =head2 Layout Parameters
100
101
102 xsize <int> size of the map: if not set, random from 10 to 70
103
104
105 ysize <int> size of the map: if not set, random from 10 to 70
106
107
108 expand2x <bool> Do we double the size of the layout? This has
109 the effect of increasing the corridor widths by about
110 2x. Set it to a non-zero integer if this is desired.
111
112
113 symmetry <sym> symmetry of the layout: You can cause the map generator
114 to generate a symmetrical layout by using this flag.
115 symmetry 0 random symmetry
116 symmetry 1 no symmetry
117 symmetry 2 symmetry about the vertical centerline
118 symmetry 3 symmetry about the horizontal centerline
119 symmetry 4 both 2 and 3 symmetry
120
121
122 Layout Style: Parameter: Effect:
123
124
125 maze maze_type 0: roomy (open space with some walls)
126 1: sparse (maze with some larger open spaces)
127 2: braided (few dead ends)
128 3: closed (complete maze)
129 default: random
130
131 50% of the time a maze layout will be "doorified", meaning that doors
132 will be placed at random in the maze.
133
134 onion layoutoptions1 0 (default) Pick random options
135 See "Onion Rooms" below for
136 the rest of the options.
137
138 onion layoutoptions2 0 (default) Pick a random number of
139 "onion layers"
140
141
142 =head2 Map generation parameters
143
144
145 difficulty Set the map difficulty. Has no relation to the
146 "difficulty" defined in common/*.c.
147 If nonzero, this map and its descendants will
148 have the same difficulty. If zero, it'll be set
149 to the value of dungeon_level and incremeneted with
150 each recursive map.
151
152 difficulty_increase Sets how fast the difficulty increases. This value
153 is a float - the default value is 1.0. Reducing
154 This only applies to map without a default
155 difficulty set (but that could change in the
156 future). For each level of a map, the difficulty
157 is set to depth * difficulty_increase. Setting
158 this parameter to 0.5 (or other values between 0
159 and 1) is a way to have deep dungeons that do not
160 increase in difficulty all that rapidly.
161
162
163 dungeon_level Another way of setting the map difficulty. This
164 has no relation to the "difficulty" defined in
165 the common/*.c source code. The effect is to pick
166 which monsters to use: for example, if the
167 monsterstyle
168 is "humanoid" and the dungeonlevel is 9, the style
169 map /styles/monsterstyles/humanoid/humanoid_9 will be
170 the style from which monsters are chosen. After the
171 monsters are placed, the map
172 difficulty is set according
173 to the server's rule, for treasure purposes.
174
175 dungeon_depth The map generated will have an exit to another
176 random map of the same style if
177 dungeon_level < dungeon_depth. The next random map
178 will have dungeon_level incremented. If dungeon_level
179 >= dungeon_depth, no exit to a more difficult map
180 will be made.
181
182 orientation How the exits look:
183 0 random "orientation"
184 1 player arrives in the map at
185 a "stairs up", he goes to harder
186 levels by finding a "stairs down"
187 2 reverse of 1
188 3-6 exits are horizontal. In the future
189 these will be made to make exits to
190 rightward, leftward, north and south.
191
192 origin_x <You shouldn't need to set this> The exit which
193 leads back from this map will go to this x.
194
195 origin_y Like origin_x
196
197 random_seed Set the random seed number used. This number
198 completely determines the random numbers: a map
199 with the same random seed and other parameters
200 will always produce exactly the same map.
201
202 final_map When dungeon_level >= dungeon_depth, another exit
203 isn't usually made. However, if final_map is set
204 to a map's name, then an exit to this map will
205 be made.
206
207 exit_on_final_map The default action is to place an exit on
208 the final map. When explicitly set to 'no' this will
209 not place a return exit on the final_map.
210 If you use this setting YOU MUST PROVIDE A WAY BACK IN THE FINAL MAP!
211
212
213 =head2 Misc. Parameters
214
215 decoroptions <option> Currently, ignored. Possibly in the future it
216 will cause the decor to be patterned in some way,
217 such as <put decor along walls> or <put decor
218 in center of rooms>
219
220
221 treasureoptions <opt> Parameterizes how the treasure is placed and protected.
222 0 choose random treasure options
223 1 concentrate the treasure on the map in a few locations
224 2 hide the treasure behind hidden doors
225 4 put the treasure in a chest which must be unlocked.
226 (a key will be placed somewhere in the map, probably
227 in a monster.)
228 8 Put locked doors around the treasure (a key to each
229 door will be placed in a monster or somewhere reachable
230 by the player: one key on each side of the door.)
231 In onion maps, the treasure is co-located with the
232 exit to harder levels, so this makes the exit harder
233 to get to.
234 16 Trap the treasure. A trap from /styles/trapstyles/traps
235 is selected and inserted into the treasure chest.
236 32 sparse treasure. 1/2 as much treasure is generated.
237 64 rich treasure. 2x as much treasure is generated.
238
239 If option 1 is not set, options 2-16 are ignored. Options
240 may be added together: treasureoptions 3 means treasure
241 optons 1 and 2 are set.
242
243 =head2 Map Layout styles
244
245 =head3 Onion Maps
246
247 Onion rooms are like this:
248
249 regular random
250 centered, linear onion: bottom/right centered, nonlinear:
251
252 ######################### #########################
253 # # # #
254 # ######## ########## # # #####################
255 # # # # # # #
256 # # ###### ######## # # # # #
257 # # # # # # # # ######## ########
258 # # # #### ###### # # # # # # #
259 # # # # # # # # # # # #
260 # # # ############ # # # # # # ########### ##
261 # # # # # # # # # # #
262 # # ################ # # # # # # #########
263 # # # # # # # # #
264 # #################### # # # # # #
265 # # # # # # # #
266 ######################### #########################
267
268 options:
269 0 Pick random options below
270 1 "centered"
271 2 linear doors (default is nonlinear)
272 4 bottom "centered"
273 8 bottom-right centered
274 16 outer wall off: i.e., no outer wall.
275 32 irregularly/randomly spaced layers (default: regular)
276
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 Spiral Maps
395
396 A Spiral Map::
397
398 ###########################
399 ###########################
400 ########### D ##########
401 ######### #### ########
402 ######## ######## #######
403 ####### ########## ######
404 ###### ############ #####
405 ###### #### #####D#####
406 ##### ### ### #### ####
407 ##### #### ##### #### ####
408 #####D#### ###### ####D####
409 ##### ### #C### #### ####
410 ###### #### >###D#### ####
411 ######D########## ####D####
412 ###### ######## ### ####
413 ####### ###### #### #####
414 ######## D D D #### #####
415 #################### ######
416 ################### ######
417 ################# #######
418 ################# <########
419 ###########################
420 ###########################
421
422 layoutoptions1:
423
424 0 pick random options
425 1 Regular spiral: distance increases constantly with angle
426 2 Fine spiral: most coils possible are fit in
427 4 Fit Spiral: scale spiral to fit rectanglar region
428 (i.e., the spiral will look elliptical)
429
430 =head3 Rogue-like Maps:
431
432 A Rogue-like Map:
433
434 ###############################
435 ############# ###########
436 # ## ###########
437 # DD ###########
438 # ## ###########
439 # ## #### ##
440 # #####D####### ##
441 # D D ##
442 ###D######D##### ####### ##
443 ### ## ### ## ##
444 ###D D ### ###D####
445 ### ## D D < ### ####
446 ### ######D##### ### ####
447 ###D###### ##### #### ####
448 ## #### ##### # ##### ####
449 ## #### ##### ######### ####
450 ## ####D##### ######### ####
451 ## ## ### # ### ####
452 ## ## ### # ###D####
453 ## ## ### # ### ##
454 ######## ### # ### #
455 ######## D D D ### > #
456 ######## ##### ### #
457 ######## ##### ### ##
458 ######## ##### ########
459 ################## ########
460 ###############################
461
462 layoutoptions1:
463
464 0 pick random room shapes (i.e., mix it up)
465 1 Always use rectangular rooms
466 2 Always use "circular" rooms
467
468 =head3 Snake layouts
469
470 No options are available for snake layouts.
471 A player must touch every room to descend deeper in a snake.
472
473 This is a basic snake layout:
474
475 ############################
476 #> #
477 # #
478 # #
479 ##########################D#
480 # #
481 # #
482 # #
483 #D##########################
484 # #
485 # #
486 # #
487 ##########################D#
488 # #
489 # #
490 # #
491 #D##########################
492 # #
493 # #
494 # #
495 # #
496 # <#
497 ############################
498
499 This is a roomified, xy-symmetric snake layout:
500
501 ###################################
502 #> # # # # >#
503 # # # # # #
504 ##D####### D D #######D##
505 # # # # # #
506 # # # # # #
507 # D # < # D #
508 # # # # # #
509 # # # # # #
510 ##D####### D D #######D##
511 # # # # # #
512 #> # # # # >#
513 ###################################
514
515 =head3 Square spirals
516
517 No options are available for square spirals
518 A player must touch every room to descend in a square spiral.
519
520 This is a basic square spiral layout:
521
522 ###############################
523 # # #
524 # D #
525 # #####################D#####
526 # # # # #
527 # # # # #
528 # # D # #
529 # # #############D### #
530 # # # # # # #
531 # # # # # # #
532 # # # D # # #
533 # # # #####D### # #
534 # # # # > # # # #
535 # # # D # # # #
536 # # ######### # # #
537 # # # D # # #
538 # # # # # # #
539 # # D # # # #
540 # ################# # #
541 # # D # #
542 # # # # #
543 # D # # #
544 ######################### #
545 # D #
546 # # #
547 # # #
548 #< # #
549 ###############################
550
551 This is an xy-symmetric square spiral layout:
552
553 #####################################
554 # # < # #
555 ##D##########D# #D##########D##
556 # # # ####D#### # # #
557 # ###DD### # # ###DD### #
558 # # #> # ##D###D## # ># # #
559 # # ####D### ###D#### # #
560 # # D # # D # #
561 # ############D#####D############ #
562 # D D #
563 # # # #
564 # D D #
565 # ############D#####D############ #
566 # # D # # D # #
567 # # ####D### ###D#### # #
568 # # #> # ##D###D## # ># # #
569 # ###DD### # # ###DD### #
570 # # # ####D#### # # #
571 ##D##########D# #D##########D##
572 # # < # #
573 #####################################
574
575
576 =head2 An example input file
577
578 layoutstyle onion
579 monsterstyle humanoid
580 dungeon_depth 3
581 xsize 15
582 ysize 15
583 exitstyle cstair
584 orientation 1
585 decorstyle furniture
586 floorstyle dirt
587 wallstyle wooden
588 symmetry 1
589
590 =head1 AUTHORS
591
592 The original document was taken from Crossfire and subsequently modified by Marc Lehmann.