props-variety.html 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992
  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <link rel="prev" href="index.html">
  7. <link rel="next" href="doors.html">
  8. <link rel="icon" href="../assets/images/favicon.ico">
  9. <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.11">
  10. <title>Props for Variety - DunGen</title>
  11. <link rel="stylesheet" href="../assets/stylesheets/main.4af4bdda.min.css">
  12. <link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
  13. <script src="https://unpkg.com/iframe-worker/shim"></script>
  14. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  15. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
  16. <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
  17. <link rel="stylesheet" href="../stylesheets/extra.css">
  18. <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
  19. </head>
  20. <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="cyan">
  21. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  22. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  23. <label class="md-overlay" for="__drawer"></label>
  24. <div data-md-component="skip">
  25. <a href="#advanced-features-props-for-variety" class="md-skip">
  26. Skip to content
  27. </a>
  28. </div>
  29. <div data-md-component="announce">
  30. </div>
  31. <header class="md-header md-header--shadow" data-md-component="header">
  32. <nav class="md-header__inner md-grid" aria-label="Header">
  33. <a href="../index.html" title="DunGen" class="md-header__button md-logo" aria-label="DunGen" data-md-component="logo">
  34. <svg width="100%" height="100%" viewBox="0 0 258 272" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
  35. <path d="M79,20.998C103.163,20.998 126.827,20.993 150.49,21.002C156.512,21.004 156.994,21.502 157,27.603C157.008,36.435 157.275,45.279 156.89,54.094C156.689,58.68 158.685,61.484 161.849,64.242C170.723,71.978 179.515,79.812 188.188,87.772C190.849,90.214 193.071,93.217 195.28,95.995C199.425,101.209 199.993,100.532 203.73,100.441C209.056,100.311 214.403,100.217 219.713,100.549C222.988,100.754 224.083,99.873 224.059,96.517C223.93,78.354 223.952,60.189 224.044,42.025C224.059,38.949 223.341,37.434 219.868,37.603C214.383,37.872 208.877,37.791 203.381,37.715C199.579,37.663 197.517,38.715 197.907,43.168C198.327,47.964 197.807,52.836 198.065,57.655C198.263,61.366 196.432,62.919 193.348,61.885C188.656,60.311 184.193,58.029 179.724,55.858C179.188,55.598 179.033,54.157 179.028,53.262C178.979,44.43 179.007,35.598 178.995,26.766C178.99,22.857 180.241,20.823 184.822,20.897C200.816,21.158 216.816,20.988 232.814,21.004C239.132,21.01 240.996,22.894 240.998,29.241C241.006,56.07 241.005,82.9 240.998,109.729C240.997,114.795 238.959,117.469 233.922,117.935C228.649,118.423 223.32,118.407 218.015,118.42C208.355,118.444 198.68,117.994 189.04,118.408C184.225,118.615 181.96,116.755 180.231,112.653C175.241,100.811 167.104,91.401 156.54,84.26C153.778,82.394 150.001,81.189 146.67,81.142C126.51,80.86 106.344,81.107 86.182,80.92C81.723,80.878 80.502,82.453 80.517,86.753C80.64,122.394 80.606,158.037 80.499,193.679C80.487,197.764 81.821,199.148 86.047,199.093C103.375,198.866 120.707,198.998 138.038,198.998C159.059,198.998 178.198,184.319 182.849,163.942C184.15,158.243 183.93,152.135 183.91,146.215C183.896,141.846 185.254,139.882 189.885,139.936C204.381,140.105 218.88,139.974 233.378,140.01C238.862,140.024 240.989,142.215 240.993,147.822C241.011,180.317 241.012,212.813 240.992,245.308C240.988,250.939 238.967,252.977 233.218,252.985C205.722,253.022 178.226,253.017 150.73,252.989C145.524,252.983 144.074,251.47 144.001,246.325C143.982,244.992 144.14,243.641 143.973,242.329C143.34,237.341 146.132,235.979 150.411,235.99C160.395,236.016 171.06,236.112 181.183,236.112C181.349,229.59 181.592,223.106 181.957,216.723C182.112,214.015 183.166,213.054 185.926,212.937C199.005,212.385 199.002,212.308 199.002,225.465C199.002,236.846 199.003,236.883 210.211,236.618C214.669,236.512 219.122,236.203 223.998,235.966L223.998,215.809C223.998,197.812 223.911,179.813 224.071,161.817C224.103,158.195 223.211,156.729 219.348,156.922C213.399,157.218 207.424,157 201.518,157C200.995,162.216 201.49,167.296 200.093,171.982C197.761,179.807 196.375,184.335 192.2,189.003C186.463,195.42 180.539,202.401 173.212,206.467C165.218,210.904 155.809,213.982 146.533,214.772C140.003,215.328 133.915,215.112 127.586,214.988C124.239,214.923 122.845,216.06 122.934,219.622C123.145,228.116 123.005,236.618 123.001,245.117C122.998,251.059 121.128,252.977 115.061,252.989C97.897,253.025 80.733,253.002 63.568,253.002C51.404,253.002 39.239,253.028 27.074,252.99C21.11,252.972 19.972,251.911 19.969,246.171C19.952,212.512 20.027,178.852 19.931,145.193C19.92,141.244 21.512,139.936 25.206,139.967C36.037,140.056 46.872,139.868 57.7,140.066C61.659,140.139 62.704,138.654 62.9,134.816C63.079,131.328 63.031,127.859 62.985,124.329C62.92,119.388 61.017,118.259 56.858,118.302C47.864,118.397 38.869,118.381 29.875,118.42C29.044,118.424 28.21,118.569 27.382,118.535C20.483,118.255 19.854,117.626 19.858,110.743C19.874,83.582 19.901,56.422 19.946,29.261C19.957,22.709 21.747,21.005 28.509,21.001C45.173,20.992 61.836,20.998 79,20.998M40.806,37.592C39.579,39.018 37.305,40.427 37.283,41.871C37.009,60.012 37.047,78.158 37.045,96.302C37.045,98.812 38.187,100.243 40.973,100.24C46.626,100.235 52.281,100.327 57.93,100.537C61.815,100.681 63.165,99.043 63.06,95.156C62.832,86.672 62.99,78.177 63.001,69.687C63.01,63.101 65.168,60.989 71.882,60.989C92.36,60.99 112.837,60.999 133.315,60.997C139.718,60.996 139.987,60.711 139.998,54.125C140.004,50.629 139.757,47.111 140.059,43.642C140.457,39.073 138.568,37.373 134.101,37.395C103.319,37.551 72.535,37.595 40.806,37.592M62.997,200.455C62.997,187.472 63.078,174.487 62.886,161.507C62.863,159.996 61.38,157.25 60.476,157.208C52.923,156.859 45.347,157.01 37.87,157.01C37.87,182.364 37.917,206.983 37.817,231.602C37.803,235.205 39.289,236.074 42.623,236.055C62.599,235.939 82.576,236.005 102.552,235.977C103.642,235.975 104.732,235.678 105.997,235.493C105.997,229.703 105.875,224.216 106.048,218.738C106.137,215.898 105.136,214.958 102.315,214.998C93.661,215.12 85.004,215.009 76.348,215.006C62.998,215 62.998,215.006 62.997,200.455Z" style="fill:currentColor;fill-rule:nonzero;"/>
  36. <g transform="matrix(1,0,0,1,91.4761,179.778)">
  37. <text x="0px" y="0px" style="font-family:'Arial-BoldMT', 'Arial', sans-serif;font-weight:700;font-size:110px;fill:currentColor;">D</text>
  38. </g>
  39. </svg>
  40. </a>
  41. <label class="md-header__button md-icon" for="__drawer">
  42. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
  43. </label>
  44. <div class="md-header__title" data-md-component="header-title">
  45. <div class="md-header__ellipsis">
  46. <div class="md-header__topic">
  47. <span class="md-ellipsis">
  48. DunGen
  49. </span>
  50. </div>
  51. <div class="md-header__topic" data-md-component="header-topic">
  52. <span class="md-ellipsis">
  53. Props for Variety
  54. </span>
  55. </div>
  56. </div>
  57. </div>
  58. </nav>
  59. </header>
  60. <div class="md-container" data-md-component="container">
  61. <main class="md-main" data-md-component="main">
  62. <div class="md-main__inner md-grid">
  63. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  64. <div class="md-sidebar__scrollwrap">
  65. <div class="md-sidebar__inner">
  66. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  67. <label class="md-nav__title" for="__drawer">
  68. <a href="../index.html" title="DunGen" class="md-nav__button md-logo" aria-label="DunGen" data-md-component="logo">
  69. <svg width="100%" height="100%" viewBox="0 0 258 272" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
  70. <path d="M79,20.998C103.163,20.998 126.827,20.993 150.49,21.002C156.512,21.004 156.994,21.502 157,27.603C157.008,36.435 157.275,45.279 156.89,54.094C156.689,58.68 158.685,61.484 161.849,64.242C170.723,71.978 179.515,79.812 188.188,87.772C190.849,90.214 193.071,93.217 195.28,95.995C199.425,101.209 199.993,100.532 203.73,100.441C209.056,100.311 214.403,100.217 219.713,100.549C222.988,100.754 224.083,99.873 224.059,96.517C223.93,78.354 223.952,60.189 224.044,42.025C224.059,38.949 223.341,37.434 219.868,37.603C214.383,37.872 208.877,37.791 203.381,37.715C199.579,37.663 197.517,38.715 197.907,43.168C198.327,47.964 197.807,52.836 198.065,57.655C198.263,61.366 196.432,62.919 193.348,61.885C188.656,60.311 184.193,58.029 179.724,55.858C179.188,55.598 179.033,54.157 179.028,53.262C178.979,44.43 179.007,35.598 178.995,26.766C178.99,22.857 180.241,20.823 184.822,20.897C200.816,21.158 216.816,20.988 232.814,21.004C239.132,21.01 240.996,22.894 240.998,29.241C241.006,56.07 241.005,82.9 240.998,109.729C240.997,114.795 238.959,117.469 233.922,117.935C228.649,118.423 223.32,118.407 218.015,118.42C208.355,118.444 198.68,117.994 189.04,118.408C184.225,118.615 181.96,116.755 180.231,112.653C175.241,100.811 167.104,91.401 156.54,84.26C153.778,82.394 150.001,81.189 146.67,81.142C126.51,80.86 106.344,81.107 86.182,80.92C81.723,80.878 80.502,82.453 80.517,86.753C80.64,122.394 80.606,158.037 80.499,193.679C80.487,197.764 81.821,199.148 86.047,199.093C103.375,198.866 120.707,198.998 138.038,198.998C159.059,198.998 178.198,184.319 182.849,163.942C184.15,158.243 183.93,152.135 183.91,146.215C183.896,141.846 185.254,139.882 189.885,139.936C204.381,140.105 218.88,139.974 233.378,140.01C238.862,140.024 240.989,142.215 240.993,147.822C241.011,180.317 241.012,212.813 240.992,245.308C240.988,250.939 238.967,252.977 233.218,252.985C205.722,253.022 178.226,253.017 150.73,252.989C145.524,252.983 144.074,251.47 144.001,246.325C143.982,244.992 144.14,243.641 143.973,242.329C143.34,237.341 146.132,235.979 150.411,235.99C160.395,236.016 171.06,236.112 181.183,236.112C181.349,229.59 181.592,223.106 181.957,216.723C182.112,214.015 183.166,213.054 185.926,212.937C199.005,212.385 199.002,212.308 199.002,225.465C199.002,236.846 199.003,236.883 210.211,236.618C214.669,236.512 219.122,236.203 223.998,235.966L223.998,215.809C223.998,197.812 223.911,179.813 224.071,161.817C224.103,158.195 223.211,156.729 219.348,156.922C213.399,157.218 207.424,157 201.518,157C200.995,162.216 201.49,167.296 200.093,171.982C197.761,179.807 196.375,184.335 192.2,189.003C186.463,195.42 180.539,202.401 173.212,206.467C165.218,210.904 155.809,213.982 146.533,214.772C140.003,215.328 133.915,215.112 127.586,214.988C124.239,214.923 122.845,216.06 122.934,219.622C123.145,228.116 123.005,236.618 123.001,245.117C122.998,251.059 121.128,252.977 115.061,252.989C97.897,253.025 80.733,253.002 63.568,253.002C51.404,253.002 39.239,253.028 27.074,252.99C21.11,252.972 19.972,251.911 19.969,246.171C19.952,212.512 20.027,178.852 19.931,145.193C19.92,141.244 21.512,139.936 25.206,139.967C36.037,140.056 46.872,139.868 57.7,140.066C61.659,140.139 62.704,138.654 62.9,134.816C63.079,131.328 63.031,127.859 62.985,124.329C62.92,119.388 61.017,118.259 56.858,118.302C47.864,118.397 38.869,118.381 29.875,118.42C29.044,118.424 28.21,118.569 27.382,118.535C20.483,118.255 19.854,117.626 19.858,110.743C19.874,83.582 19.901,56.422 19.946,29.261C19.957,22.709 21.747,21.005 28.509,21.001C45.173,20.992 61.836,20.998 79,20.998M40.806,37.592C39.579,39.018 37.305,40.427 37.283,41.871C37.009,60.012 37.047,78.158 37.045,96.302C37.045,98.812 38.187,100.243 40.973,100.24C46.626,100.235 52.281,100.327 57.93,100.537C61.815,100.681 63.165,99.043 63.06,95.156C62.832,86.672 62.99,78.177 63.001,69.687C63.01,63.101 65.168,60.989 71.882,60.989C92.36,60.99 112.837,60.999 133.315,60.997C139.718,60.996 139.987,60.711 139.998,54.125C140.004,50.629 139.757,47.111 140.059,43.642C140.457,39.073 138.568,37.373 134.101,37.395C103.319,37.551 72.535,37.595 40.806,37.592M62.997,200.455C62.997,187.472 63.078,174.487 62.886,161.507C62.863,159.996 61.38,157.25 60.476,157.208C52.923,156.859 45.347,157.01 37.87,157.01C37.87,182.364 37.917,206.983 37.817,231.602C37.803,235.205 39.289,236.074 42.623,236.055C62.599,235.939 82.576,236.005 102.552,235.977C103.642,235.975 104.732,235.678 105.997,235.493C105.997,229.703 105.875,224.216 106.048,218.738C106.137,215.898 105.136,214.958 102.315,214.998C93.661,215.12 85.004,215.009 76.348,215.006C62.998,215 62.998,215.006 62.997,200.455Z" style="fill:currentColor;fill-rule:nonzero;"/>
  71. <g transform="matrix(1,0,0,1,91.4761,179.778)">
  72. <text x="0px" y="0px" style="font-family:'Arial-BoldMT', 'Arial', sans-serif;font-weight:700;font-size:110px;fill:currentColor;">D</text>
  73. </g>
  74. </svg>
  75. </a>
  76. DunGen
  77. </label>
  78. <ul class="md-nav__list" data-md-scrollfix>
  79. <li class="md-nav__item">
  80. <a href="../index.html" class="md-nav__link">
  81. <span class="md-ellipsis">
  82. Introduction
  83. </span>
  84. </a>
  85. </li>
  86. <li class="md-nav__item">
  87. <a href="../changelog.html" class="md-nav__link">
  88. <span class="md-ellipsis">
  89. Changelog
  90. </span>
  91. </a>
  92. </li>
  93. <li class="md-nav__item md-nav__item--nested">
  94. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
  95. <div class="md-nav__link md-nav__container">
  96. <a href="../getting-started/index.html" class="md-nav__link ">
  97. <span class="md-ellipsis">
  98. Getting Started
  99. </span>
  100. </a>
  101. <label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
  102. <span class="md-nav__icon md-icon"></span>
  103. </label>
  104. </div>
  105. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
  106. <label class="md-nav__title" for="__nav_3">
  107. <span class="md-nav__icon md-icon"></span>
  108. Getting Started
  109. </label>
  110. <ul class="md-nav__list" data-md-scrollfix>
  111. <li class="md-nav__item">
  112. <a href="../getting-started/1-creating-tiles.html" class="md-nav__link">
  113. <span class="md-ellipsis">
  114. 1. Creating Tiles
  115. </span>
  116. </a>
  117. </li>
  118. <li class="md-nav__item">
  119. <a href="../getting-started/2-doorways.html" class="md-nav__link">
  120. <span class="md-ellipsis">
  121. 2. Doorways
  122. </span>
  123. </a>
  124. </li>
  125. <li class="md-nav__item">
  126. <a href="../getting-started/3-dungeon-flow.html" class="md-nav__link">
  127. <span class="md-ellipsis">
  128. 3. Dungeon Flow Basics
  129. </span>
  130. </a>
  131. </li>
  132. <li class="md-nav__item">
  133. <a href="../getting-started/4-scene-setup.html" class="md-nav__link">
  134. <span class="md-ellipsis">
  135. 4. Scene Setup & First Generation
  136. </span>
  137. </a>
  138. </li>
  139. </ul>
  140. </nav>
  141. </li>
  142. <li class="md-nav__item md-nav__item--nested">
  143. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
  144. <div class="md-nav__link md-nav__container">
  145. <a href="../core-concepts/index.html" class="md-nav__link ">
  146. <span class="md-ellipsis">
  147. Core Concepts
  148. </span>
  149. </a>
  150. <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0">
  151. <span class="md-nav__icon md-icon"></span>
  152. </label>
  153. </div>
  154. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
  155. <label class="md-nav__title" for="__nav_4">
  156. <span class="md-nav__icon md-icon"></span>
  157. Core Concepts
  158. </label>
  159. <ul class="md-nav__list" data-md-scrollfix>
  160. <li class="md-nav__item">
  161. <a href="../core-concepts/tiles.html" class="md-nav__link">
  162. <span class="md-ellipsis">
  163. Tiles & Tile Component
  164. </span>
  165. </a>
  166. </li>
  167. <li class="md-nav__item">
  168. <a href="../core-concepts/weighting.html" class="md-nav__link">
  169. <span class="md-ellipsis">
  170. Weighting
  171. </span>
  172. </a>
  173. </li>
  174. <li class="md-nav__item">
  175. <a href="../core-concepts/tile-sets.html" class="md-nav__link">
  176. <span class="md-ellipsis">
  177. Tile Sets
  178. </span>
  179. </a>
  180. </li>
  181. <li class="md-nav__item">
  182. <a href="../core-concepts/archetypes.html" class="md-nav__link">
  183. <span class="md-ellipsis">
  184. Archetypes
  185. </span>
  186. </a>
  187. </li>
  188. <li class="md-nav__item">
  189. <a href="../core-concepts/doorways.html" class="md-nav__link">
  190. <span class="md-ellipsis">
  191. Doorways
  192. </span>
  193. </a>
  194. </li>
  195. <li class="md-nav__item">
  196. <a href="../core-concepts/dungeon-flow.html" class="md-nav__link">
  197. <span class="md-ellipsis">
  198. Dungeon Flow Asset
  199. </span>
  200. </a>
  201. </li>
  202. <li class="md-nav__item">
  203. <a href="../core-concepts/flow-editor.html" class="md-nav__link">
  204. <span class="md-ellipsis">
  205. Flow Editor
  206. </span>
  207. </a>
  208. </li>
  209. <li class="md-nav__item">
  210. <a href="../core-concepts/dungeon-generator.html" class="md-nav__link">
  211. <span class="md-ellipsis">
  212. Dungeon Generator
  213. </span>
  214. </a>
  215. </li>
  216. </ul>
  217. </nav>
  218. </li>
  219. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  220. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
  221. <div class="md-nav__link md-nav__container">
  222. <a href="index.html" class="md-nav__link ">
  223. <span class="md-ellipsis">
  224. Advanced Features
  225. </span>
  226. </a>
  227. <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="0">
  228. <span class="md-nav__icon md-icon"></span>
  229. </label>
  230. </div>
  231. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
  232. <label class="md-nav__title" for="__nav_5">
  233. <span class="md-nav__icon md-icon"></span>
  234. Advanced Features
  235. </label>
  236. <ul class="md-nav__list" data-md-scrollfix>
  237. <li class="md-nav__item md-nav__item--active">
  238. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  239. <label class="md-nav__link md-nav__link--active" for="__toc">
  240. <span class="md-ellipsis">
  241. Props for Variety
  242. </span>
  243. <span class="md-nav__icon md-icon"></span>
  244. </label>
  245. <a href="props-variety.html" class="md-nav__link md-nav__link--active">
  246. <span class="md-ellipsis">
  247. Props for Variety
  248. </span>
  249. </a>
  250. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  251. <label class="md-nav__title" for="__toc">
  252. <span class="md-nav__icon md-icon"></span>
  253. Table of contents
  254. </label>
  255. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  256. <li class="md-nav__item">
  257. <a href="#local-prop-set" class="md-nav__link">
  258. <span class="md-ellipsis">
  259. Local Prop Set
  260. </span>
  261. </a>
  262. <nav class="md-nav" aria-label="Local Prop Set">
  263. <ul class="md-nav__list">
  264. <li class="md-nav__item">
  265. <a href="#inspector-settings" class="md-nav__link">
  266. <span class="md-ellipsis">
  267. Inspector Settings:
  268. </span>
  269. </a>
  270. </li>
  271. </ul>
  272. </nav>
  273. </li>
  274. <li class="md-nav__item">
  275. <a href="#random-prefab" class="md-nav__link">
  276. <span class="md-ellipsis">
  277. Random Prefab
  278. </span>
  279. </a>
  280. <nav class="md-nav" aria-label="Random Prefab">
  281. <ul class="md-nav__list">
  282. <li class="md-nav__item">
  283. <a href="#inspector-settings_1" class="md-nav__link">
  284. <span class="md-ellipsis">
  285. Inspector Settings:
  286. </span>
  287. </a>
  288. </li>
  289. </ul>
  290. </nav>
  291. </li>
  292. <li class="md-nav__item">
  293. <a href="#global-props" class="md-nav__link">
  294. <span class="md-ellipsis">
  295. Global Props
  296. </span>
  297. </a>
  298. <nav class="md-nav" aria-label="Global Props">
  299. <ul class="md-nav__list">
  300. <li class="md-nav__item">
  301. <a href="#component-inspector-settings" class="md-nav__link">
  302. <span class="md-ellipsis">
  303. Component Inspector Settings:
  304. </span>
  305. </a>
  306. </li>
  307. <li class="md-nav__item">
  308. <a href="#dungeon-flow-configuration" class="md-nav__link">
  309. <span class="md-ellipsis">
  310. Dungeon Flow Configuration:
  311. </span>
  312. </a>
  313. </li>
  314. </ul>
  315. </nav>
  316. </li>
  317. <li class="md-nav__item">
  318. <a href="#custom-prop-implementation" class="md-nav__link">
  319. <span class="md-ellipsis">
  320. Custom Prop Implementation
  321. </span>
  322. </a>
  323. </li>
  324. </ul>
  325. </nav>
  326. </li>
  327. <li class="md-nav__item">
  328. <a href="doors.html" class="md-nav__link">
  329. <span class="md-ellipsis">
  330. Doors
  331. </span>
  332. </a>
  333. </li>
  334. <li class="md-nav__item">
  335. <a href="multiple-floors.html" class="md-nav__link">
  336. <span class="md-ellipsis">
  337. Multiple Floors
  338. </span>
  339. </a>
  340. </li>
  341. <li class="md-nav__item">
  342. <a href="lock-key-system.html" class="md-nav__link">
  343. <span class="md-ellipsis">
  344. Lock & Key System
  345. </span>
  346. </a>
  347. </li>
  348. <li class="md-nav__item">
  349. <a href="injecting-tiles.html" class="md-nav__link">
  350. <span class="md-ellipsis">
  351. Injecting Special Tiles
  352. </span>
  353. </a>
  354. </li>
  355. <li class="md-nav__item">
  356. <a href="connection-rules.html" class="md-nav__link">
  357. <span class="md-ellipsis">
  358. Tile Connection Rules
  359. </span>
  360. </a>
  361. </li>
  362. <li class="md-nav__item">
  363. <a href="attached-dungeons.html" class="md-nav__link">
  364. <span class="md-ellipsis">
  365. Generating Attached Dungeons
  366. </span>
  367. </a>
  368. </li>
  369. <li class="md-nav__item">
  370. <a href="additional-collisions.html" class="md-nav__link">
  371. <span class="md-ellipsis">
  372. Avoid Collisions With the Scene
  373. </span>
  374. </a>
  375. </li>
  376. <li class="md-nav__item">
  377. <a href="runtime-events.html" class="md-nav__link">
  378. <span class="md-ellipsis">
  379. Runtime Events & Code Execution
  380. </span>
  381. </a>
  382. </li>
  383. <li class="md-nav__item">
  384. <a href="post-processing.html" class="md-nav__link">
  385. <span class="md-ellipsis">
  386. Custom Post-Processing
  387. </span>
  388. </a>
  389. </li>
  390. <li class="md-nav__item">
  391. <a href="character-component.html" class="md-nav__link">
  392. <span class="md-ellipsis">
  393. DunGen Character Component
  394. </span>
  395. </a>
  396. </li>
  397. </ul>
  398. </nav>
  399. </li>
  400. <li class="md-nav__item md-nav__item--nested">
  401. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
  402. <div class="md-nav__link md-nav__container">
  403. <a href="../optimization/index.html" class="md-nav__link ">
  404. <span class="md-ellipsis">
  405. Optimization
  406. </span>
  407. </a>
  408. <label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="0">
  409. <span class="md-nav__icon md-icon"></span>
  410. </label>
  411. </div>
  412. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
  413. <label class="md-nav__title" for="__nav_6">
  414. <span class="md-nav__icon md-icon"></span>
  415. Optimization
  416. </label>
  417. <ul class="md-nav__list" data-md-scrollfix>
  418. <li class="md-nav__item">
  419. <a href="../optimization/culling.html" class="md-nav__link">
  420. <span class="md-ellipsis">
  421. Built-in Culling
  422. </span>
  423. </a>
  424. </li>
  425. <li class="md-nav__item">
  426. <a href="../optimization/tile-pooling.html" class="md-nav__link">
  427. <span class="md-ellipsis">
  428. Tile Pooling
  429. </span>
  430. </a>
  431. </li>
  432. </ul>
  433. </nav>
  434. </li>
  435. <li class="md-nav__item md-nav__item--nested">
  436. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
  437. <div class="md-nav__link md-nav__container">
  438. <a href="../pathfinding/index.html" class="md-nav__link ">
  439. <span class="md-ellipsis">
  440. Pathfinding
  441. </span>
  442. </a>
  443. <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="0">
  444. <span class="md-nav__icon md-icon"></span>
  445. </label>
  446. </div>
  447. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
  448. <label class="md-nav__title" for="__nav_7">
  449. <span class="md-nav__icon md-icon"></span>
  450. Pathfinding
  451. </label>
  452. <ul class="md-nav__list" data-md-scrollfix>
  453. <li class="md-nav__item">
  454. <a href="../pathfinding/unity-navmesh.html" class="md-nav__link">
  455. <span class="md-ellipsis">
  456. Unity NavMesh Components
  457. </span>
  458. </a>
  459. </li>
  460. <li class="md-nav__item">
  461. <a href="../pathfinding/astar-pathfinding.html" class="md-nav__link">
  462. <span class="md-ellipsis">
  463. A* Pathfinding Project Pro
  464. </span>
  465. </a>
  466. </li>
  467. <li class="md-nav__item">
  468. <a href="../pathfinding/custom-adapters.html" class="md-nav__link">
  469. <span class="md-ellipsis">
  470. Custom Adapters
  471. </span>
  472. </a>
  473. </li>
  474. </ul>
  475. </nav>
  476. </li>
  477. <li class="md-nav__item md-nav__item--nested">
  478. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
  479. <div class="md-nav__link md-nav__container">
  480. <a href="../integrations/index.html" class="md-nav__link ">
  481. <span class="md-ellipsis">
  482. Integrations
  483. </span>
  484. </a>
  485. <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
  486. <span class="md-nav__icon md-icon"></span>
  487. </label>
  488. </div>
  489. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
  490. <label class="md-nav__title" for="__nav_8">
  491. <span class="md-nav__icon md-icon"></span>
  492. Integrations
  493. </label>
  494. <ul class="md-nav__list" data-md-scrollfix>
  495. <li class="md-nav__item">
  496. <a href="../integrations/sectr.html" class="md-nav__link">
  497. <span class="md-ellipsis">
  498. SECTR Portal Culling
  499. </span>
  500. </a>
  501. </li>
  502. <li class="md-nav__item">
  503. <a href="../integrations/playmaker.html" class="md-nav__link">
  504. <span class="md-ellipsis">
  505. PlayMaker Actions
  506. </span>
  507. </a>
  508. </li>
  509. </ul>
  510. </nav>
  511. </li>
  512. <li class="md-nav__item md-nav__item--nested">
  513. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
  514. <div class="md-nav__link md-nav__container">
  515. <a href="../troubleshooting/index.html" class="md-nav__link ">
  516. <span class="md-ellipsis">
  517. Troubleshooting
  518. </span>
  519. </a>
  520. <label class="md-nav__link " for="__nav_9" id="__nav_9_label" tabindex="0">
  521. <span class="md-nav__icon md-icon"></span>
  522. </label>
  523. </div>
  524. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
  525. <label class="md-nav__title" for="__nav_9">
  526. <span class="md-nav__icon md-icon"></span>
  527. Troubleshooting
  528. </label>
  529. <ul class="md-nav__list" data-md-scrollfix>
  530. <li class="md-nav__item">
  531. <a href="../troubleshooting/limitations.html" class="md-nav__link">
  532. <span class="md-ellipsis">
  533. Limitations & Considerations
  534. </span>
  535. </a>
  536. </li>
  537. <li class="md-nav__item">
  538. <a href="../troubleshooting/analysis.html" class="md-nav__link">
  539. <span class="md-ellipsis">
  540. Analysis
  541. </span>
  542. </a>
  543. </li>
  544. </ul>
  545. </nav>
  546. </li>
  547. <li class="md-nav__item md-nav__item--nested">
  548. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
  549. <label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
  550. <span class="md-ellipsis">
  551. Reference
  552. </span>
  553. <span class="md-nav__icon md-icon"></span>
  554. </label>
  555. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
  556. <label class="md-nav__title" for="__nav_10">
  557. <span class="md-nav__icon md-icon"></span>
  558. Reference
  559. </label>
  560. <ul class="md-nav__list" data-md-scrollfix>
  561. <li class="md-nav__item">
  562. <a href="../reference/faq.html" class="md-nav__link">
  563. <span class="md-ellipsis">
  564. FAQ
  565. </span>
  566. </a>
  567. </li>
  568. <li class="md-nav__item">
  569. <a href="../reference/cookbook.html" class="md-nav__link">
  570. <span class="md-ellipsis">
  571. Cookbook
  572. </span>
  573. </a>
  574. </li>
  575. </ul>
  576. </nav>
  577. </li>
  578. </ul>
  579. </nav>
  580. </div>
  581. </div>
  582. </div>
  583. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  584. <div class="md-sidebar__scrollwrap">
  585. <div class="md-sidebar__inner">
  586. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  587. <label class="md-nav__title" for="__toc">
  588. <span class="md-nav__icon md-icon"></span>
  589. Table of contents
  590. </label>
  591. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  592. <li class="md-nav__item">
  593. <a href="#local-prop-set" class="md-nav__link">
  594. <span class="md-ellipsis">
  595. Local Prop Set
  596. </span>
  597. </a>
  598. <nav class="md-nav" aria-label="Local Prop Set">
  599. <ul class="md-nav__list">
  600. <li class="md-nav__item">
  601. <a href="#inspector-settings" class="md-nav__link">
  602. <span class="md-ellipsis">
  603. Inspector Settings:
  604. </span>
  605. </a>
  606. </li>
  607. </ul>
  608. </nav>
  609. </li>
  610. <li class="md-nav__item">
  611. <a href="#random-prefab" class="md-nav__link">
  612. <span class="md-ellipsis">
  613. Random Prefab
  614. </span>
  615. </a>
  616. <nav class="md-nav" aria-label="Random Prefab">
  617. <ul class="md-nav__list">
  618. <li class="md-nav__item">
  619. <a href="#inspector-settings_1" class="md-nav__link">
  620. <span class="md-ellipsis">
  621. Inspector Settings:
  622. </span>
  623. </a>
  624. </li>
  625. </ul>
  626. </nav>
  627. </li>
  628. <li class="md-nav__item">
  629. <a href="#global-props" class="md-nav__link">
  630. <span class="md-ellipsis">
  631. Global Props
  632. </span>
  633. </a>
  634. <nav class="md-nav" aria-label="Global Props">
  635. <ul class="md-nav__list">
  636. <li class="md-nav__item">
  637. <a href="#component-inspector-settings" class="md-nav__link">
  638. <span class="md-ellipsis">
  639. Component Inspector Settings:
  640. </span>
  641. </a>
  642. </li>
  643. <li class="md-nav__item">
  644. <a href="#dungeon-flow-configuration" class="md-nav__link">
  645. <span class="md-ellipsis">
  646. Dungeon Flow Configuration:
  647. </span>
  648. </a>
  649. </li>
  650. </ul>
  651. </nav>
  652. </li>
  653. <li class="md-nav__item">
  654. <a href="#custom-prop-implementation" class="md-nav__link">
  655. <span class="md-ellipsis">
  656. Custom Prop Implementation
  657. </span>
  658. </a>
  659. </li>
  660. </ul>
  661. </nav>
  662. </div>
  663. </div>
  664. </div>
  665. <div class="md-content" data-md-component="content">
  666. <article class="md-content__inner md-typeset">
  667. <h1 id="advanced-features-props-for-variety">Advanced Features: Props for Variety</h1>
  668. <p>Creating many unique Tile prefabs can be time-consuming. DunGen offers several "Prop" components that allow you to add significant visual variety and randomness to your existing Tiles without needing to create entirely new room geometry. These components let you dynamically include, exclude, or choose between different GameObjects or prefabs within your Tiles during dungeon generation.</p>
  669. <p>There are three main types of prop components:</p>
  670. <ol>
  671. <li><strong>Local Prop Set:</strong> Manages a collection of <em>existing</em> GameObjects within a Tile, keeping some and discarding others.</li>
  672. <li><strong>Random Prefab:</strong> Spawns <em>one</em> chosen prefab from a list at a specific location within a Tile.</li>
  673. <li><strong>Global Prop:</strong> Ensures only a specific total number of a certain type of prop exists across the <em>entire</em> generated dungeon.</li>
  674. </ol>
  675. <div class="admonition tip">
  676. <p class="admonition-title">Recursive Props</p>
  677. <p>Props are processed recursively, allowing you to have props that control other props. For example, you might have a "decoration" <strong>Random Prefab</strong> that spawns a random decorative object that could go on a table (e.g., a book, candle, or ornament). You could then have this prop be controlled by a <strong>Local Prop Set</strong>, that decides which of the "decoration" objects to keep.</p>
  678. </div>
  679. <p>Let's explore each one.</p>
  680. <hr />
  681. <h2 id="local-prop-set">Local Prop Set</h2>
  682. <ul>
  683. <li><strong>Purpose:</strong> To selectively keep a subset of GameObjects that are already placed within your Tile prefab. Ideal for over-decorating a room in the editor and then having DunGen randomly remove some items for variety.</li>
  684. <li><strong>Setup:</strong> Add the <code>Local Prop Set</code> component (<code>Add Component &gt; DunGen &gt; Random Props &gt; Local Prop Set</code>) to a GameObject <em>within</em> your Tile prefab. The GameObjects you want this component to manage should be <strong>children</strong> of the GameObject holding the <code>Local Prop Set</code> component.</li>
  685. </ul>
  686. <h3 id="inspector-settings">Inspector Settings:</h3>
  687. <ul>
  688. <li><strong>Count Mode:</strong> Determines how the number of props to <em>keep</em> is decided:<ul>
  689. <li><code>Random</code>: A random number between the <code>Min</code> and <code>Max</code> values of the <code>Count</code> range below will be chosen.</li>
  690. <li><code>Depth Based</code>: Uses the <code>Depth Scale</code> curve (see Prop Weights below). The X-axis (0-1) represents the normalized path depth, and the Y-axis (0-1) maps to the number of props kept (0 = Min Count, 1 = Max Count).</li>
  691. <li><code>Depth Multiply</code>: A random number between <code>Min</code> and <code>Max</code> is chosen (like <code>Random</code> mode), but this number is then multiplied by the value from the <code>Depth Scale</code> curve (Y-axis 0-1) at the current path depth.</li>
  692. </ul>
  693. </li>
  694. <li><strong>Count (Min/Max):</strong> Defines the minimum and maximum number of child GameObjects that this component should keep active.</li>
  695. <li><strong>Prop Weights:</strong> This list holds references to the child GameObjects that the Local Prop Set manages.<ul>
  696. <li><strong>Adding Props:</strong> Drag the child GameObjects from the Hierarchy into this list, or click "Add Selected Props" after selecting them in the Hierarchy.</li>
  697. <li><strong>Weight per Prop:</strong> Each prop entry has its own weight settings (<code>Main Path</code>, <code>Branch Path</code>, <code>Depth Scale</code>). When the component needs to decide <em>which</em> props to keep (if it needs to discard some to meet the count), props with a higher effective weight are more likely to be chosen. Refer to the <a href="../core-concepts/weighting.html">Weighting</a> page for details.</li>
  698. </ul>
  699. </li>
  700. </ul>
  701. <p><strong>Outcome:</strong> When the Tile containing this component is placed, the <code>Local Prop Set</code> calculates how many of its child props to keep based on the <code>Count Mode</code> and <code>Count</code> range. It then selects <em>which</em> props to keep based on their weights and disables (discards) the rest.</p>
  702. <hr />
  703. <h2 id="random-prefab">Random Prefab</h2>
  704. <ul>
  705. <li><strong>Purpose:</strong> To spawn a <em>single</em> prefab instance chosen randomly from a list you provide. Ideal for placing randomized decorations, containers, or interactive objects at specific points.</li>
  706. <li><strong>Setup:</strong> Add the <code>Random Prefab</code> component (<code>Add Component &gt; DunGen &gt; Random Props &gt; Random Prefab</code>) to an <strong>empty GameObject</strong> within your Tile prefab. This empty GameObject acts as a marker for the spawn location and rotation.</li>
  707. </ul>
  708. <h3 id="inspector-settings_1">Inspector Settings:</h3>
  709. <ul>
  710. <li><strong>Zero Position:</strong> If checked, the chosen prefab will be spawned at the exact position of the marker GameObject, ignoring any positional offset the prefab itself might have relative to its own pivot. If unchecked, the prefab spawns <em>at</em> the marker's position, but <em>offset</em> by the prefab's own internal position (usually (0,0,0), but could be different).</li>
  711. <li><strong>Zero Rotation:</strong> If checked, the chosen prefab will be spawned with the exact rotation of the marker GameObject, ignoring the prefab's own base rotation. If unchecked, the prefab spawns with the marker's rotation <em>plus</em> the prefab's own base rotation.</li>
  712. <li><strong>Prefab Weights:</strong> This list holds references to the <strong>prefabs</strong> (from your Project view) that can be spawned by this component.<ul>
  713. <li><strong>Adding Prefabs:</strong> Drag prefabs from your Project view onto the list.</li>
  714. <li><strong>Weight per Prefab:</strong> Each prefab entry has its own weight settings (<code>Main Path</code>, <code>Branch Path</code>, <code>Depth Scale</code>). The effective weight determines the likelihood of each prefab being chosen for instantiation. Refer to the <a href="../core-concepts/weighting.html">Weighting</a> page for details.</li>
  715. </ul>
  716. </li>
  717. </ul>
  718. <p><strong>Outcome:</strong> When the Tile containing this marker is placed, the <code>Random Prefab</code> component selects <em>one</em> prefab from its list based on weights and instantiates it at the marker GameObject's position and rotation (potentially modified by the Zero Position/Rotation settings).</p>
  719. <hr />
  720. <h2 id="global-props">Global Props</h2>
  721. <ul>
  722. <li><strong>Purpose:</strong> To control the <em>total number</em> of a specific category of object across the entire generated dungeon, regardless of how many potential instances exist within the placed Tiles. Useful for ensuring uniqueness (e.g., only one "Altar of Power") or controlling scarcity (e.g., between 1 and 3 "Treasure Chests").</li>
  723. <li><strong>Setup:</strong> Add the <code>Global Prop</code> component (<code>Add Component &gt; DunGen &gt; Random Props &gt; Global Prop</code>) directly to the <strong>GameObject you want to manage</strong> within your Tile prefab (e.g., if you're wanting to limit the number of treasure chests, this should go on the treasure chest instance inside your tile).</li>
  724. </ul>
  725. <h3 id="component-inspector-settings">Component Inspector Settings:</h3>
  726. <ul>
  727. <li><strong>Group ID:</strong> A <strong>crucial integer</strong> identifier. All props that should be counted together must share the <em>same</em> Group ID. (e.g., all potential Treasure Chests might have Group ID <code>1</code>, all Shrines might have Group ID <code>2</code>).</li>
  728. <li><strong>Weights (<code>Main Path</code>, <code>Branch Path</code>, <code>Depth Scale</code>):</strong> These weights <strong>do not</strong> determine if the prop spawns initially (it's already part of the Tile). Instead, they act as a <strong>priority score</strong>. If DunGen places more potential Global Props of a specific Group ID than the allowed maximum (set in the Dungeon Flow, see below), it uses these weights to decide <em>which instances to keep</em>. Higher effective weight means higher priority to survive the culling process. Refer to the <a href="../core-concepts/weighting.html">Weighting</a> page for details.</li>
  729. </ul>
  730. <h3 id="dungeon-flow-configuration">Dungeon Flow Configuration:</h3>
  731. <p>The <em>actual limit</em> for each Global Prop category is set in your <a href="../core-concepts/dungeon-flow.html">Dungeon Flow</a> asset:</p>
  732. <ol>
  733. <li>Select your Dungeon Flow asset in the Project view.</li>
  734. <li>Find the <strong>Global Props</strong> section in the Inspector.</li>
  735. <li>Click the <strong>+</strong> button.</li>
  736. <li>Enter the <strong><code>Group ID</code></strong> that matches the <code>Group ID</code> you set on the components in your Tile prefabs.</li>
  737. <li>Set the <strong><code>Count</code> (Min/Max)</strong> range. This tells DunGen the minimum and maximum number of props with this <code>Group ID</code> that should exist in the final generated dungeon.</li>
  738. </ol>
  739. <p><strong>Outcome:</strong> During the post-processing phase of generation, DunGen gathers all enabled GameObjects that have a <code>Global Prop</code> component. For each unique <code>Group ID</code>, it checks if the total count falls within the Min/Max range defined in the Dungeon Flow asset.</p>
  740. <ul>
  741. <li>If there are <em>too many</em> props of a certain ID, it discards props at random based on the effective weight (priority) until the count reaches the maximum limit.</li>
  742. <li>DunGen currently doesn't enforce the <em>minimum</em> count if too few potential props were placed initially.</li>
  743. </ul>
  744. <hr />
  745. <h2 id="custom-prop-implementation">Custom Prop Implementation</h2>
  746. <p>Custom prop behaviour can be achieved by creating a new component derived from the <code>RandomProp</code> abstract class. Simply implement the <code>Process()</code> method and DunGen will automatically call it when processing props.</p>
  747. <div class="language-C# highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="k">public</span><span class="w"> </span><span class="k">abstract</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">RandomProp</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">MonoBehaviour</span>
  748. </span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="p">{</span>
  749. </span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">abstract</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">Process</span><span class="p">(</span><span class="n">RandomStream</span><span class="w"> </span><span class="n">randomStream</span><span class="p">,</span><span class="w"> </span><span class="n">Tile</span><span class="w"> </span><span class="n">tile</span><span class="p">,</span><span class="w"> </span><span class="k">ref</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">GameObject</span><span class="o">&gt;</span><span class="w"> </span><span class="n">spawnedObjects</span><span class="p">);</span>
  750. </span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="p">}</span>
  751. </span></code></pre></div>
  752. <ul>
  753. <li><strong>randomStream:</strong> The random number generator used to generate the dungeon. This ensures that the same dungeon will be generated again if an identical seed is used.</li>
  754. <li><strong>tile:</strong> The tile that this prop belongs to.</li>
  755. <li><strong>spawnedObjects:</strong> An list reference allowing us to let DunGen know if we spawned any objects of our own when processing the prop. This ensures that DunGen can properly process props recursively.</li>
  756. </ul>
  757. <hr />
  758. <p>By strategically using these three prop components, you can dramatically increase the replayability and visual diversity of your dungeons without needing an excessive number of base Tile prefabs.</p>
  759. </article>
  760. </div>
  761. <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
  762. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  763. </div>
  764. <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  765. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
  766. Back to top
  767. </button>
  768. </main>
  769. <footer class="md-footer">
  770. <nav class="md-footer__inner md-grid" aria-label="Footer" >
  771. <a href="index.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Overview">
  772. <div class="md-footer__button md-icon">
  773. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
  774. </div>
  775. <div class="md-footer__title">
  776. <span class="md-footer__direction">
  777. Previous
  778. </span>
  779. <div class="md-ellipsis">
  780. Overview
  781. </div>
  782. </div>
  783. </a>
  784. <a href="doors.html" class="md-footer__link md-footer__link--next" aria-label="Next: Doors">
  785. <div class="md-footer__title">
  786. <span class="md-footer__direction">
  787. Next
  788. </span>
  789. <div class="md-ellipsis">
  790. Doors
  791. </div>
  792. </div>
  793. <div class="md-footer__button md-icon">
  794. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
  795. </div>
  796. </a>
  797. </nav>
  798. <div class="md-footer-meta md-typeset">
  799. <div class="md-footer-meta__inner md-grid">
  800. <div class="md-copyright">
  801. <div class="md-copyright__highlight">
  802. Copyright &copy; Aegon Games Ltd.
  803. </div>
  804. Made with
  805. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  806. Material for MkDocs
  807. </a>
  808. </div>
  809. </div>
  810. </div>
  811. </footer>
  812. </div>
  813. <div class="md-dialog" data-md-component="dialog">
  814. <div class="md-dialog__inner md-typeset"></div>
  815. </div>
  816. <script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "announce.dismiss", "header.autohide", "navigation.footer", "navigation.indexes", "navigation.top", "navigation.tracking"], "search": "../assets/javascripts/workers/search.f8cc74c7.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
  817. <script src="../assets/javascripts/bundle.c8b220af.min.js"></script>
  818. </body>
  819. </html>