1 | =head1 Random Map Deployment Guide |
1 | =head1 Random Map Deployment Guide |
2 | |
2 | |
3 | =head2 Using random maps |
3 | =head2 Using random maps |
4 | |
4 | |
5 | Any exit with "/!" as the destination map will generate a random map. To |
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 |
6 | specify random map parameters, you put parameters in the message field for |
7 | the exit. |
7 | the exit. |
8 | |
8 | |
9 | =head2 How styles work |
9 | =head2 How styles work |
10 | |
10 | |
11 | A "style" is usually a small map which contains only objects which |
11 | A "style" is usually a small map which contains only objects which define |
12 | define the "style". For example, a monsterstyle "orc" might be a map |
12 | the "style". For example, a monsterstyle "orc" might be a map which has |
13 | generated with crossedit which has six orcs, a kobold, and a troll in it. |
13 | six orcs, a kobold, and a troll in it. When monsters are placed, the |
14 | When monsters are placed, the generator will randomly choose monsters from the |
14 | generator will randomly choose monsters from the "orc" style, and for this |
15 | "orc" style, and for this example, on average, it will generate 6 orcs/troll |
15 | example, on average, it will generate 6 orcs/troll and 1 kobold/troll. So |
16 | and 1 kobold/troll. So orcs will be very common, and there'll be occasional |
16 | orcs will be very common, and there'll be occasional trolls and kobolds. |
17 | trolls and kobolds. |
|
|
18 | |
17 | |
19 | In principle, you may put any object in any style map. However, the |
18 | 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 |
19 | 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 |
20 | 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. |
21 | the editor to modify the style maps, or create new ones. |
23 | |
22 | |
24 | Any style parameters that accept a map path accept both simple maps |
23 | Any style parameters that accept a map path accept both simple maps |
… | |
… | |
38 | |
37 | |
39 | =head2 Style Parameters |
38 | =head2 Style Parameters |
40 | |
39 | |
41 | layoutstyle <style> (special!) Pick the layout style for the map. |
40 | layoutstyle <style> (special!) Pick the layout style for the map. |
42 | Currently, "rogue", "spiral", "maze", "cave", |
41 | Currently, "rogue", "spiral", "maze", "cave", |
43 | "snake", "onion", and "squarespiral" are allowed. |
42 | "castle", "snake", "onion", "squarespiral" and |
|
|
43 | "multiple" are allowed. See below for more |
44 | See below for more detail. |
44 | detail. |
45 | |
45 | |
46 | floorstyle <style> Load /styles/floorstyles/<style> and pick a random |
46 | floorstyle <style> Load /styles/floorstyles/<style> and pick a random |
47 | floortype from that style map for the random map. |
47 | floortype from that style map for the random map. |
48 | The entire map will be tiled with the floortype. |
48 | The entire map will be tiled with the floortype. |
49 | |
49 | |
50 | wallstyle <style> Load /styles/wallstyles/<style> and pick a random |
50 | wallstyle <style> Load /styles/wallstyles/<style> and pick a random |
51 | walltype from that style for the random map. All |
51 | walltype from that style for the random map. All |
52 | the walls in the map will be of this type. The |
52 | the walls in the map will be of this type. The |
53 | walls are modified on insertion so that players |
53 | walls are modified on insertion so that players |
54 | cannot go through them: this is expected for |
54 | cannot go through them: this is expected for |
55 | walls, but the random map generator makes sure of |
55 | walls, but the random map generator makes sure of |
56 | it. A <style> of "none" causes no walls or doors |
56 | it. A <style> of "none" causes no walls or doors |
57 | to be generated. |
57 | to be generated. |
… | |
… | |
66 | leading to another, harder, random map. A style of |
66 | leading to another, harder, random map. A style of |
67 | "none" causes no exits to be generated. |
67 | "none" causes no exits to be generated. |
68 | |
68 | |
69 | decorstyle <style> Load /styles/decorstyles/<style> and pick the |
69 | decorstyle <style> Load /styles/decorstyles/<style> and pick the |
70 | decor objects from that style to insert in the |
70 | decor objects from that style to insert in the |
71 | map. Decor objects are modified on insertion so |
71 | map. Decor objects are modified on insertion so |
72 | that they do NOT block movement, regardless of the |
72 | that they do NOT block movement, regardless of the |
73 | archetype. They are placed randomly. A style of |
73 | archetype. They are placed randomly. A style of |
74 | "none" causes no decor objects to be generated. |
74 | "none" causes no decor objects to be generated. |
75 | |
75 | |
76 | monsterstyle <style> Load /styles/monsterstyles/<style>, if it exists. |
76 | monsterstyle <style> Load /styles/monsterstyles/<style>, if it exists. |
77 | If it doesn't exist, then it will look for a directory |
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 |
78 | of that name. If it finds a directory, it will choose |
79 | a style based on dungeon_level. It will pick the style |
79 | a style based on dungeon_level. It will pick the style |
80 | with the name <name>_# with the # closest to the |
80 | with the name <name>_# with the # closest to the |
81 | dungeon_level. Monster objects are copied from the |
81 | dungeon_level. Monster objects are copied from the |
82 | style map, so you may form style maps with modified |
82 | style map, so you may form style maps with modified |
83 | monsters which are weaker or stronger than the default |
83 | monsters which are weaker or stronger than the default |
84 | archetype.A style of "none" causes no monsters to be |
84 | archetype.A style of "none" causes no monsters to be |
85 | generated. |
85 | generated. |
86 | |
86 | |
87 | treasurestyle <style> (Special) If the style name chosen is contained |
87 | treasurestyle <style> (Special) If the style name chosen is contained |
88 | in the lib/treasures file, it will use |
88 | in the lib/treasures file, it will use |
89 | that for making treasures. If it is NOT |
89 | that for making treasures. If it is NOT |
90 | in the lib/treasures file, it will look up |
90 | in the lib/treasures file, it will look up |
91 | /styles/treasurestyle/<style>, and pick random |
91 | /styles/treasurestyle/<style>, and pick random |
92 | treasures from there. If <style> matches neither |
92 | treasures from there. If <style> matches neither |
93 | of these, it will generate treasures using the |
93 | of these, it will generate treasures using the |
94 | "chest" treasurelist. A style of "none" causes no |
94 | "chest" treasurelist. A style of "none" causes no |
95 | treasures to be placed. |
95 | treasures to be placed. |
96 | |
96 | |
97 | =head2 Layout Parameters |
97 | =head2 Layout Parameters |
98 | |
98 | |
99 | |
99 | |
100 | xsize <int> size of the map: if not set, random from 10 to 70 |
100 | xsize <int> size of the map: if not set, random from 10 to 70 |
101 | |
101 | |
102 | |
102 | |
103 | ysize <int> size of the map: if not set, random from 10 to 70 |
103 | ysize <int> size of the map: if not set, random from 10 to 70 |
104 | |
104 | |
105 | |
105 | |
106 | expand2x <bool> Do we double the size of the layout? This has |
106 | expand2x <bool> Do we double the size of the layout? This has |
107 | the effect of increasing the corridor widths by about |
107 | the effect of increasing the corridor widths by about |
108 | 2x. Set it to a non-zero integer if this is desired. |
108 | 2x. Set it to a non-zero integer if this is desired. |
109 | |
109 | |
110 | |
110 | |
111 | symmetry <sym> symmetry of the layout: You can cause the map generator |
111 | symmetry <sym> symmetry of the layout: You can cause the map generator |
112 | to generate a symmetrical layout by using this flag. |
112 | to generate a symmetrical layout by using this flag. |
113 | symmetry 0 random symmetry |
113 | symmetry 0 random symmetry |
114 | symmetry 1 no symmetry |
114 | symmetry 1 no symmetry |
115 | symmetry 2 symmetry about the vertical centerline |
115 | symmetry 2 symmetry about the vertical centerline |
116 | symmetry 3 symmetry about the horizontal centerline |
116 | symmetry 3 symmetry about the horizontal centerline |
117 | symmetry 4 both 2 and 3 symmetry |
117 | symmetry 4 both 2 and 3 symmetry |
118 | |
118 | |
119 | |
119 | |
120 | Layout Style: Parameter: Effect: |
120 | Layout Style: Parameter: Effect: |
121 | |
121 | |
122 | |
122 | |
123 | maze maze_type 0: roomy (open space with some walls) |
123 | maze maze_type 0: roomy (open space with some walls) |
124 | 1: sparse (maze with some larger open spaces) |
124 | 1: sparse (maze with some larger open spaces) |
125 | 2: braided (few dead ends) |
125 | 2: braided (few dead ends) |
126 | 3: closed (complete maze) |
126 | 3: closed (complete maze) |
127 | default: random |
127 | default: random |
128 | |
128 | |
129 | cave cave_type 0: very rough, mazelike |
129 | cave cave_type 0: very rough, mazelike |
130 | 1: round 1-2 space corridors, often elliptic |
130 | 1: round 1-2 space corridors, often elliptic |
131 | 2: more open, roundish |
131 | 2: more open, roundish |
132 | 3: wide open areas, roundish |
132 | 3: wide open areas, roundish |
133 | |
133 | |
134 | 50% of the time a maze layout will be "doorified", meaning that doors |
134 | 50% of the time a maze layout will be "doorified", meaning that doors |
135 | will be placed at random in the maze. |
135 | will be placed at random in the maze. |
136 | |
136 | |
137 | onion layoutoptions1 0 (default) Pick random options |
137 | onion layoutoptions1 0 (default) Pick random options |
138 | See "Onion Rooms" below for |
138 | See "Onion Rooms" below for |
139 | the rest of the options. |
139 | the rest of the options. |
140 | |
140 | |
141 | onion layoutoptions2 0 (default) Pick a random number of |
141 | onion layoutoptions2 0 (default) Pick a random number of |
142 | "onion layers" |
142 | "onion layers" |
143 | |
143 | |
144 | =head2 Map generation parameters |
144 | =head2 Map generation parameters |
145 | |
145 | |
146 | |
146 | |
147 | difficulty Set the map difficulty. Has no relation to the |
147 | difficulty Set the map difficulty. Has no relation to the |
148 | "difficulty" defined in common/*.c. |
148 | "difficulty" defined in common/*.c. |
149 | If nonzero, this map and its descendants will |
149 | If nonzero, this map and its descendants will |
150 | have the same difficulty. If zero, it'll be set |
150 | have the same difficulty. If zero, it'll be set |
151 | to the value of dungeon_level and incremeneted with |
151 | to the value of dungeon_level and incremeneted with |
152 | each recursive map. |
152 | each recursive map. |
153 | |
153 | |
154 | difficulty_increase Sets how fast the difficulty increases. This value |
154 | difficulty_increase Sets how fast the difficulty increases. This value |
155 | is a float - the default value is 1.0. Reducing |
155 | is a float - the default value is 1.0. Reducing |
156 | This only applies to map without a default |
156 | This only applies to map without a default |
157 | difficulty set (but that could change in the |
157 | difficulty set (but that could change in the |
158 | future). For each level of a map, the difficulty |
158 | future). For each level of a map, the difficulty |
159 | is set to depth * difficulty_increase. Setting |
159 | is set to depth * difficulty_increase. Setting |
160 | this parameter to 0.5 (or other values between 0 |
160 | this parameter to 0.5 (or other values between 0 |
161 | and 1) is a way to have deep dungeons that do not |
161 | and 1) is a way to have deep dungeons that do not |
162 | increase in difficulty all that rapidly. |
162 | increase in difficulty all that rapidly. |
163 | |
163 | |
164 | |
164 | |
165 | dungeon_level Another way of setting the map difficulty. This |
165 | dungeon_level Another way of setting the map difficulty. This |
166 | has no relation to the "difficulty" defined in |
166 | has no relation to the "difficulty" defined in |
167 | the common/*.c source code. The effect is to pick |
167 | the common/*.c source code. The effect is to pick |
168 | which monsters to use: for example, if the |
168 | which monsters to use: for example, if the |
169 | monsterstyle |
169 | monsterstyle |
170 | is "humanoid" and the dungeonlevel is 9, the style |
170 | is "humanoid" and the dungeonlevel is 9, the style |
171 | map /styles/monsterstyles/humanoid/humanoid_9 will be |
171 | map /styles/monsterstyles/humanoid/humanoid_9 will be |
172 | the style from which monsters are chosen. After the |
172 | the style from which monsters are chosen. After the |
173 | monsters are placed, the map |
173 | monsters are placed, the map |
174 | difficulty is set according |
174 | difficulty is set according |
175 | to the server's rule, for treasure purposes. |
175 | to the server's rule, for treasure purposes. |
176 | |
176 | |
177 | dungeon_depth The map generated will have an exit to another |
177 | dungeon_depth The map generated will have an exit to another |
178 | random map of the same style if |
178 | random map of the same style if |
179 | dungeon_level < dungeon_depth. The next random map |
179 | dungeon_level < dungeon_depth. The next random map |
180 | will have dungeon_level incremented. If dungeon_level |
180 | will have dungeon_level incremented. If dungeon_level |
181 | >= dungeon_depth, no exit to a more difficult map |
181 | >= dungeon_depth, no exit to a more difficult map |
182 | will be made. |
182 | will be made. |
183 | |
183 | |
184 | orientation How the exits look: |
184 | orientation How the exits look: |
185 | 0 random "orientation" |
185 | 0 random "orientation" |
186 | 1 player arrives in the map at |
186 | 1 player arrives in the map at |
187 | a "stairs up", he goes to harder |
187 | a "stairs up", he goes to harder |
188 | levels by finding a "stairs down" |
188 | levels by finding a "stairs down" |
189 | 2 reverse of 1 |
189 | 2 reverse of 1 |
190 | 3-6 exits are horizontal. In the future |
190 | 3-6 exits are horizontal. In the future |
191 | these will be made to make exits to |
191 | these will be made to make exits to |
192 | rightward, leftward, north and south. |
192 | rightward, leftward, north and south. |
193 | |
193 | |
|
|
194 | rotate 0 do not randomly rotate the map |
|
|
195 | 1 randomly rotate by 90, 180, 270° (default) |
|
|
196 | |
194 | origin_x <You shouldn't need to set this> The exit which |
197 | origin_x <You shouldn't need to set this> The exit which |
195 | leads back from this map will go to this x. |
198 | leads back from this map will go to this x. |
196 | |
199 | |
197 | origin_y Like origin_x |
200 | origin_y Like origin_x |
198 | |
201 | |
199 | random_seed Set the random seed number used. This number |
202 | random_seed Set the random seed number used. This number |
200 | completely determines the random numbers: a map |
203 | completely determines the random numbers: a map |
201 | with the same random seed and other parameters |
204 | with the same random seed and other parameters |
202 | will always produce exactly the same map. |
205 | will always produce exactly the same map. |
203 | |
206 | |
204 | final_map When dungeon_level >= dungeon_depth, another exit |
207 | final_map When dungeon_level >= dungeon_depth, another exit |
205 | isn't usually made. However, if final_map is set |
208 | isn't usually made. However, if final_map is set |
206 | to a map's name, then an exit to this map will |
209 | to a map's name, then an exit to this map will |
207 | be made. |
210 | be made. |
208 | |
211 | |
209 | exit_on_final_map The default action is to place an exit on |
212 | exit_on_final_map The default action is to place an exit on |
210 | the final map. When explicitly set to 'no' this will |
213 | the final map. When explicitly set to 'no' this will |
211 | not place a return exit on the final_map. |
214 | 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! |
215 | If you use this setting YOU MUST PROVIDE A WAY BACK IN THE FINAL MAP! |
213 | |
216 | |
214 | =head2 Misc. Parameters |
217 | =head2 Misc. Parameters |
215 | |
218 | |
216 | decoroptions <option> Currently, ignored. Possibly in the future it |
219 | decoroptions <option> Currently, ignored. Possibly in the future it |
217 | will cause the decor to be patterned in some way, |
220 | will cause the decor to be patterned in some way, |
218 | such as <put decor along walls> or <put decor |
221 | such as <put decor along walls> or <put decor |
219 | in center of rooms> |
222 | in center of rooms> |
220 | |
223 | |
221 | |
224 | |
222 | treasureoptions <opt> Parameterizes how the treasure is placed and protected. |
225 | treasureoptions <opt> Parameterizes how the treasure is placed and protected. |
223 | 0 choose random treasure options |
226 | 0 choose random treasure options |
224 | 1 concentrate the treasure on the map in a few locations |
227 | 1 concentrate the treasure on the map in a few locations |
225 | 2 hide the treasure behind hidden doors |
228 | 2 hide the treasure behind hidden doors |
226 | 4 put the treasure in a chest which must be unlocked. |
229 | 4 put the treasure in a chest which must be unlocked. |
227 | (a key will be placed somewhere in the map, probably |
230 | (a key will be placed somewhere in the map, probably |
228 | in a monster.) |
231 | in a monster.) |
229 | 8 Put locked doors around the treasure (a key to each |
232 | 8 Put locked doors around the treasure (a key to each |
230 | door will be placed in a monster or somewhere reachable |
233 | door will be placed in a monster or somewhere reachable |
231 | by the player: one key on each side of the door.) |
234 | by the player: one key on each side of the door.) |
232 | In onion maps, the treasure is co-located with the |
235 | In onion maps, the treasure is co-located with the |
233 | exit to harder levels, so this makes the exit harder |
236 | exit to harder levels, so this makes the exit harder |
234 | to get to. |
237 | to get to. |
235 | 16 Trap the treasure. A trap from /styles/trapstyles/traps |
238 | 16 Trap the treasure. A trap from /styles/trapstyles/traps |
236 | is selected and inserted into the treasure chest. |
239 | is selected and inserted into the treasure chest. |
237 | 32 sparse treasure. 1/2 as much treasure is generated. |
240 | 32 sparse treasure. 1/2 as much treasure is generated. |
238 | 64 rich treasure. 2x as much treasure is generated. |
241 | 64 rich treasure. 2x as much treasure is generated. |
239 | |
242 | |
240 | If option 1 is not set, options 2-16 are ignored. Options |
243 | If option 1 is not set, options 2-16 are ignored. Options |
241 | may be added together: treasureoptions 3 means treasure |
244 | may be added together: treasureoptions 3 means treasure |
242 | optons 1 and 2 are set. |
245 | optons 1 and 2 are set. |
243 | |
246 | |
244 | =head2 Map Layout styles |
247 | =head2 Map Layout styles |
245 | |
248 | |
246 | =head3 Onion Maps |
249 | =head3 Onion Maps |
247 | |
250 | |
248 | Onion rooms are like this: |
251 | Onion rooms are like this: |
249 | |
252 | |
250 | regular random |
253 | regular random |
251 | centered, linear onion: bottom/right centered, nonlinear: |
254 | centered, linear onion: bottom/right centered, nonlinear: |
252 | |
255 | |
253 | ######################### ######################### |
256 | ######################### ######################### |
254 | # # # # |
257 | # # # # |
255 | # ######## ########## # # ##################### |
258 | # ######## ########## # # ##################### |
… | |
… | |
265 | # #################### # # # # # # |
268 | # #################### # # # # # # |
266 | # # # # # # # # |
269 | # # # # # # # # |
267 | ######################### ######################### |
270 | ######################### ######################### |
268 | |
271 | |
269 | options: |
272 | options: |
270 | 0 Pick random options below |
273 | 0 Pick random options below |
271 | 1 "centered" |
274 | 1 "centered" |
272 | 2 linear doors (default is nonlinear) |
275 | 2 linear doors (default is nonlinear) |
273 | 4 bottom "centered" |
276 | 4 bottom "centered" |
274 | 8 bottom-right centered |
277 | 8 bottom-right centered |
275 | 16 outer wall off: i.e., no outer wall. |
278 | 16 outer wall off: i.e., no outer wall. |
276 | 32 irregularly/randomly spaced layers (default: regular) |
279 | 32 irregularly/randomly spaced layers (default: regular) |
277 | |
280 | |
278 | =head3 Maze Maps |
281 | =head3 Maze Maps |
279 | |
282 | |
280 | Maze maps are like this: |
283 | Maze maps are like this: |
281 | |
284 | |
… | |
… | |
555 | # ### ######### # ### # |
558 | # ### ######### # ### # |
556 | # # ##### ## ######## # |
559 | # # ##### ## ######## # |
557 | # #### ####### # |
560 | # #### ####### # |
558 | ######################################## |
561 | ######################################## |
559 | |
562 | |
|
|
563 | =head3 Castle layouts |
|
|
564 | |
|
|
565 | Castles are similar to caves, except they generate very straight dungeon |
|
|
566 | features (not unlike roguelike layouts). |
|
|
567 | |
|
|
568 | ######################################## |
|
|
569 | #### #################### ## |
|
|
570 | #### ###### ######### ## |
|
|
571 | #### ### ####### # ######### ## |
|
|
572 | #### D D ## ##### ## |
|
|
573 | #####D## ##### D ## |
|
|
574 | ##### # # # ## ## |
|
|
575 | ##### # #### # ########## |
|
|
576 | ##### # # # # D # |
|
|
577 | ##### # # # ######## #D# # |
|
|
578 | ##### # #D# # ######### ######## |
|
|
579 | ##### ######### # D ####### |
|
|
580 | ##### ########## D ##D######## |
|
|
581 | ###### ### #### ###### #D# # ##### |
|
|
582 | ##### #D# ## ### D # ##### |
|
|
583 | ##### # # ## ###### ##### |
|
|
584 | ##### # # ### ###### ##### |
|
|
585 | #######D###D### ### ## # ## |
|
|
586 | ###### #### ### ## # ## |
|
|
587 | ###### # ##### ## ## |
|
|
588 | ###### # ####### ## # ## |
|
|
589 | ###### D ############# # ## |
|
|
590 | ########### ############# # ## |
|
|
591 | ########### ################## ## |
|
|
592 | ######################################## |
|
|
593 | |
560 | =head3 Spiral Maps |
594 | =head3 Spiral Maps |
561 | |
595 | |
562 | A Spiral Map: |
596 | A Spiral Map: |
563 | |
597 | |
564 | ########################### |
598 | ########################### |
… | |
… | |
586 | ########################### |
620 | ########################### |
587 | |
621 | |
588 | layoutoptions1: |
622 | layoutoptions1: |
589 | |
623 | |
590 | 0 pick random options |
624 | 0 pick random options |
591 | 1 Regular spiral: distance increases constantly with angle |
625 | 1 Regular spiral: distance increases constantly with angle |
592 | 2 Fine spiral: most coils possible are fit in |
626 | 2 Fine spiral: most coils possible are fit in |
593 | 4 Fit Spiral: scale spiral to fit rectanglar region |
627 | 4 Fit Spiral: scale spiral to fit rectanglar region |
594 | (i.e., the spiral will look elliptical) |
628 | (i.e., the spiral will look elliptical) |
595 | |
629 | |
596 | =head3 Rogue-like Maps |
630 | =head3 Rogue-like Maps |
597 | |
631 | |
598 | A Rogue-like Map: |
632 | A Rogue-like Map: |
… | |
… | |
736 | # # # ####D#### # # # |
770 | # # # ####D#### # # # |
737 | ##D##########D# #D##########D## |
771 | ##D##########D# #D##########D## |
738 | # # < # # |
772 | # # < # # |
739 | ##################################### |
773 | ##################################### |
740 | |
774 | |
|
|
775 | =head2 Multiple layouts |
|
|
776 | |
|
|
777 | The layoutstyle "multiple" divides the map into many areas |
|
|
778 | and uses random layout styles in each area. Works best with |
|
|
779 | very high or wide maps and fewer levels. |
|
|
780 | |
741 | =head2 An example input file |
781 | =head2 An example input file |
742 | |
782 | |
743 | layoutstyle onion |
783 | layoutstyle onion |
744 | monsterstyle humanoid |
784 | monsterstyle humanoid |
745 | dungeon_depth 3 |
785 | dungeon_depth 3 |