diff --git a/LICENSE b/LICENSE index 1ffcb0f2..c755d218 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018 Max Ganiev (Azgaar) +Copyright (c) 2018-2019 Max Ganiev (Azgaar) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index dd152562..32e889e8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Azgaar's _Fantasy Map Generator_. Online tool generating interactive and highly customizable svg maps based on voronoi diagram. -Project is under development, check out the beta version [here](https://azgaar.github.io/Fantasy-Map-Generator). You can also try an Electron desktop application - download [an archive](https://github.com/Azgaar/Fantasy-Map-Generator/releases) for your architecture, unzip and run the _Azgaar's Fantasy Map Generator.exe_. +Project is under development, check out the current version [here](https://azgaar.github.io/Fantasy-Map-Generator). You can also try an Electron desktop application - download [an archive](https://github.com/Azgaar/Fantasy-Map-Generator/releases) for your architecture, unzip and run the _Azgaar's Fantasy Map Generator.exe_. Refer to the [project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for a guidance. Some details are covered in my blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com), you may also keep an eye on my [Trello devboard](https://trello.com/b/7x832DG4/fantasy-map-generator). diff --git a/icons.css b/icons.css index 2bce5a2c..5a8b22f9 100644 --- a/icons.css +++ b/icons.css @@ -209,6 +209,7 @@ .icon-smooth:before {font-weight: bold; content: '∼'; } .icon-disrupt:before {font-weight: bold; content: '෴'; } .icon-if:before {font-style: italic; font-weight: bold; content: 'if'; } +.icon-fleur:before {content: '⚜'; font-size: 11px; margin: -2px; } .icon-ruler:before {content: 'I'; } .icon-curve:before {content: 'C'; } @@ -223,4 +224,4 @@ margin-left: 1px; width: 10px; font-family: monospace; -} +} \ No newline at end of file diff --git a/images/textures/antique-big.jpg b/images/textures/antique-big.jpg deleted file mode 100644 index 5222bd6e..00000000 Binary files a/images/textures/antique-big.jpg and /dev/null differ diff --git a/images/textures/antique-small.jpg b/images/textures/antique-small.jpg deleted file mode 100644 index fa46101f..00000000 Binary files a/images/textures/antique-small.jpg and /dev/null differ diff --git a/images/textures/iran-small.jpg b/images/textures/iran-small.jpg deleted file mode 100644 index 91d369f8..00000000 Binary files a/images/textures/iran-small.jpg and /dev/null differ diff --git a/images/textures/marble-big.jpg b/images/textures/marble-big.jpg deleted file mode 100644 index 1ec033f1..00000000 Binary files a/images/textures/marble-big.jpg and /dev/null differ diff --git a/images/textures/marble-blue-big.jpg b/images/textures/marble-blue-big.jpg deleted file mode 100644 index 33c9fd79..00000000 Binary files a/images/textures/marble-blue-big.jpg and /dev/null differ diff --git a/images/textures/marble-blue-small.jpg b/images/textures/marble-blue-small.jpg deleted file mode 100644 index 539e2aed..00000000 Binary files a/images/textures/marble-blue-small.jpg and /dev/null differ diff --git a/images/textures/marble-small.jpg b/images/textures/marble-small.jpg deleted file mode 100644 index eca86953..00000000 Binary files a/images/textures/marble-small.jpg and /dev/null differ diff --git a/images/textures/mars-big.jpg b/images/textures/mars-big.jpg deleted file mode 100644 index b3654a9b..00000000 Binary files a/images/textures/mars-big.jpg and /dev/null differ diff --git a/images/textures/mars-small.jpg b/images/textures/mars-small.jpg deleted file mode 100644 index 017a7315..00000000 Binary files a/images/textures/mars-small.jpg and /dev/null differ diff --git a/images/textures/mauritania-small.jpg b/images/textures/mauritania-small.jpg deleted file mode 100644 index 9752dea3..00000000 Binary files a/images/textures/mauritania-small.jpg and /dev/null differ diff --git a/images/textures/mercury-big.jpg b/images/textures/mercury-big.jpg deleted file mode 100644 index eebaed96..00000000 Binary files a/images/textures/mercury-big.jpg and /dev/null differ diff --git a/images/textures/mercury-small.jpg b/images/textures/mercury-small.jpg deleted file mode 100644 index 885215b1..00000000 Binary files a/images/textures/mercury-small.jpg and /dev/null differ diff --git a/images/textures/pergamena-small.jpg b/images/textures/pergamena-small.jpg deleted file mode 100644 index 4d7d10ad..00000000 Binary files a/images/textures/pergamena-small.jpg and /dev/null differ diff --git a/images/textures/spain-small.jpg b/images/textures/spain-small.jpg deleted file mode 100644 index 4244d3ff..00000000 Binary files a/images/textures/spain-small.jpg and /dev/null differ diff --git a/images/textures/stone-big.jpg b/images/textures/stone-big.jpg deleted file mode 100644 index 0a431f9e..00000000 Binary files a/images/textures/stone-big.jpg and /dev/null differ diff --git a/images/textures/stone-small.jpg b/images/textures/stone-small.jpg deleted file mode 100644 index 7d616eed..00000000 Binary files a/images/textures/stone-small.jpg and /dev/null differ diff --git a/images/textures/textures-attribution.txt b/images/textures/textures-attribution.txt deleted file mode 100644 index b0033a8d..00000000 --- a/images/textures/textures-attribution.txt +++ /dev/null @@ -1,12 +0,0 @@ -All used textures should be distrubuted under free license -marble.jpg https://www.rawpixel.com/image/327647/closeup-marble-textured-background by Teddy Rawpixel -marble-blue.jpg https://www.pexels.com/photo/gray-and-blue-surface-988871/ -timbercut.jpg https://www.pexels.com/photo/brown-close-up-hd-wallpaper-surface-172289 -antique.jpg https://www.pexels.com/photo/abstract-ancient-antique-art-235985/ -pergamena.jpg https://www.freepik.com/free-photo/old-paper-texture-background_1007802.htm -stone.jpg https://www.wildtextures.com/free-textures/grungy-yet-elegant-elevation-stone-ii -mars.jpg https://www.solarsystemscope.com/textures/download/2k_mars.jpg -mercury.jpg https://www.solarsystemscope.com/textures/download/2k_mercury.jpg -mauritania.jpg https://go.nasa.gov/2Ugu9M8 NASA Worldview (Jan 24, 2019) -iran.jpg https://go.nasa.gov/2FNmiT5 NASA Worldview (Jan 24, 2019) -spain.jpg https://go.nasa.gov/2FMDPuu NASA Worldview (Jan 24, 2019) \ No newline at end of file diff --git a/images/textures/timbercut-big.jpg b/images/textures/timbercut-big.jpg deleted file mode 100644 index 6c4b2794..00000000 Binary files a/images/textures/timbercut-big.jpg and /dev/null differ diff --git a/images/textures/timbercut-small.jpg b/images/textures/timbercut-small.jpg deleted file mode 100644 index cf3c8ac5..00000000 Binary files a/images/textures/timbercut-small.jpg and /dev/null differ diff --git a/index.css b/index.css index 4c8668cc..08e5d07e 100644 --- a/index.css +++ b/index.css @@ -41,6 +41,10 @@ button { left: 1em; } +#pickerContainer { + position: absolute; +} + input, button, select, a { outline: none; } @@ -92,11 +96,11 @@ button, select, a { stroke-linejoin: round; } -#regions, #terrs, #biomes, #tooltip, #temperature, #texture, #landmass { +#regions, #provs, #terrs, #biomes, #tooltip, #temperature, #texture, #landmass { pointer-events: none; } -#statesBody { +#statesBody, #provincesBody { stroke-width: 2; fill-rule: evenodd; mask: url(#land); @@ -113,6 +117,13 @@ button, select, a { fill: none; } +#provinceLabels { + text-anchor: middle; + fill: "#18181a"; + font-family: "Georgia"; + font-size: 9px; +} + @keyframes hideshow { 0% {stroke-width: 1;} 50% {stroke-width: 10;} @@ -183,7 +194,7 @@ i.icon-lock { } #labels { - text-anchor: middle; + text-anchor: start; dominant-baseline: central; text-shadow: 0 0 4px white; cursor: pointer; @@ -191,6 +202,7 @@ i.icon-lock { #burgLabels { dominant-baseline: alphabetic; + text-anchor: middle; } #routeLength, #riverLength { @@ -538,8 +550,8 @@ fieldset { background-color: #997b89; cursor: pointer; padding: 4px; - margin: 2px 0; - display: inline-block; + margin: 2px 3px; + float: left; width: 28%; text-align: center; } @@ -643,6 +655,77 @@ fieldset { text-align: center; } +.matrix-table { + width: 100%; + font-size: smaller; + text-align: center; + border-collapse: collapse; +} + +table.matrix-table th, table.matrix-table td { + border: 1px solid #5d4651; + height: 2em; + padding: .2em; + position: relative; +} + +table.matrix-table th { + background-color: #302a2a; + color: #ffffff; +} + +table.matrix-table tr:hover th { + background: #3e3636; +} + +table.matrix-table td:hover { + outline: 2px solid #5d4651; + outline-offset: -1px; + z-index: 1; +} + +table.matrix-table td.Ally { + background-color: #73ec73; + color: #000000; +} + +table.matrix-table td.Sympathy { + background-color:#d4f8aa; +} + +table.matrix-table td.Neutral { + background-color:#d8d9d3; +} + +table.matrix-table td.Suspicion { + background-color:#f3c7c4; +} + +table.matrix-table td.Enemy { + background-color:#ffa39c; + color: #af0d23; +} + +table.matrix-table td.Unknown { + background-color:#c1bfbf; +} + +table.matrix-table td.Rival { + background-color:#bd845c; +} + +table.matrix-table td.Vassal { + background-color:#87CEFA; +} + +table.matrix-table td.Suzerain { + background-color:#8f8fe1; +} + +table.matrix-table td.x { + background-color:#d4ca94; +} + #sizeOutput { color: green; } @@ -706,26 +789,43 @@ body button.noicon { float: right; } -#templateBody input { - width: 36px; - height: 12px; - border: 0; +#templateBody input, +#templateBody select { + width: 4em; + height: 1em; + border: 0; + font-size: .95em; + background-color: #ffffff95; + color: #05044d; + font-style: italic; font-family: monospace; } #templateBody select { - border: 0; - width: 79px; + width: 8em; cursor: pointer; - font-family: monospace; - height: 12px; font-size: .9em; } +#templateBody .icon-resize-vertical { + cursor: row-resize; + font-size: .9em; + color: #555555; + margin: 1px 1px; +} + +#templateBody .icon-check-empty, +#templateBody .icon-check { + width: 1.1em; + cursor: pointer; + color: #575957; + font-size: .9em; +} + #controlPoints { fill: #ff0000; stroke: #841f1f; - stroke-width: .2; + stroke-width: .3; cursor: move; opacity: .8; } @@ -733,8 +833,8 @@ body button.noicon { #controlPoints > path { fill: none; stroke: #000000; - stroke-width: 1; - opacity: .3; + stroke-width: 2; + opacity: .4; cursor: pointer; } @@ -927,12 +1027,24 @@ div.slider .ui-slider-handle { display: none !important; } +.burgs-table { + max-height: 75vh; + overflow-x: hidden; + overflow-y: scroll; +} + .table { max-height: 75vh; overflow-x: hidden; overflow-y: auto; } +div.header > div { + font-weight: bold; + font-size: .9em; + display: inline-block; +} + .sortable { font-weight: bold; font-size: .9em; @@ -957,6 +1069,7 @@ div.states { margin: 1px 0; padding: 0 2px; font-size: .9em; + line-height: 15px; } div.states:hover { @@ -1010,18 +1123,24 @@ div.states>.statePopulation { width: 30px; } -div.states .icon-trash-empty { +div.states .icon-trash-empty, +div.states .icon-eye, +div.states .icon-pin { cursor: pointer; } +div.states .icon-resize-vertical { + cursor: row-resize; + font-size: .9em; +} + div.states>[class^="icon-"] { color: #6e5e66; padding: 0; } -div.states>[class="icon-arrows-cw"] { +div.states > .icon-arrows-cw { color: #67575c; - padding: 0 2px 0 0; font-size: 9px; cursor: pointer; } @@ -1037,15 +1156,17 @@ div.states>.small { div.states>.cultureName { width: 50px; + white-space: nowrap; } div.states>.culturePopulation { width: 40px; } -div.states > .cultureBase, +div.states > .cultureBase, div.states > .cultureType, -div.states > .stateCulture { +div.states > .stateCulture, +div.states > .diplomacyRelations { width: 46px; cursor: pointer; border: 0; @@ -1055,6 +1176,10 @@ div.states > .stateCulture { appearance: textfield; } +div.states > .cultureBase { + width: 6em; +} + div.states > .burgName, div.states > .burgState, div.states > .burgCulture { @@ -1075,12 +1200,20 @@ div.states .burgType > span { transition: 0.2s; } -div.states .burgType > span.inactive { - color: #dfdbdb; +div.states span.inactive { + color: #c6c2c2; } -div.states .burgType > span.inactive:hover { - color: #d1d0d0; +div.states span.inactive:hover { + color: #abaaaa; +} + +#diplomacyBodySection > div { + cursor: pointer; +} + +div.states > div.stateName { + width: 12em; } #burgsFooterPopulation { @@ -1091,6 +1224,28 @@ div.states .burgType > span.inactive:hover { line-height: 14px; } +div.states>.religionName { + width: 11em; +} + +div.states>.religionType { + width: 5em; + cursor: pointer; + border: 0; + background-color: transparent; + -webkit-appearance: textfield; + -moz-appearance: none; + appearance: textfield; +} + +div.states>.religionForm { + width: 6em; +} + +div.states>.religionDeidy { + width: 15em; +} + .placeholder { opacity: 0; cursor: default; @@ -1103,8 +1258,16 @@ span.ui-dialog-title>input.stateColor { } div.states.selected { - border: 1px solid #b28585; - background-image: linear-gradient(to right, #e5dada 100%, #f2f2f2 51%, #fcfcfc 0%); + border-color: #b28585; + background-image: linear-gradient(to right, #f2f2f2 0%, #ebe7e7 50%, #E5DADB 100%); +} + +div.states.Self { + border-color: #858b8e; + background-image: linear-gradient(to right, #f2f2f2 0%, #b0c6d9 100%); + font-style: italic; + margin-bottom: .2em; + cursor: default !important; } div.states button.selectCapital { @@ -1120,6 +1283,64 @@ div.states > div.biomeArea { width: 50px; } +.zoneFill { + stroke: #666666; + stroke-width: 2; + cursor: pointer; +} + +#pickerHeader { + fill: #916e7f; + cursor: move; +} + +#pickerLabel { + fill: #f8ffff; + font-size: 1.2em; + font-weight: bold; + font-family: Arial, Helvetica, sans-serif; + cursor: move !important; +} + +#picker text { + cursor: default; +} + +#pickerControls line { + stroke: #999999; + stroke-width: 2; +} + +#pickerControls circle { + fill: #ffeb3b; + stroke: #666666; + cursor: ew-resize; +} + +#pickerControls circle:hover { + fill: #eca116; + stroke: #000000; +} + +#pickerColors rect, #pickerHatches rect { + cursor: pointer; +} + +#picker rect.selected { + outline: 2px dashed #b90c0c; + stroke-width: 0; +} + +.hoverButton { + position: sticky; + margin-left: -1.8em; + margin-top: 1px; + background-color: #dedede; + font-size: 8px; + cursor: pointer; + padding: 0px 3px !important; +} + #unitsBody>div>* { display: inline-block; } @@ -1150,6 +1371,15 @@ div.states > div.biomeArea { border: 1px solid #e9e9e9; } +#unitsEditor i.icon-lock-open, +#unitsEditor i.icon-lock { + color: #626573; + font-size: .8em; + cursor: pointer; + position: fixed; + margin: .4em 0 0 -.9em; +} + #distanceUnitOutput { width: 0; margin-left: -2.5em; @@ -1218,19 +1448,12 @@ div.states > div.biomeArea { fill: none; } -#coordinates text { +#coordinateLabels { fill: #333333; - stroke: none; font-family: monospace; text-shadow: 0 0 4px white; -} - -#lalitude text { + stroke-width: 0; dominant-baseline: central; -} - -#longitude text { - dominant-baseline: hanging; text-anchor: middle; } @@ -1338,25 +1561,24 @@ input[type="checkbox"] { } .checkbox+.checkbox-label:before { - content: ''; - background: #ece6eb; - border-radius: 1px; - display: inline-block; - vertical-align: text-top; - width: 7px; - height: 7px; - padding: 2px; - margin-right: 3px; + content: ''; + display: inline-block; + vertical-align: text-top; + width: 7px; + height: 7px; + padding: 2px; + margin-right: 3px; + border: 1px solid darkgrey; + border-radius: 15%; + background: white; } .checkbox:checked+.checkbox-label:before { - line-height: 8px; - font-size: 12px; - font-weight: bold; - content: '✓'; - background: #c6b4bb; - color: #1c181a; - box-shadow: inset 0px 0px 0px 2px #ece6ea; + line-height: 8px; + font-size: 12px; + font-weight: bold; + content: '✓'; + color: #333333; } .shadowed { @@ -1387,12 +1609,6 @@ input[type="checkbox"] { height: 100%; } -#cultureCenters circle { - stroke-width: 2; - stroke: #00000080; - cursor: pointer; -} - div.textual select, div.textual textarea { font-family: Copperplate, monospace; @@ -1458,33 +1674,32 @@ div.textual span, .textual legend { fill: none; } -div#legend { +div#notes { display: none; - position: fixed; - width: 25vw; - right: 1vw; - top: 1vw; - font-size: 1em; - border: 1px solid #5e4fa2; - background: #cdb99040; - box-shadow: 2px 2px 5px -3px #3a2804; - white-space: pre-line; - -moz-user-select: none; - user-select: none; + position: fixed; + width: 28vw; + right: 1vw; + top: 1vw; + font-size: 1.2em; + border: 1px solid #5e4fa2; + background: rgba(255, 250, 228, 0.7); + box-shadow: 2px 2px 5px -3px #3a2804; + white-space: pre-line; + -moz-user-select: none; + user-select: none; } -div#legendHeader { +div#notesHeader { font-weight: bold; font-size: 1.3em; padding: 0 0 4px 14px; border-bottom: 1px solid #5e4fa2; } -div#legendBody { +div#notesBody { padding: 0 10px; } - svg.button { position: relative; background-color: transparent; @@ -1493,13 +1708,16 @@ svg.button { } #reliefEditor > div > div { - width: 4em; font-style: italic; display: inline-block; } +#reliefEditor div.reliefEditorLabel { + width: 4em; +} + #reliefEditor input[type="range"] { - width: 15em; + width: 16em; } #reliefEditor input[type="number"] { @@ -1512,22 +1730,24 @@ svg.button { max-width: 30vw; } -#reliefIconsDiv > svg { +#reliefIconsDiv svg { width: 40px; height: 40px; - border-radius: 15%; + background-color: #e7e6e4; border: 1px solid #a9a9a9; cursor: pointer; } -#reliefIconsDiv > svg:hover { +#reliefIconsDiv svg:hover { border-color: #5c5c5c; background-color: #eef6fb; + transition: all .3s ease-out 3s; + transform: scale(2); } -#reliefIconsDiv > svg.pressed { +#reliefIconsDiv svg.pressed { border: 1px solid #b3352c; - background-color: #eef6fb; + background-color: #f2f2f2; } #reliefIconsSeletionAny { @@ -1540,6 +1760,7 @@ svg.button { -moz-user-select: text; user-select: text; max-height: 75vh; + max-width: 75vw; } #alertMessage ul { @@ -1558,27 +1779,28 @@ svg.button { } #worldControls { - width: 190px; + width: 16em; display: inline-block; - vertical-align: top; + vertical-align: top; } -#worldControls > label { +#worldControls > div { display: block; margin: 1px 0; - font-size: 11px; padding: 2px 0; } #worldControls input[type="number"] { border: 1px solid #e5e5e5; padding: 0px; + width: 3.2em; } #worldControls i.icon-lock-open, #worldControls i.icon-lock { color: #626573; - font-size: 9px; + font-size: .8em; + cursor: pointer; } #globe { @@ -1649,6 +1871,17 @@ svg.button { stroke-width: 1.4; } +#legend { + cursor: move; + -moz-user-select: none; + user-select: none; +} + +.dontAsk { + display: inline-block; + margin: 10px 0 0 7px; +} + #debug { font-size: 1px; opacity: 0.8; diff --git a/index.html b/index.html index 32d95839..7fcfd41d 100644 --- a/index.html +++ b/index.html @@ -16,8 +16,8 @@ - - + + @@ -30,9 +30,15 @@ + + + + + + @@ -114,17 +120,81 @@ - + - + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -175,46 +245,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -225,25 +549,25 @@ - + - + - + - + - + - + @@ -251,9 +575,9 @@ - + - + @@ -261,9 +585,9 @@ - + - + @@ -271,113 +595,105 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + - + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - + + + + - - + + @@ -387,24 +703,24 @@ - + - - + + - + - + - + @@ -414,7 +730,7 @@ - + @@ -422,20 +738,15 @@ - + - - - - - + - @@ -443,20 +754,20 @@ - + - + - + @@ -518,13 +829,13 @@ - + - + @@ -532,7 +843,7 @@ - + @@ -563,7 +874,7 @@
Azgaar's
Fantasy Map Generator
-
v. 0.9b
+
v. 1.0

LOADING...

@@ -590,33 +901,40 @@ +

Displayed layers:

    -
  • Texture
  • -
  • Heightmap
  • -
  • Biomes
  • -
  • Cells
  • -
  • Grid
  • -
  • Coordinates
  • -
  • Compass Rose
  • -
  • Rivers
  • -
  • Relief
  • -
  • Cultures
  • -
  • States
  • -
  • Borders
  • -
  • Routes
  • -
  • Temperature
  • -
  • Population
  • -
  • Precipitation
  • -
  • Labels
  • -
  • Icons
  • -
  • Markers
  • +
  • Texture
  • +
  • Heightmap
  • +
  • Biomes
  • +
  • Cells
  • +
  • Grid
  • +
  • Coordinates
  • +
  • Wind Rose
  • +
  • Rivers
  • +
  • Relief
  • +
  • Religions
  • +
  • Cultures
  • +
  • States
  • +
  • Provinces
  • +
  • Zones
  • +
  • Borders
  • +
  • Routes
  • +
  • Temperature
  • +
  • Population
  • +
  • Precipitation
  • +
  • Labels
  • +
  • Icons
  • +
  • Markers
  • Rulers
  • Scale Bar
@@ -632,22 +950,27 @@ + + + + - + + @@ -658,7 +981,7 @@ Group - + @@ -685,8 +1008,34 @@ Halo opacity - - 0.4 + + 1 + + + + + + + Column items + + + 8 + + + + + Background + + + #ffffff + + + + + Opacity + + + 1 @@ -714,25 +1063,25 @@ Image @@ -849,6 +1198,17 @@ + + Style + + + + + Size @@ -865,7 +1225,7 @@ - + Fill @@ -890,7 +1250,7 @@ Stroke width - + 1 @@ -996,7 +1356,7 @@ #000 - + @@ -1044,8 +1404,8 @@ - - + + @@ -1055,7 +1415,9 @@ + + @@ -1067,6 +1429,8 @@ + + @@ -1195,6 +1559,19 @@ + + + + + Provinces number + + + + + + + + @@ -1234,6 +1611,18 @@ + + + + + Religions number + + + + + + +

User Interface:

@@ -1253,10 +1642,10 @@ Tooltips size - + - + @@ -1264,10 +1653,10 @@ Transparency - + - + @@ -1286,10 +1675,10 @@ Zoom extent - min - - max - + min + + max + @@ -1310,10 +1699,15 @@ + + + + - + +
@@ -1325,6 +1719,8 @@ + +
@@ -1346,14 +1742,16 @@
Type: n/a
Precip: 0
- Population: 0 + Population: 0
Height: 0
Temperature: 0
Biome: n/a
State: n/a
+ Province: n/a
Culture: n/a
+ Religion: n/a
Burg: n/a
@@ -1400,10 +1798,10 @@

Fantasy Map Generator is a free open source tool which procedurally generates fantasy maps. You may use auto-generated maps as they are, edit them or even create a new map from scratch. Check out the quick start tutorial and project wiki for guidance.

-

Join our Reddit Community if you have questions, need help, have a suggestion or want to share a created map. You may support the project on Patreon.

+

Join our Discord server and Reddit community to ask questions, get help and share created maps. You may support the project on Patreon.

The project is under active development. For older versions see the changelog. To track the development progress see the devboard. Please report bugs here. You can also contact me directly via email.

A special thanks to all supporters!

-

Supporters: Aaron Meyer, Ahmad Amerih, AstralJacks, aymeric, Billy Dean Goehring, Branndon Edwards, Chase Mayers, Curt Flood, cyninge, Dino Princip, E.M. White, es, Fondue, Fritjof Olsson, Gatsu, Johan Fröberg, Jonathan Moore, Joseph Miranda, Kate, KC138, Luke Nelson, Markus Finster, Massimo Vella, Mikey, Nathan Mitchell, Paavi1, Pat, Ryan Westcott, Sasquatch, Shawn Spencer, Sizz_TV, Timothée CALLET, UTG community, Vlad Tomash, Wil Sisney, William Merriott, Xariun, Gun Metal Games, Scott Marner, Spencer Sherman, Valerii Matskevych, Alloyed Clavicle, Stewart Walsh, Ruthlyn Mollett (Javan), Benjamin Mair-Pratt, Diagonath, Alexander Thomas, Ashley Wilson-Savoury, William Henry, Doug Churchman, Daniel Eric Crosby, DerGeisterbГär, 魏, Marcus Hellyrr and many others!

+

Supporters: Aaron Meyer, Ahmad Amerih, AstralJacks, aymeric, Billy Dean Goehring, Branndon Edwards, Chase Mayers, Curt Flood, cyninge, Dino Princip, E.M. White, es, Fondue, Fritjof Olsson, Gatsu, Johan Fröberg, Jonathan Moore, Joseph Miranda, Kate, KC138, Luke Nelson, Markus Finster, Massimo Vella, Mikey, Nathan Mitchell, Paavi1, Pat, Ryan Westcott, Sasquatch, Shawn Spencer, Sizz_TV, Timothée CALLET, UTG community, Vlad Tomash, Wil Sisney, William Merriott, Xariun, Gun Metal Games, Scott Marner, Spencer Sherman, Valerii Matskevych, Alloyed Clavicle, Stewart Walsh, Ruthlyn Mollett (Javan), Benjamin Mair-Pratt, Diagonath, Alexander Thomas, Ashley Wilson-Savoury, William Henry, Preston Brooks, JOSHUA QUALTIERI and many others!

@@ -1612,73 +2020,123 @@ + @@ -1803,7 +2262,7 @@