ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/random_maps.pod
(Generate patch)

Comparing deliantra/server/pod/random_maps.pod (file contents):
Revision 1.1 by root, Tue Jun 29 18:19:01 2010 UTC vs.
Revision 1.10 by root, Mon Jul 12 22:28:17 2010 UTC

37directory etc.). 37directory etc.).
38 38
39=head2 Style Parameters 39=head2 Style Parameters
40 40
41 layoutstyle <style> (special!) Pick the layout style for the map. 41 layoutstyle <style> (special!) Pick the layout style for the map.
42 Currently, "rogue", "spiral", "maze", "snake", 42 Currently, "rogue", "spiral", "maze", "cave",
43 "onion", and "squarespiral" are allowed. See 43 "castle", "snake", "onion", "squarespiral" and
44 "multiple" are allowed. See below for more
44 below for more detail. 45 detail.
45 46
46 floorstyle <style> Load /styles/floorstyles/<style> and pick a random 47 floorstyle <style> Load /styles/floorstyles/<style> and pick a random
47 floortype from that style map for the random map. 48 floortype from that style map for the random map.
48 The entire map will be tiled with the floortype. 49 The entire map will be tiled with the floortype.
49 50
91 /styles/treasurestyle/<style>, and pick random 92 /styles/treasurestyle/<style>, and pick random
92 treasures from there. If <style> matches neither 93 treasures from there. If <style> matches neither
93 of these, it will generate treasures using the 94 of these, it will generate treasures using the
94 "chest" treasurelist. A style of "none" causes no 95 "chest" treasurelist. A style of "none" causes no
95 treasures to be placed. 96 treasures to be placed.
96
97
98 97
99=head2 Layout Parameters 98=head2 Layout Parameters
100 99
101 100
102 xsize <int> size of the map: if not set, random from 10 to 70 101 xsize <int> size of the map: if not set, random from 10 to 70
120 119
121 120
122 Layout Style: Parameter: Effect: 121 Layout Style: Parameter: Effect:
123 122
124 123
125 maze maze_type 0: rooms (open space with some walls) 124 maze maze_type 0: roomy (open space with some walls)
126 1: sparse (maze with some larger open spaces) 125 1: sparse (maze with some larger open spaces)
127 2: braided (few dead ends) 126 2: braided (few dead ends)
128 3: closed (complete maze) 127 3: closed (complete maze)
129 default: random 128 default: random
130 129
130 cave cave_type 0: very rough, mazelike
131 1: round 1-2 space corridors, often elliptic
132 2: more open, roundish
133 3: wide open areas, roundish
134
131 50% of the time a maze layout will be "doorified", meaning that doors 135 50% of the time a maze layout will be "doorified", meaning that doors
132 will be placed at random in the maze. 136 will be placed at random in the maze.
133 137
134 onion layoutoptions1 0 (default) Pick random options 138 onion layoutoptions1 0 (default) Pick random options
135 See "Onion Rooms" below for 139 See "Onion Rooms" below for
136 the rest of the options. 140 the rest of the options.
137 141
138 onion layoutoptions2 0 (default) Pick a random number of 142 onion layoutoptions2 0 (default) Pick a random number of
139 "onion layers" 143 "onion layers"
140
141 144
142=head2 Map generation parameters 145=head2 Map generation parameters
143 146
144 147
145 difficulty Set the map difficulty. Has no relation to the 148 difficulty Set the map difficulty. Has no relation to the
187 2 reverse of 1 190 2 reverse of 1
188 3-6 exits are horizontal. In the future 191 3-6 exits are horizontal. In the future
189 these will be made to make exits to 192 these will be made to make exits to
190 rightward, leftward, north and south. 193 rightward, leftward, north and south.
191 194
195 rotate 0 do not randomly rotate the map
196 1 randomly rotate by 90, 180, 270° (default)
197
192 origin_x <You shouldn't need to set this> The exit which 198 origin_x <You shouldn't need to set this> The exit which
193 leads back from this map will go to this x. 199 leads back from this map will go to this x.
194 200
195 origin_y Like origin_x 201 origin_y Like origin_x
196 202
206 212
207 exit_on_final_map The default action is to place an exit on 213 exit_on_final_map The default action is to place an exit on
208 the final map. When explicitly set to 'no' this will 214 the final map. When explicitly set to 'no' this will
209 not place a return exit on the final_map. 215 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! 216 If you use this setting YOU MUST PROVIDE A WAY BACK IN THE FINAL MAP!
211
212 217
213=head2 Misc. Parameters 218=head2 Misc. Parameters
214 219
215 decoroptions <option> Currently, ignored. Possibly in the future it 220 decoroptions <option> Currently, ignored. Possibly in the future it
216 will cause the decor to be patterned in some way, 221 will cause the decor to be patterned in some way,
234 16 Trap the treasure. A trap from /styles/trapstyles/traps 239 16 Trap the treasure. A trap from /styles/trapstyles/traps
235 is selected and inserted into the treasure chest. 240 is selected and inserted into the treasure chest.
236 32 sparse treasure. 1/2 as much treasure is generated. 241 32 sparse treasure. 1/2 as much treasure is generated.
237 64 rich treasure. 2x as much treasure is generated. 242 64 rich treasure. 2x as much treasure is generated.
238 243
239 If option 1 is not set, options 2-16 are ignored. Options 244 If option 1 is not set, options 2-16 are ignored. Options
240 may be added together: treasureoptions 3 means treasure 245 may be added together: treasureoptions 3 means treasure
241 optons 1 and 2 are set. 246 optons 1 and 2 are set.
242 247
243=head2 Map Layout styles 248=head2 Map Layout styles
244 249
245=head3 Onion Maps 250=head3 Onion Maps
246 251
247Onion rooms are like this: 252Onion rooms are like this:
272 4 bottom "centered" 277 4 bottom "centered"
273 8 bottom-right centered 278 8 bottom-right centered
274 16 outer wall off: i.e., no outer wall. 279 16 outer wall off: i.e., no outer wall.
275 32 irregularly/randomly spaced layers (default: regular) 280 32 irregularly/randomly spaced layers (default: regular)
276 281
277
278=head3 Maze Maps 282=head3 Maze Maps
279 283
280Maze maps are like this: 284Maze maps are like this:
281 285
286A "roomy" maze:
287
288 ########################################
289 # #
290 # # # # # # # # #
291 # ## ## # ### # # ## #
292 # ### # # # ## # #
293 # ## ## # ## # # ## #
294 # ## # # ## # # # # # ## ## #
295 # # ## # # #### # #### # # #
296 # ## ## ## ## # # # ## ## # #
297 # # # ## # # # # #
298 # ## ### ### ## #### ## #
299 # ## #### ### # #
300 # ## ### ### # # ## #
301 # ## ### # ## # # # #
302 # ### ### # ### # #### #
303 # # ## ## ##### # ## #
304 # # ## # # ##### ## # #
305 # ## ## ## # # # ## #
306 # ## ### # ## ## # ##### #
307 # #### # # # ### # # #
308 # # ### ## ## # # # # #
309 # ## ## # # ## # #
310 # # #### ## #### #
311 # ##
312 ########################################
313
282A "sparse" maze: 314A "sparse" maze:
283 315
284 ######################################## 316 ########################################
317 # # # # # # # # # # # # # # #
285 # # # # # # # # # # # # # # 318 # # # # # # # # # # # # # #
286 # # # # # # # # # # # # 319 #### # # ## ### # # # ## ## #
287 #### ## ## # # ### # ## # # # ## 320 # # ### # ## # ## ## #### ##
288 # ##### # ## # # # ## ### ## ### # 321 ## # ## # ## # # # #
289 ## ### # # # # 322 # ## #### ## ## # ## # ## ####
290 # ### # # #### ### # 323 #### # ## ### # ## # #
291 # # ## ## ## # # ### 324 # ## ## ## ## # #### #
292 # ###### # ### # # ## # # 325 #### # ### ## ## ## ## #
293 # # ## #### ## # # # # # 326 # # ### # # # # ###
294 # # ## ## ## ### ## # # # # # 327 # ##### #### # #### ### ### #
328 ## # # ### # ####
329 # ## # ## ## ### #
330 ## ## ### #### ##### # #
331 # # # ## # # ## #
332 #### #### ## ### #### # # #
333 # # ## ## ## # # #
334 ### ##### # #### #### # ## # ## #
335 # # # ## ## # ## # # #
295 #### ## ## ## ## ### # ### ### 336 ##### ## ## # ## ## ## # ## # # #
296 # # ## ##### # ### # 337 # # # # # # ## # ## # # ###
297 ## ## # ### # ## ##
298 # ## ## ## # ## # ### #
299 ## # # # # # # # ## #
300 # ### ### ## # ## ## #### ## # #
301 ## # # # # # # # #### # ###
302 # ### ## ## # ## ## ## # ### #
303 ## # ## # # # # # # ## # ##
304 # ##### ## ## #### ## # # # ## # 338 # #### # # ## ### # ## # # ## ## # #
305 ## # # # # ## # ### #
306 # # # # # # # # # # # # # # 339 # # # # # # # # # # # # #
307 ######################################## 340 ########################################
341
342A "braided" maze:
343
344 ########################################
345 # # # # # # # # # # # # # # #
346 # # # # # # # # # # ##
347 # ## # # ## # # #
348 # ## ## # ## # ## # ## #######
349 # ### # # # # # # ## # #
350 # # # # # # ### ### #### ## #
351 ### #### ## ### # # # ## ##
352 # # # # # ## # #
353 # ## ## ###### ## ### ## #### ####
354 #### # ### # ## # # #
355 # ## # # # ## # ####### ## ####
356 #### # # ### # # # # #
357 # ## ### # ## # ## ### # ##
358 # # ## ##### # # ### ## # # #
359 ## # # ## ### ## ## #
360 # # # # # #### # ### ###
361 # # # ## ##### # # # ## # # #
362 # ## ## # # ## ## # ### # #
363 # # ### ###### # # # # # #
364 ## # ## # # # ## ## # ### #
365 # # ### # ##### # # # ## # #
366 # ## ## ### # ## # # # # ### #
367 # # # # # # # # # # # #
368 ########################################
308 369
309A "full" maze: 370A "full" maze:
310 371
311 ######################################## 372 ########################################
312 # # # # # # # 373 # # # # # # # # # # # #
313 # # # # # # # # # # # # # # #
314 ### ## ## ######## ### ### ### # #
315 # # # ## # ### ### # ### ##
316 # ##### ### ##### ## ## ## # #
317 # # # ## # # ## #### # # # ##
318 # #### ## ### #### # ## ## ### # # #
319 # # # # # ### # # # #
320 # ### ## ## ### #### #### ## # ###
321 # # # # # # #### ## # # ## # #
322 # # ## #### ## # ## # ## # #
323 # #### ## # ### #### # ### # #### #
324 # # # # # # # # ## #### # #
325 # ##### #### ## ### # # ## #
326 # ## ## # ## ## ## ##### # # #
327 # # # # ## # # # ## # # ### # #
328 ## ### # ## # # #### ### # # # ## #
329 # # # # ## # # # ## ### # #
330 ## # #### ## # # ###### # # #### #
331 # # #### # ###### ## ### # #
332 ### # ## ## # # # ## #
333 # # # # # # # # # # # # # 374 # # # # # # # # # # # # # # #
375 ## #### ### #### #### #### ## ### # #
376 # ## # # # # ### ### #
377 #### ##### #### ## # # #### # #
378 # ## # # ## # ## # ### ## ## #
379 # ### ## ## # # # # # #
380 # ### ## ## # ### # ##### ##
381 # ## ## ###### ## # ## #### # # #
382 ### # # # # ## # # ########
383 # ####### # ## # ### #### # #
384 # # # # #### ## # ### ##
385 #### # # # ## ## #### #### # # #
386 # ### # ## ## # ### ### ##
387 # # ## ### # ### ### # # #
388 #### #### #### # ## # # # ### #
389 # ## # ## # # # ## ## # ## #
390 # #### #### # ## ### # # ## # ###
391 # ### ## # # # #### ##### #
392 # #### #### ### ### # # # #
393 # ## # # ### # # ##### #
394 # ### #### ###### ##### ####### # #
395 # # # # # # # # #
334 ######################################## 396 ########################################
335 397
398=head3 Cave Maps
399
400Type 0, rough:
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 # ## ## ####### ## ######
451 # # ###### ###### #### ## ######
452 ########################################
453
454Type 1: corridors
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 ### ######### ###
505 ########################################
506 ########################################
507
508Type 2: somewhat open
509
510 ########################################
511 #################### ##### ###
512 ############# ##### #### ##
513 #### ##### #### ## #
514 ### ### ##### ## #
515 # # ##### # ## #### #
516 # # ### ### ######## #### #
517 # # # ## # ### ## # #
518 # # # ## #
519 ## ### ## ## #
520 ### ####### ### ## ###
521 ############## ### #### ####
522 ############### ## #### ####
523 ### ######## ## ### # ###
524 ## ########## ## ## ### ##
525 ### ### ### ## ##### #
526 ## ### ## # ## ######## #
527 ## ##### ### # ## ######### #
528 # #### ### ## ### ####### #
529 # ## ### ##### ## ##
530 ## #### ## # ###### # ###
531 ### ### #### # ## ##### ####
532 #### # ##### ### ##############
533 #### ##### ###################
534 ########################################
535
536Type 3: wide open
537
538 ########################################
539 # ######## ####### #
540 # ######## ######## #
541 # ##### ######### ###
542 ### ##### ## ### ########## ###
543 ## ##### ### #### ### ### ###
544 ### ###### ### #### ## #
545 ### ##### ## ######## ## #
546 ## ## ## ########## #
547 ## ## ## ########## #
548 # ### ######### ## #
549 # ####### ######## #### #
550 # ## ######## ##### ##### #
551 # #### ##### ### ##### #
552 # #### ### #### #
553 # #### ### #### #### #
554 # ### ### ##### ##### #
555 # ### #### ## ########### #### #
556 # ## #### ## ########## #####
557 # ## ####### ##### ####
558 # ### ####### ###### # #
559 # ### ######### # ### #
560 # # ##### ## ######## #
561 # #### ####### #
562 ########################################
563
564=head3 Castle layouts
565
566Castles are similar to caves, except they generate very straight dungeon
567features (not unlike roguelike layouts).
568
569 ########################################
570 #### #################### ##
571 #### ###### ######### ##
572 #### ### ####### # ######### ##
573 #### D D ## ##### ##
574 #####D## ##### D ##
575 ##### # # # ## ##
576 ##### # #### # ##########
577 ##### # # # # D #
578 ##### # # # ######## #D# #
579 ##### # #D# # ######### ########
580 ##### ######### # D #######
581 ##### ########## D ##D########
582 ###### ### #### ###### #D# # #####
583 ##### #D# ## ### D # #####
584 ##### # # ## ###### #####
585 ##### # # ### ###### #####
586 #######D###D### ### ## # ##
587 ###### #### ### ## # ##
588 ###### # ##### ## ##
589 ###### # ####### ## # ##
590 ###### D ############# # ##
591 ########### ############# # ##
592 ########### ################## ##
593 ########################################
336 594
337=head3 Spiral Maps 595=head3 Spiral Maps
338 596
339 A Spiral Map:: 597A Spiral Map:
340 598
341 ########################### 599 ###########################
342 ########################### 600 ###########################
343 ########### D ########## 601 ########### D ##########
344 ######### #### ######## 602 ######### #### ########
366 624
367 0 pick random options 625 0 pick random options
368 1 Regular spiral: distance increases constantly with angle 626 1 Regular spiral: distance increases constantly with angle
369 2 Fine spiral: most coils possible are fit in 627 2 Fine spiral: most coils possible are fit in
370 4 Fit Spiral: scale spiral to fit rectanglar region 628 4 Fit Spiral: scale spiral to fit rectanglar region
371 (i.e., the spiral will look elliptical) 629 (i.e., the spiral will look elliptical)
372 630
373=head3 Rogue-like Maps: 631=head3 Rogue-like Maps
374 632
375A Rogue-like Map: 633A Rogue-like Map:
376 634
377 ############################### 635 ###############################
378 ############# ########### 636 ############# ###########
513 # # # ####D#### # # # 771 # # # ####D#### # # #
514 ##D##########D# #D##########D## 772 ##D##########D# #D##########D##
515 # # < # # 773 # # < # #
516 ##################################### 774 #####################################
517 775
776=head2 Multiple layouts
777
778The layoutstyle "multiple" divides the map into many areas
779and uses random layout styles in each area. Works best with
780very high or wide maps and fewer levels.
518 781
519=head2 An example input file 782=head2 An example input file
520 783
521 layoutstyle onion 784 layoutstyle onion
522 monsterstyle humanoid 785 monsterstyle humanoid
528 decorstyle furniture 791 decorstyle furniture
529 floorstyle dirt 792 floorstyle dirt
530 wallstyle wooden 793 wallstyle wooden
531 symmetry 1 794 symmetry 1
532 795
533
534=head2 Below is the original proposal
535
536 Random Maps
537
538 The major thing still missing from Crossfire, I think, is a good facility
539for generating random maps:
540
541 1. They can be used by map creators to create a basic layout for his
542quest or whatever, so that he need not start from a blank canvas.
543
544 2. Buildings with nothing else in them can have a random map in them.
545In fact, we could have the same random map generated every time someone
546enters a particular building (pick the seed off of the parent map name
547and the entrance location!) This would transform the world from finite
548to infinite.
549
550 Needed Features:
551
552 Styles:
553
554 Random maps would need to be "styled": walls, doors, monsters, and other
555decor should be picked from certain subsets of the total object set. An inn
556has a very different style than a castle, and from a dungeon, in both walls,
557decor, and monsters.
558
559 Ubiquity: (map configurable: unspecified==no random maps)
560
561 Any exit which does not have a destination specified should lead to
562a random map, but WITH a sign saying "this is a random map".
563
564 Identifiability: (configurable)
565
566 Random maps includes a sign
567which states that the map is random.
568
569 Recursion:
570
571 Random maps should optionally have another entrance to a random map of
572the same style. The depth of recursion should be specifiable.
573
574 Difficulty:
575
576 Difficulty should be specifiable. Also, whether the map advances in
577difficult with recursion should be specified.
578
579 Quests:
580
581 It would be cool if random quests could be implemented, too. I won't
582put this in immediately.
583
584 Standalone operation:
585
586 It'd be cool if the random map generator operated standalone, so that
587map designers could use it easily as well as the server could at exits.
588
589 Size:
590
591 Random maps should be sized. A big, multi-square exit should have a bigger
592random map to it, while a small house should have a small interior.
593
594 Inheritance:
595
596 The type and location of the exit should imply something about its random
597interior. A shop exit should have a shop interior, a house should have a
598home interior, etc, a difficult map should have difficult sub-maps.
599
600 Directedness:
601
602 Buildings should have random maps with stairs up to the next random map,
603dungeons with stairs down, etc.
604
605 What does everyone think? Anyone willing to help? Has anyone already
606 made so much progress on this that I should just help them instead of
607 starting one myself?
608
609
610 Algorithms:
611
612 Maze algorithm: start from a wall point, move forward left or right
613or start from a new wall point, at random, recursively. If blocked,
614pop the stack until you can walk again. If you return all the way,
615a maze is generated.
616
617
618 Specs for a room algorithm:
619 Can you write for a function:
620
621 char **room_gen_corridored(int xsize, int ysize, int option);
622
623 which allocates and returns a char[xsize][ysize], with # being a wall
624 and a char value of 0 indicating nothing.
625 like::
626
627 ######################
628 # # # #
629 # # # #
630 # #
631 # # # #
632 ######### ##########
633 # # # #
634 # #
635 # # # #
636 # # # #
637 ######### ##########
638 # # # #
639 # #
640 # # # #
641 ######################
642
643 Some suggested options:
644 option:
645 0 random choice of one of the other options below *
646 1 vertical centered corridor *
647 2 horizontal centered corridor *
648 4 vertical corridor on the right-hand wall *
649 8 vertical corridor on the left-hand wall
650 16 horizontal corridor on the bottom wall *
651 32 horizontal corridor on the top wall
652
653 The *'d ones are the important ones.
654
655 Options 4 and 16 are important so I can easily create reasonable
656 bilaterally and 4-way symmetric maps, as in a castle.
657
658 If you're really ambitious, you could make it so you could ADD the
659 options to get something like 10: centered vertical corridor and right-hand
660 corridor.
661
662 One restriction you must satisfy, however, is that every place on the map
663 be accessible from everywhere else.
664
665 Feel free to contact me with any questons.
666
667 peterm@langmuir.eecs.berkeley.edu
668
669=head1 AUTHORS 796=head2 AUTHORS
670 797
671The original document was taken from Crossfire and subsequently modified by Marc Lehmann. 798The original document was taken from Crossfire and subsequently modified by Marc Lehmann.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines