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.8 by root, Sat Jul 3 13:14:35 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
206 209
207 exit_on_final_map The default action is to place an exit on 210 exit_on_final_map The default action is to place an exit on
208 the final map. When explicitly set to 'no' this will 211 the final map. When explicitly set to 'no' this will
209 not place a return exit on the final_map. 212 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! 213 If you use this setting YOU MUST PROVIDE A WAY BACK IN THE FINAL MAP!
211
212 214
213=head2 Misc. Parameters 215=head2 Misc. Parameters
214 216
215 decoroptions <option> Currently, ignored. Possibly in the future it 217 decoroptions <option> Currently, ignored. Possibly in the future it
216 will cause the decor to be patterned in some way, 218 will cause the decor to be patterned in some way,
234 16 Trap the treasure. A trap from /styles/trapstyles/traps 236 16 Trap the treasure. A trap from /styles/trapstyles/traps
235 is selected and inserted into the treasure chest. 237 is selected and inserted into the treasure chest.
236 32 sparse treasure. 1/2 as much treasure is generated. 238 32 sparse treasure. 1/2 as much treasure is generated.
237 64 rich treasure. 2x as much treasure is generated. 239 64 rich treasure. 2x as much treasure is generated.
238 240
239 If option 1 is not set, options 2-16 are ignored. Options 241 If option 1 is not set, options 2-16 are ignored. Options
240 may be added together: treasureoptions 3 means treasure 242 may be added together: treasureoptions 3 means treasure
241 optons 1 and 2 are set. 243 optons 1 and 2 are set.
242 244
243=head2 Map Layout styles 245=head2 Map Layout styles
244 246
245=head3 Onion Maps 247=head3 Onion Maps
246 248
247Onion rooms are like this: 249Onion rooms are like this:
272 4 bottom "centered" 274 4 bottom "centered"
273 8 bottom-right centered 275 8 bottom-right centered
274 16 outer wall off: i.e., no outer wall. 276 16 outer wall off: i.e., no outer wall.
275 32 irregularly/randomly spaced layers (default: regular) 277 32 irregularly/randomly spaced layers (default: regular)
276 278
277
278=head3 Maze Maps 279=head3 Maze Maps
279 280
280Maze maps are like this: 281Maze maps are like this:
281 282
283A "roomy" maze:
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
282A "sparse" maze: 311A "sparse" maze:
283 312
284 ######################################## 313 ########################################
314 # # # # # # # # # # # # # # #
285 # # # # # # # # # # # # # # 315 # # # # # # # # # # # # # #
286 # # # # # # # # # # # # 316 #### # # ## ### # # # ## ## #
287 #### ## ## # # ### # ## # # # ## 317 # # ### # ## # ## ## #### ##
288 # ##### # ## # # # ## ### ## ### # 318 ## # ## # ## # # # #
289 ## ### # # # # 319 # ## #### ## ## # ## # ## ####
290 # ### # # #### ### # 320 #### # ## ### # ## # #
291 # # ## ## ## # # ### 321 # ## ## ## ## # #### #
292 # ###### # ### # # ## # # 322 #### # ### ## ## ## ## #
293 # # ## #### ## # # # # # 323 # # ### # # # # ###
294 # # ## ## ## ### ## # # # # # 324 # ##### #### # #### ### ### #
325 ## # # ### # ####
326 # ## # ## ## ### #
327 ## ## ### #### ##### # #
328 # # # ## # # ## #
329 #### #### ## ### #### # # #
330 # # ## ## ## # # #
331 ### ##### # #### #### # ## # ## #
332 # # # ## ## # ## # # #
295 #### ## ## ## ## ### # ### ### 333 ##### ## ## # ## ## ## # ## # # #
296 # # ## ##### # ### # 334 # # # # # # ## # ## # # ###
297 ## ## # ### # ## ##
298 # ## ## ## # ## # ### #
299 ## # # # # # # # ## #
300 # ### ### ## # ## ## #### ## # #
301 ## # # # # # # # #### # ###
302 # ### ## ## # ## ## ## # ### #
303 ## # ## # # # # # # ## # ##
304 # ##### ## ## #### ## # # # ## # 335 # #### # # ## ### # ## # # ## ## # #
305 ## # # # # ## # ### #
306 # # # # # # # # # # # # # # 336 # # # # # # # # # # # # #
307 ######################################## 337 ########################################
338
339A "braided" maze:
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 ########################################
308 366
309A "full" maze: 367A "full" maze:
310 368
311 ######################################## 369 ########################################
312 # # # # # # # 370 # # # # # # # # # # # #
313 # # # # # # # # # # # # # # #
314 ### ## ## ######## ### ### ### # #
315 # # # ## # ### ### # ### ##
316 # ##### ### ##### ## ## ## # #
317 # # # ## # # ## #### # # # ##
318 # #### ## ### #### # ## ## ### # # #
319 # # # # # ### # # # #
320 # ### ## ## ### #### #### ## # ###
321 # # # # # # #### ## # # ## # #
322 # # ## #### ## # ## # ## # #
323 # #### ## # ### #### # ### # #### #
324 # # # # # # # # ## #### # #
325 # ##### #### ## ### # # ## #
326 # ## ## # ## ## ## ##### # # #
327 # # # # ## # # # ## # # ### # #
328 ## ### # ## # # #### ### # # # ## #
329 # # # # ## # # # ## ### # #
330 ## # #### ## # # ###### # # #### #
331 # # #### # ###### ## ### # #
332 ### # ## ## # # # ## #
333 # # # # # # # # # # # # # 371 # # # # # # # # # # # # # # #
372 ## #### ### #### #### #### ## ### # #
373 # ## # # # # ### ### #
374 #### ##### #### ## # # #### # #
375 # ## # # ## # ## # ### ## ## #
376 # ### ## ## # # # # # #
377 # ### ## ## # ### # ##### ##
378 # ## ## ###### ## # ## #### # # #
379 ### # # # # ## # # ########
380 # ####### # ## # ### #### # #
381 # # # # #### ## # ### ##
382 #### # # # ## ## #### #### # # #
383 # ### # ## ## # ### ### ##
384 # # ## ### # ### ### # # #
385 #### #### #### # ## # # # ### #
386 # ## # ## # # # ## ## # ## #
387 # #### #### # ## ### # # ## # ###
388 # ### ## # # # #### ##### #
389 # #### #### ### ### # # # #
390 # ## # # ### # # ##### #
391 # ### #### ###### ##### ####### # #
392 # # # # # # # # #
334 ######################################## 393 ########################################
335 394
395=head3 Cave Maps
396
397Type 0, rough:
398
399 ########################################
400 ################################# ####
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
451Type 1: corridors
452
453 ########################################
454 ############################ #
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
505Type 2: somewhat open
506
507 ########################################
508 #################### ##### ###
509 ############# ##### #### ##
510 #### ##### #### ## #
511 ### ### ##### ## #
512 # # ##### # ## #### #
513 # # ### ### ######## #### #
514 # # # ## # ### ## # #
515 # # # ## #
516 ## ### ## ## #
517 ### ####### ### ## ###
518 ############## ### #### ####
519 ############### ## #### ####
520 ### ######## ## ### # ###
521 ## ########## ## ## ### ##
522 ### ### ### ## ##### #
523 ## ### ## # ## ######## #
524 ## ##### ### # ## ######### #
525 # #### ### ## ### ####### #
526 # ## ### ##### ## ##
527 ## #### ## # ###### # ###
528 ### ### #### # ## ##### ####
529 #### # ##### ### ##############
530 #### ##### ###################
531 ########################################
532
533Type 3: wide open
534
535 ########################################
536 # ######## ####### #
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=head2 Castle layouts
562
563Castles are similar to caves, except they generate very straight dungeon
564features (not unlike roguelike layouts).
565
566 ########################################
567 #### #################### ##
568 #### ###### ######### ##
569 #### ### ####### # ######### ##
570 #### D D ## ##### ##
571 #####D## ##### D ##
572 ##### # # # ## ##
573 ##### # #### # ##########
574 ##### # # # # D #
575 ##### # # # ######## #D# #
576 ##### # #D# # ######### ########
577 ##### ######### # D #######
578 ##### ########## D ##D########
579 ###### ### #### ###### #D# # #####
580 ##### #D# ## ### D # #####
581 ##### # # ## ###### #####
582 ##### # # ### ###### #####
583 #######D###D### ### ## # ##
584 ###### #### ### ## # ##
585 ###### # ##### ## ##
586 ###### # ####### ## # ##
587 ###### D ############# # ##
588 ########### ############# # ##
589 ########### ################## ##
590 ########################################
336 591
337=head3 Spiral Maps 592=head3 Spiral Maps
338 593
339 A Spiral Map:: 594A Spiral Map:
340 595
341 ########################### 596 ###########################
342 ########################### 597 ###########################
343 ########### D ########## 598 ########### D ##########
344 ######### #### ######## 599 ######### #### ########
366 621
367 0 pick random options 622 0 pick random options
368 1 Regular spiral: distance increases constantly with angle 623 1 Regular spiral: distance increases constantly with angle
369 2 Fine spiral: most coils possible are fit in 624 2 Fine spiral: most coils possible are fit in
370 4 Fit Spiral: scale spiral to fit rectanglar region 625 4 Fit Spiral: scale spiral to fit rectanglar region
371 (i.e., the spiral will look elliptical) 626 (i.e., the spiral will look elliptical)
372 627
373=head3 Rogue-like Maps: 628=head3 Rogue-like Maps
374 629
375A Rogue-like Map: 630A Rogue-like Map:
376 631
377 ############################### 632 ###############################
378 ############# ########### 633 ############# ###########
513 # # # ####D#### # # # 768 # # # ####D#### # # #
514 ##D##########D# #D##########D## 769 ##D##########D# #D##########D##
515 # # < # # 770 # # < # #
516 ##################################### 771 #####################################
517 772
773=head2 Multiple layouts
774
775The layoutstyle "multiple" divides the map into many areas
776and uses random layout styles in each area. Works best with
777very high or wide maps and fewer levels.
518 778
519=head2 An example input file 779=head2 An example input file
520 780
521 layoutstyle onion 781 layoutstyle onion
522 monsterstyle humanoid 782 monsterstyle humanoid
528 decorstyle furniture 788 decorstyle furniture
529 floorstyle dirt 789 floorstyle dirt
530 wallstyle wooden 790 wallstyle wooden
531 symmetry 1 791 symmetry 1
532 792
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 793=head2 AUTHORS
670 794
671The original document was taken from Crossfire and subsequently modified by Marc Lehmann. 795The original document was taken from Crossfire and subsequently modified by Marc Lehmann.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines