- ID scansione:
- 71fa0be5-8878-4a8a-afe9-3624ff2a0d74Fatto
- URL inviato:
- https://ck2rpg.github.io/generator
- Report terminato:
Link · 5 trovati
I link in uscita identificati dalla pagina
Link | Testo |
---|---|
https://discord.gg/JwxuuK7HrV | TUTORIAL |
https://discord.gg/eemRxbCUX3 | Discord |
https://steamcommunity.com/sharedfiles/filedetails/?id=3320451649 | workshop |
https://mods.paradoxplaza.com/mods/88801/Any | Paradox Mods |
https://steamcommunity.com/sharedfiles/filedetails/?id=3315769954 | here |
Variabili JavaScript · 717 trovate
Le variabili JavaScript globali caricate sull'oggetto finestra di una pagina sono variabili dichiarate all'esterno delle funzioni e accessibili da qualsiasi punto del codice nell'ambito corrente
Nome | Tipo |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
get3dColor | function |
run3dMap | function |
runWalkableMap | function |
SimplexNoise | function |
startClock | function |
passDay | function |
addMonths | function |
Messaggi di log della console · 4 trovati
Messaggi registrati nella console Web
Tipo | Categoria | Log |
---|---|---|
warning | other |
|
log | other |
|
log | other |
|
error | network |
|
HTML
Il corpo HTML non elaborato della pagina
<!DOCTYPE html><html lang="en" dir="ltr"><head>
<meta charset="utf-8">
<title>Procedural Map Generator</title>
<link rel="stylesheet" href="css/bs.css">
<link rel="stylesheet" href="css/menus.css">
<link rel="stylesheet" href="css/landing.css">
</head>
<body>
<div id="done-done">
<p>Woohoo! You are done with the browser-based work. Please see the <a href="https://discord.gg/JwxuuK7HrV">TUTORIAL</a> for next steps.</p>
</div>
<div id="province-drawn-proceed">
Your province map has been downloaded. Now you can edit your provinces. When you are done, click proceed to go on to save your files.
</div>
<div class="downloads-menus" id="image-download-settings">
<p>Now it is time to download the image files. Click below to choose the files to download. Do not move away from this page until your heightmap has downloaded. This may take some time, but the page will automatically redirect to further instructions when it is finished.<br><br></p>
<div class="download-buttons" id="download-all-checked-images">
Download Image Files
</div>
</div>
<div class="downloads-menus" id="text-download-settings">
Now it is time to download the text files. Click below to choose the files to download.<br><br>
<div id="text-generation-settings">
<p>Do you want to override your zoomed in map with your flat map? This will give the entire map a paper feel. If you do this, there is no going back.</p>
<br><br>
<select id="overrideSelect">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
</div>
<div class="download-buttons" id="write-all-checked-texts-button">
Download Text Files
</div>
</div>
<div id="province-creation-screen">
Be patient, your provinces are generating.
</div>
<div class="override-editor" id="title-editor" style="display: none">
<div class="close-btn" id="close-title-editor">✖</div>
<div id="title-editor-content">
<!-- Dynamic culture content goes here -->
</div>
</div>
<div class="override-editor" id="culture-editor" style="display: none;">
<div class="close-btn" id="close-editor">✖</div>
<div id="culture-editor-content">
<!-- Dynamic culture content goes here -->
</div>
</div>
<div class="override-editor" id="faith-editor" style="display: none;">
<div class="close-btn" id="close-faith-editor">✖</div>
<div id="faith-editor-content">
<!-- Dynamic culture content goes here -->
</div>
</div>
<div id="main-generator-div">
<div id="main-generator-editor"></div>
<canvas id="overlay-canvas" style="width: 85vw; height: 100vh;"></canvas>
<canvas id="canvas" style="width: 85vw; height: 100vh;"></canvas>
<!--
<div id="brush-container" class="brush-container">
<div class="zoom-button icon-tools has-tool-tip">M<span class="tool-tip">Map</span></div>
</div>
-->
<div id="zoom-container" class="zoom-container">
<div id="save-map" class="fullscreen-button has-tool-tip"><img class="sidebar-icon" src="icons/activemap.png"><span class="tool-tip">Save Current Active Map</span></div>
<div id="save-settings" class="fullscreen-button has-tool-tip"><img class="sidebar-icon" src="icons/download.png"><span class="tool-tip">Save Settings</span></div>
<div class="file-upload-wrapper has-tool-tip">
<button class="fullscreen-button has-tool-tip"><img class="sidebar-icon" src="icons/upload.png" style="width: 70%; height: 60%"><span class="tool-tip">Load Settings</span></button>
<input type="file" id="loadSettingsInput">
</div>
<div id="zoom-in" class="zoom-button has-tool-tip">+<span class="tool-tip">Zoom In</span></div>
<div id="zoom-out" class="zoom-button has-tool-tip">-<span class="tool-tip">Zoom Out</span></div>
<div id="fullscreen" class="fullscreen-button has-tool-tip">⛶<span class="tool-tip">Wrap</span></div>
<div id="randomNoiseMap" class="fullscreen-button has-tool-tip"><img src="icons/globe.png" style="width: 65%; height: 65%"><span class="tool-tip">Random Map</span></div>
<div id="roller" class="fullscreen-button has-tool-tip"><img src="icons/redo-icon.png" style="width: 65%; height: 65%"><span class="tool-tip">Roll Random Maps</span></div>
</div>
<!-- Main Side Panel -->
<div id="menus-main" class="moveable-element menu-hideable ck-style-tray">
<div class="display-horizontal flex-spread-evenly">
<span>Procedural Map Generator</span>
<div>
<div id="anchor" class="icon-clickable icon-extra-small moveable-element-anchor"><img src="icons/ui/move.png"></div>
</div>
</div>
<div class="tabs">
<button class="tab-button active" onclick="openTab(event, 'MassChanges')">Mass</button>
<button class="tab-button" onclick="openTab(event, 'BrushSettings')">Brush</button>
<button class="tab-button" onclick="openTab(event, 'MapSettings')">Map</button>
<button class="tab-button" onclick="openTab(event, 'ClimateSettings')">Climate</button>
<button class="tab-button" onclick="openTab(event, 'FeatureSettings')">Features</button>
<button class="tab-button" onclick="openTab(event, 'ProvinceSettings')">Province</button>
<button class="tab-button" onclick="openTab(event, 'ImportSettings')">Import</button>
<button class="tab-button" onclick="openTab(event, 'Titles')">Titles</button>
<button class="tab-button" onclick="openTab(event, 'CultureSettings')">Cultures</button>
<button class="tab-button" onclick="openTab(event, 'ReligionSettings')">Religions</button>
<button class="tab-button" onclick="openTab(event, 'HistorySettings')">History</button>
</div>
<div id="MassChanges" class="tab-content" style="display: block;">
<div class="menu-section-content menu-hideable-area menu-setting">
<div class="icon-tray">
<div class="icon-clickable icon-tools has-tool-tip"><img id="startup" src="icons/newmap.png"><span class="tool-tip">Create a New Map</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="droptowater" src="icons/droptowater.png"><span class="tool-tip">Drop All Cells to Ocean</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="broom" src="icons/broom.png"><span class="tool-tip">Clean Up Any Isolated Single Cells</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="spread-icon" src="icons/spread-icon.png"><span class="tool-tip">Spread Elevation From Spreading Centers</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="soften-spread-icon" src="icons/soften-spread-icon.png"><span class="tool-tip">Soften Elevation and Spread it Out</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="increase-elevation-icon" src="icons/increase-elevation-icon.png"><span class="tool-tip">Increase Elevation Everywhere</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="decrease-elevation-icon" src="icons/decrease-elevation-icon.png"><span class="tool-tip">Decrease Elevation Everywhere</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="rerun-rivers-icon" src="icons/rerun-rivers-icon.png"><span class="tool-tip">Rerun Rivers</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="raise-mountains-icon" src="icons/raise-mountains.png"><span class="tool-tip">Raise Elevation of Mountains Only</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="lower-mountains-icon" src="icons/lower-mountains.png"><span class="tool-tip">Lower Elevation of Mountains Only</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="raiseLand" src="icons/raise-land-only-icon.png"><span class="tool-tip">Raise Elevation of Land Only</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="lowerWater" src="icons/lower-water-only-icon.png"><span class="tool-tip">Lower Elevation of Water Only</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="noiseMap" src="icons/noise-icon.png"><span class="tool-tip">Basic Noise Map</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="all-to-sea-level" src="icons/all-to-sea-level.png"><span class="tool-tip">All Elevations to Sea Level</span></div>
<div class="icon-clickable icon-tools has-tool-tip"><img id="water-to-sea-level" src="icons/water-to-sea-level.png"><span class="tool-tip">Raise Elevation of Water to Sea Level</span></div>
</div>
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="mass-brush-adjuster">Adjustment Level</label>
<input class="ck-field" type="number" id="mass-brush-adjuster" min="-100" max="100" value="0" step="1" oninput="updateMassBrushAdjuster(this.value)">
<span class="tool-tip">Changing the adjustment level affects the factor by which the Mass Change brushes are applied.</span>
</div>
</div>
</div>
<div id="BrushSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<div class="display-horizontal flex-spread-evenly flex-align-vertically">
<div class="display-horizontal">
<div class="has-tool-tip icon-extra-small"><img class="img-icon" id="paint-increase-elevation" src="icons/paint-increase-elevation.png"><span class="tool-tip">Raise Elevation Brush</span></div>
<div class="has-tool-tip icon-extra-small"><img class="img-icon" id="paint-decrease-elevation" src="icons/paint-decrease-elevation.png"><span class="tool-tip">Lower Elevation Brush</span></div>
<div class="has-tool-tip icon-extra-small"><img class="img-icon" id="paint-erode" src="icons/erosion.png"><span class="tool-tip">Erode Brush</span></div>
<div class="has-tool-tip icon-extra-small"><img class="img-icon" id="erase-province" src="icons/eraser.png"><span class="tool-tip">Erase Province</span></div>
<div class="has-tool-tip icon-extra-small"><img class="img-icon" id="undoMap" src="icons/undo-icon.png"><span class="tool-tip">Undo</span></div>
<div class="has-tool-tip icon-extra-small"><img class="img-icon" id="redoMap" src="icons/redo-icon.png"><span class="tool-tip">Redo</span></div>
</div>
<div class="color-picker has-tool-tip" id="color-picker" style="display: none;">
<div class="color-option" style="background-color: rgb(97, 170, 229);" data-tooltip="Sea Level">
<div class="color-tooltip">Sea Level</div>
</div>
<div class="color-option" style="background-color: rgb(204, 163, 102);" data-tooltip="Plains">
<div class="color-tooltip">Plains</div>
</div>
<div class="color-option" style="background-color: rgb(255, 230, 0);" data-tooltip="Desert">
<div class="color-tooltip">Desert</div>
</div>
<div class="color-option" style="background-color: rgb(220, 45, 120);" data-tooltip="Drylands">
<div class="color-tooltip">Drylands</div>
</div>
<div class="color-option" style="background-color: rgb(55, 31, 153);" data-tooltip="Floodplains">
<div class="color-tooltip">Floodplains</div>
</div>
<div class="color-option" style="background-color: rgb(90, 50, 12);" data-tooltip="Hills">
<div class="color-tooltip">Hills</div>
</div>
<div class="color-option" style="background-color: rgb(100, 100, 100);" data-tooltip="Mountains">
<div class="color-tooltip">Mountains</div>
</div>
<div class="color-option" style="background-color: rgb(46, 153, 89);" data-tooltip="Taiga">
<div class="color-tooltip">Taiga</div>
</div>
<div class="color-option" style="background-color: rgb(23, 19, 38);" data-tooltip="Desert Mountains">
<div class="color-tooltip">Desert Mountains</div>
</div>
<div class="color-option" style="background-color: rgb(255, 0, 0);" data-tooltip="Farmlands">
<div class="color-tooltip">Farmlands</div>
</div>
<div class="color-option" style="background-color: rgb(71, 179, 45);" data-tooltip="Forest">
<div class="color-tooltip">Forest</div>
</div>
<div class="color-option" style="background-color: rgb(10, 60, 35);" data-tooltip="Jungle">
<div class="color-tooltip">Jungle</div>
</div>
<div class="color-option" style="background-color: rgb(155, 143, 204);" data-tooltip="Oasis">
<div class="color-tooltip">Oasis</div>
</div>
<div class="color-option" style="background-color: rgb(200, 100, 25);" data-tooltip="Steppe">
<div class="color-tooltip">Steppe</div>
</div>
<div class="color-option" style="background-color: rgb(77, 153, 153);" data-tooltip="Wetlands">
<div class="color-tooltip">Wetlands</div>
</div>
</div>
<div class="color-box has-tool-tip" id="selected-color">
<div class="tool-tip" id="selected-tooltip">Select Color</div>
</div>
<input type="color" id="title-color" value="#ff0000">
</div>
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="absoluteBrush">Absolute</label>
<input type="checkbox" id="absoluteBrush">
<span class="tool-tip">Should brush power make absolute changes to elevation?</span><br>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="sizeSlider">Brush Size</label>
<input type="number" id="sizeSlider" min="1" max="2000" value="30" step="1" oninput="updateSliderValue(this.value)">
<span class="tool-tip">Change the diameter of the brush.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="powerSlider">Brush Power</label>
<input type="number" id="powerSlider" min="0" max="510" value="1" step="1" oninput="updatePowerSliderValue(this.value)">
<span class="tool-tip">Change the hardness of the brush. Each increment corresponds to one elevation. Elevation spans from -255 to 510 and is normalized from 0 to 255 on heightmap.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="limitSlider">Upper Limit</label>
<input type="number" id="limitSlider" min="-255" max="510" value="510" step="1" oninput="updateLimitSliderValue()">
<span class="tool-tip">Change the upper elevation limit of the brush. On raise land, it will at max raise to this level.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="lowerLimitSlider">Lower Limit</label>
<input type="number" id="lowerLimitSlider" min="-255" max="510" value="0" step="1" oninput="updateLowerLimitSliderValue()">
<span class="tool-tip">Change the lower elevation limit of the brush. On lower land, it will at max lower to this level.</span>
</span>
</div>
</div>
<div id="MapSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="map-sizes">Map Size</label>
<select name="map-sizes" id="map-sizes">
<option value="8192x4096">8192x4096</option>
<option value="4096x2048">4096x2048</option>
<option value="2048x1024">2048x1024</option>
<option value="1024x512">1024x512</option>
</select>
<span class="tool-tip">Map Size refers to the ultimate size of your generated map. For example, the vanilla map is 8192x4096 pixels.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="generator-resolution">Resolution</label>
<select name="generator-resolution" id="generator-resolution">
<option value="512x256">512x256</option>
<option value="1024x512">1024x512</option>
<option value="2048x1024">2048x1024</option>
<option value="4096x2048">4096x2048</option>
<option value="8192x4096">8192x4096</option>
</select>
<span class="tool-tip">Generator resolution is the underlying size of your generated map data. If resolution is less than map size, a single cell corresponds to multiple pixels on the ultimate map. For example, a 512x256 resolution with a 8192x4096 map size means that each cell in the generator corresponds to a 16x16 square of the generated map. The lower the resolution, the blockier your results. The higher the resolution, the lower the generator's performance.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="elevation-to-heightmap">Elevation to Heightmap Divider:</label>
<input type="number" id="elevation-to-heightmap" min="2" max="100" value="2" oninput="elevationToHeightmapAdjuster()">
<span class="tool-tip">In the generator, elevation of land ranges from 37-510. The default divider of 2 converts to where the highest place on heightmap is rgb(255,255,255). Increase the divider value to squish the terrain down and make it less stark. This will not affect the cut-offs for different terrain types.</span>
</span>
</div>
</div>
<div id="ClimateSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="equatorSlider" class="slider-label" debounce="True">Equator</label>
<input type="number" id="equatorSlider" min="0" max="8192" value="4096" step="1" oninput="equatorChange()">
<span class="tool-tip">How many pixels from the top of the canvas is the equator?</span>
</span>
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="tropicalUpper">Tropical</label>
<input type="number" id="tropicalUpper" class="climateChanger" min="0" max="4096" value="1007" oninput="limitAdjuster()">
<span class="tool-tip">What Y distance from the equator (black line on color map) does the tropical climate zone end?</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="subTropicalUpper">Sub-Tropical</label>
<input type="number" id="subTropicalUpper" class="climateChanger" min="0" max="4096" value="1520" oninput="limitAdjuster()">
<span class="tool-tip">What Y distance from the equator (black line on color map) does the subtropical climate zone end?</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="temperateUpper">Temperate</label>
<input type="number" id="temperateUpper" class="climateChanger" min="0" max="4096" value="2865" oninput="limitAdjuster()">
<span class="tool-tip">What Y distance from the equator (black line on color map) does the temperate climate zone end? The cold zone takes up the remainder.</span>
</span>
</div>
</div>
<div id="FeatureSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting">
<label for="riversSlider">Rivers</label>
<input type="range" id="riversSlider" class="slider" min="0" max="30" value="1" step="1" oninput="riverChange()">
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="hills-line">Hills Elevation:</label>
<input type="number" id="hills-line" min="37" max="510" value="205" oninput="hillAdjuster()">
<span class="tool-tip">When the generator reaches this elevation, hills terrain and masking occurs.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="mountain-line">Mountain Elevation:</label>
<input type="number" id="mountain-line" min="37" max="510" value="255" oninput="mountainAdjuster()">
<span class="tool-tip">When the generator reaches this elevation, hills change to mountain terrain and masking.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="snow-line">Snow Line Elevation:</label>
<input type="number" id="snow-line" min="37" max="510" value="450" oninput="snowLineAdjuster()">
<span class="tool-tip">When the generator reaches this elevation, mountains change to snow line with snow masking.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="farmland-elevation">Farmland Max Elevation:</label>
<input type="number" id="farmland-elevation" min="37" max="510" value="65" oninput="farmlandElevationAdjuster()">
<span class="tool-tip">When the generator reaches this elevation, farmlands will not produce.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="farmland-chunk">Farmland Chunk Size:</label>
<input type="number" id="farmland-chunk" min="1" max="200" value="16" oninput="farmlandChunkAdjuster()">
<span class="tool-tip">When the generator reaches this elevation, farmlands will not produce.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="farmland-scattershot">Farmland Scattershot</label>
<input type="number" id="farmland-scattershot" min="0" max="400" value="16" oninput="farmlandScattershotAdjuster()">
<span class="tool-tip">Increasing this will make farmland more scattershot but less cohesive.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="wetland-elevation">Wetland Max Elevation:</label>
<input type="number" id="wetland-elevation" min="37" max="510" value="65" oninput="wetlandElevationAdjuster()">
<span class="tool-tip">When the generator reaches this elevation, wetlands will not produce.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="wetland-chunk">Wetland Chunk Size:</label>
<input type="number" id="wetland-chunk" min="1" max="200" value="16" oninput="wetlandChunkAdjuster()">
<span class="tool-tip">When the generator reaches this elevation, wetlands will not produce.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="wetland-scattershot">Wetlands Scattershot</label>
<input type="number" id="wetland-scattershot" min="0" max="400" value="16" oninput="wetlandScattershotAdjuster()">
<span class="tool-tip">Increasing this will make wetlands more scattershot but less cohesive.</span>
</span>
</div>
</div>
<div id="ProvinceSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="max-land-province-setting">Max Land Provinces</label>
<input id="max-land-province-setting" type="number" min="100" max="20000" value="8000" oninput="updateMaxLandProvinces(this.value)">
<span class="tool-tip">EXPERIMENTAL FEATURE WARNING: Max land provinces is an upper limit, which may not be reached, to the number of generated land provinces. Reducing the maximumn number of land provinces requires a higher fill. Even then, you may see bad results (provinces that bleed too far or maps that don't have sufficient province coverage).</span>
</span>
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="max-water-province-setting">Max Water Provinces</label>
<input id="max-water-province-setting" type="number" min="100" max="20000" value="8000" oninput="updateMaxWaterProvinces(this.value)">
<span class="tool-tip">EXPERIMENTAL FEATURE WARNING: Max water provinces is an upper limit, which may not be reached, to the number of generated water provinces. Reducing the maximumn number of water provinces requires a higher fill. Even then, you may see bad results (provinces that bleed too far or maps that don't have sufficient province coverage).</span>
</span>
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="max-fill-in-setting">Max Fill In Attempts</label>
<input id="max-fill-in-setting" type="number" min="1" max="10000" value="20" oninput="updateMaxFill(this.value)">
<span class="tool-tip">EXPERIMENTAL FEATURE WARNING: The province generation algorithm works by seeding cells across the map and then filling in from there until the seed cell's growth bumps into other cell growths. This is a general function to control how many times the algorithm will attempt to fill in before stopping. A higher number will result in more likely fill in of the map without resorting to default colors or bleeding the province across the map through a brute fill in process.</span>
</span>
</div>
</div>
<div id="ImportSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="import-divider-adjuster">Imported Divider</label>
<input type="number" id="import-divider-adjuster" min="1" max="5000" value="1" step="0.1">
<span class="tool-tip">When you import a heightmap, the whiteness of each cell will be divided by the divider to determine elevation of a cell.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="import-multiplier-adjuster">Imported Multiplier</label>
<input type="number" id="import-multiplier-adjuster" min="1" max="5000" value="1" step="0.1">
<span class="tool-tip">When you import a heightmap, the whiteness of each cell will be multiplied by the multiplier to determine elevation of a cell.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="heightmap-adjuster">Imported Adjuster</label>
<input type="number" id="heightmap-adjuster" min="-100" max="100" value="0" step="1" oninput="updateHeightmapAdjuster(this.value)">
<span class="tool-tip">When you import a heightmap, the adjuster (positive or negative) will be added to each cell.</span>
</span>
<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="overlay-adjuster">Overlay Opacity</label>
<input type="number" id="overlay-adjuster" min="0.0" max="1.0" value="0.5" step=".1" oninput="updateOverlayAdjuster(this.value)">
<span class="tool-tip">Adjust the opacity of an imported overlay.</span>
</span>
<!--<span class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="daynight-adjuster">Day/Night Cycle on Globe</label>
<select name="daynight-adjuster" id="daynight-adjuster">
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
<span class="tool-tip">Toggle whether the globe map mode shows a day/night cycle.</span>
</span>-->
<div class="file-upload-wrapper">
<button class="ck-button">Import Heightmap</button>
<input type="file" class="ck-button" id="imageUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import Overlay</button>
<input type="file" class="ck-button" id="overlayUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import Terrain Map</button>
<input type="file" class="ck-button" id="terrainUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import Empire Map</button>
<input type="file" class="ck-button" id="empireUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import Kingdom Map</button>
<input type="file" class="ck-button" id="kingdomUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import Duchy Map</button>
<input type="file" class="ck-button" id="duchyUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import County Map</button>
<input type="file" class="ck-button" id="countyUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import Province Map</button>
<input type="file" class="ck-button" id="provinceUpload" accept="image/*">
</div>
<div class="file-upload-wrapper">
<button class="ck-button">Import Overmap</button>
<input type="file" class="ck-button" id="overmapUpload" accept="image/*">
</div>
</div>
</div>
<div id="Titles" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="county-distance-threshold">County Distance Threshold</label>
<input type="number" id="county-distance-threshold" min="1" max="2000" value="80" step="1">
<span class="tool-tip">Sets the maximum allowable distance in pixels between provinces within the same county and capital province. A higher value allows for larger counties.</span>
</div>
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="duchy-distance-threshold">Duchy Distance Threshold</label>
<input type="number" id="duchy-distance-threshold" min="1" max="2000" value="100" step="1">
<span class="tool-tip">Sets the maximum allowable distance between counties within the same duchy and capital province. A higher value allows for larger duchies.</span>
</div>
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="kingdom-distance-threshold">Kingdom Distance Threshold</label>
<input type="number" id="kingdom-distance-threshold" min="1" max="2000" value="400" step="1">
<span class="tool-tip">Sets the maximum allowable distance between duchies within the same kingdom and capital province. A higher value allows for larger kingdoms.</span>
</div>
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="max-provinces-in-county">Max Provinces in a County</label>
<input type="number" id="max-provinces-in-county" min="1" max="100" value="6" step="1">
<span class="tool-tip">Sets the maximum number of provinces allowed in a county. A higher value allows for larger counties.</span>
</div>
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="max-counties-in-duchy">Max Counties in a Duchy</label>
<input type="number" id="max-counties-in-duchy" min="1" max="100" value="6" step="1">
<span class="tool-tip">Sets the maximum number of counties allowed in a duchy. A higher value allows for larger duchies.</span>
</div>
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="max-duchies-in-kingdom">Max Duchies in a Kingdom</label>
<input type="number" id="max-duchies-in-kingdom" min="1" max="100" value="6" step="1">
<span class="tool-tip">Sets the maximum number of duchies allowed in a kingdom. A higher value allows for larger kingdoms.</span>
</div>
<div class="flex-spread-evenly flex-align-vertically has-tool-tip">
<label for="max-kingdoms-in-empire">Max Kingdoms in an Empire</label>
<input type="number" id="max-kingdoms-in-empire" min="1" max="100" value="6" step="1">
<span class="tool-tip">Sets the maximum number of kingdoms allowed in an empire. A higher value allows for larger empires.</span>
</div>
<button class="ck-button" id="create-provinces">Generate Provinces</button>
</div>
</div>
<div id="CultureSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="ethnicities">Ethnicities</label>
<select name="ethnicities" id="ethnicities">
<option value="vanilla">Vanilla</option>
<option value="random">Random</option>
<option value="immersion">Immersion</option>
</select>
<span class="tool-tip">Choose how ethnicities (appearances) will be assigned to cultures. Immersion is mix of vanilla and random - using vanilla genetic templates but generate random ethnicities with limited gene shifts, ensuring balance and relatively high variety within ethnicity and between ethnicities </span>
</span>
</div>
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="palettes">Skin, Hair, and Eye Colors:</label>
<select name="palettes" id="palettes">
<option value="vanilla">Vanilla</option>
<option value="random">Random</option>
<option value="immersion">Immersion</option>
</select>
<span class="tool-tip">Vanilla will use the vanilla palettes. Random will randomly create new color palettes. Immersion will act as random but limit range resulting with ethnicities having own destingushable color pallete</span>
</span>
</div>
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="culture-per">Generate Culture per:</label>
<select name="culture-per" id="culture-per">
<option value="empire" selected="">Empire</option>
<option value="kingdom">Kingdom</option>
<option value="duchy">Duchy</option>
<option value="county">County</option>
</select>
<span class="tool-tip">Generate an initial seed culture for every title at this level. Diverging cultures will have the same heritage.</span>
</span>
</div>
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="diverge-at-kingdom">Diverge at Kingdom</label>
<select name="diverge-at-kingdom" id="diverge-at-kingdom" selected="">
<option value="false">No</option>
<option value="true" selected="">Yes</option>
</select>
<span class="tool-tip">If selected, kingdom cultures will be generated as children of a generated empire culture.</span>
</span>
</div>
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="diverge-at-duchy">Diverge at Duchy</label>
<select name="diverge-at-duchy" id="diverge-at-duchy">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
<span class="tool-tip">If selected, kingdom cultures will be generated as children of a generated or inherited kingdom culture.</span>
</span>
</div>
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="diverge-at-county">Diverge at County</label>
<select name="diverge-at-county" id="diverge-at-county">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
<span class="tool-tip">If selected, county cultures will be generated as children of a generated or inherited duchy culture.</span>
</span>
</div>
</div>
<div id="ReligionSettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="religion-family-level">Set Religious Families at:</label>
<select name="religion-family-level" id="religion-family-level">
<option value="empire">Empire Level</option>
<option value="kingdom">Kingdom Level</option>
<option value="duchy">Duchy Level</option>
<option value="county">County Level</option>
</select>
<span class="tool-tip">For every instance of a title of the specified level, an associated religion family will be generated.</span>
</span>
</div>
</div>
<div class="menu-section-content menu-hideable-area menu-setting">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="diverge-faith-level">Faiths Diverge at:</label>
<select name="diverge-faith-level" id="diverge-faith-level">
<option value="kingdom">Kingdom Level</option>
<option value="duchy">Duchy Level</option>
<option value="county">County Level</option>
</select>
<span class="tool-tip">Faiths will diverge from a religion family at every instance of an underlying title level (e.g., religion family at empire level with divergence at kingdom level and three kingdoms under empire will result in three generated faiths applied to all downstream counties).</span>
</span>
</div>
</div>
</div>
<div id="HistorySettings" class="tab-content" style="display: none;">
<div class="menu-section-content menu-hideable-area menu-setting">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="history-holder-level">Generate Holders:</label>
<select name="history-holder-level" id="history-holder-level">
<option value="random">Random</option>
<option value="empire">Empire Level</option>
<option value="kingdom">Kingdom Level</option>
<option value="duchy">Duchy Level</option>
<option value="county">County Level</option>
</select>
<span class="tool-tip">Set the level at which level and below titles will spawn holders in their history. For example, if set to empire level, all de jure empires and underlying titles will have a holder at game start. If set to random, it will vary within each de jure empire (e.g., only counties in one de jure empire may have holders but another empire will be fully formed at start).</span>
</span>
</div>
</div>
<div class="menu-section-content menu-hideable-area menu-setting">
<div class="menu-section-content menu-hideable-area menu-setting">
<span class="flex-spread-evenly flex-align-vertically menu-setting has-tool-tip">
<label for="era-level">Era:</label>
<select name="era-level" id="era-level">
<option value="tribal">Tribal</option>
<option value="earlyMedieval">Early Medieval</option>
<option value="highMedieval">High Medieval</option>
<option value="lateMedieval">Late Medieval</option>
</select>
<span class="tool-tip">Set the starting era for each culture.</span>
</span>
</div>
</div>
</div>
</div>
<!-- Map Modes -->
<div id="menus-map-modes" class="moveable-element ck-style-tray">
<div class="display-horizontal flex-spread-evenly">
<span>Map Modes</span>
<div>
<div id="anchor" class="icon-clickable icon-extra-small moveable-element-anchor"><img src="icons/ui/move.png"></div>
</div>
</div>
<div class="menu-cat flex-spread-evenly">
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="colorswatch" src="icons/terrainmap.png"><span class="tool-tip">Terrain Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="color-map-icon" src="icons/colormapicon.png"><span class="tool-tip">Pixel Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="3d-map-icon" src="icons/globe-icon.png"><span class="tool-tip">Globe</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="walkable-map-icon" src="icons/table-icon.png"><span class="tool-tip">Map Table</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="relief-map-icon" src="icons/relief-icon.png"><span class="tool-tip">Relief Map</span></div>
<!--<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="koppen-map-icon" src="icons/relief-icon.png"><span class="tool-tip">Koppen Map</span></div>-->
<!--<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="precipitation-map-icon" src="icons/relief-icon.png"><span class="tool-tip">Precipitation Map</span></div>-->
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="temperature-map-icon" src="icons/temperature-icon.png"><span class="tool-tip">Temperature Map</span></div>
<!--<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="currents-map-icon" src="icons/relief-icon.png"><span class="tool-tip">Currents Map</span></div>-->
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="river-map-icon" src="icons/river-icon.png"><span class="tool-tip">River Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="papyrus-map-icon" src="icons/papyrus-icon.png"><span class="tool-tip">Flat Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="heightmap-icon" src="icons/heightmap-icon.png"><span class="tool-tip">Heightmap</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="parchment-icon" src="icons/parchment-icon.png"><span class="tool-tip">Paper Map</span></div>
<!--Removing Province icon for now to try only hierarchical drawing out and test community response-->
<div style="display: none" class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="provmap-icon" src="icons/prov-icon.png"><span class="tool-tip">Province Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="watermap-icon" src="icons/watermap-icon.png"><span class="tool-tip">Water Province Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="culturemap-icon" src="icons/candlestick.png"><span class="tool-tip">Culture Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="faithmap-icon" src="icons/religion.png"><span class="tool-tip">Faith Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="roguelike-icon" src="icons/roguelike-icon.png"><span class="tool-tip">Roguelike Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="titlesmap-icon" src="icons/titles-icon.png"><span class="tool-tip">Title Map</span></div>
<div class="icon-clickable icon-small-round display-horizontal has-tool-tip"><img id="overmap-icon" src="icons/titles-icon.png"><span class="tool-tip">Overmap</span></div>
</div>
</div>
<div id="brush" style="--brush-size: 30px; display: none;"></div>
<canvas id="texture-canvas" width="16" height="16"></canvas>
<canvas id="gradientCanvas"></canvas>
<div id="province-menu">
<div id="top-bar-province-menu">Edit Provinces</div>
<div id="top-bar-edits-menu">
<p>Empire Loc.: <input class="province-menu-input" id="empireLocBox"></p>
<p>Kingdom Loc.: <input class="province-menu-input" id="kingdomLocBox"></p>
<p>Duchy Loc.: <input class="province-menu-input" id="duchyLocBox"></p>
<p>County Loc.: <input class="province-menu-input" id="countyLocBox"></p>
<p>Province Loc.: <input id="locbox"></p>
<p>Province Name: <input id="namebox"></p>
<p>Faith Loc: <input class="province-menu-input" id="faithbox"></p>
<p>Culture Loc:<input class="province-menu-input" id="culturebox"></p>
<label><input type="checkbox" id="oceanCheckbox"> Ocean</label><br>
<label><input type="checkbox" id="lakeCheckbox"> Lake</label><br>
<label><input type="checkbox" id="riverCheckbox"> River</label><br>
<label><input type="checkbox" id="impassableCheckbox"> Impassable</label><br>
<label><input type="checkbox" id="impassableSeaCheckbox"> Impassable Sea</label><br>
<p>Def. ID: <span id="defid"></span></p>
<p>Red: <span id="r"></span></p>
<p>Green: <span id="g"></span></p>
<p>Blue: <span id="b"></span></p>
</div>
<div class="sbtn prov-btn" id="full-province-map">Draw Full Province Map</div>
<div class="sbtn prov-btn" id="labeled-province-map">Draw Labeled Province Map</div>
<div class="sbtn prov-btn" id="only-land-map">Draw Only Land Provinces Map</div>
<div class="sbtn prov-btn" id="only-water-map">Draw Only Water Provinces Map</div>
<div class="sbtn prov-btn" id="county-map">Draw County Map</div>
<div class="sbtn prov-btn" id="duchy-map">Draw Duchy Map</div>
<div class="sbtn prov-btn" id="kingdom-map">Draw Kingdom Map</div>
<div class="sbtn prov-btn" id="empire-map">Draw Empire Map</div>
<div class="sbtn" id="province-edits-done-proceed">Proceed to File Saving</div>
</div>
<div id="download-links"></div> <!--necessary for now for auto-download, but can change this to remove-->
<img id="rivertemp" src="images/river_templates/rivertemp.png" style="display: none">
<img id="river-temp-trans" src="images/river_templates/riverTransTemp.png" style="display: none">
</div>
<div id="testing-div">
</div>
<div id="ink-images">
<img id="tree1" src="bw/tree1.png">
<img id="tree2" src="bw/tree2.png">
<img id="tree3" src="bw/tree2.png">
<img id="tree4" src="bw/tree2.png">
<img id="marsh1" src="bw/marsh1.png">
<img id="hills1" src="bw/hills1.png">
<img id="hills2" src="bw/hills2.png">
<img id="hills3" src="bw/hills3.png">
<img id="hills4" src="bw/hills4.png">
<img id="mountain1" src="bw/mountain1.png">
<img id="mountain2" src="bw/mountain2.png">
<img id="mountain3" src="bw/mountain3.png">
<img id="mountain4" src="bw/mountain4.png">
<img id="minisprites" src="experimental/miniworldsprites.png">
</div>
<div id="paintbrush-indicator">
</div>
<div id="landing-screen" style="display: block;">
<div id="landing-info">
<div id="landing-generate">
<h1 class="landing-header">Procedural Map Generator</h1>
<p class="main-landing-text">A <a href="https://discord.gg/JwxuuK7HrV">TUTORIAL</a> is available on the discord. This project is in early Alpha - please adjust your expectations accordingly. Your feedback and support are invaluable as we continue to develop and refine this tool.</p><br><br>
<button class="ck-button" id="start-generator-button">Generate a New World</button><br>
</div>
<div id="main-landing">
<div id="landing-greetings">
<p class="main-landing-heading">Current State of the Generator</p>
<p class="main-landing-text">1. Basic Procedural Map Generation: The generator creates the basic files you need to get a map up and running. This is our first iteration, focusing on creating a functional and stable base for future enhancements.</p>
<p class="main-landing-text">2. Limited User Interface: Interact with a simplified UI designed for ease of use. While the design is minimalist, it provides all necessary controls to begin experimenting with map generation.</p>
<p class="main-landing-text">3. Rough Edges: Both the generator and generated maps have many rough edges and visible seams.
</p>
<p class="main-landing-text">4. Bugs and Errors: Don't be surprised if you encounter bugs and errors in the generator or in game. Help us by reporting those bugs to the discord or on Github. For example, we had greatly reduced the error log before Legends of the Dead was released, but we have not had time to address the growth following release.
</p>
<p class="main-landing-text">5. Random Generation: Our goal is to create a generator that allows deep generation of history and lore to provide something more than a map to play on and randomly generated cultures and titles to play with. We've made great progress on this goal recently, but those developments are not camera-ready for this initial Alpha release. Alpha 0.1 maintains the mostly random distributions you might have seen in previous map releases.</p>
<p class="main-landing-heading">How You Can Help</p>
<p class="main-landing-text">We invite you to join the community on <a href="https://discord.gg/eemRxbCUX3">Discord</a>, share suggestions, report bugs, and contribute to development either through Discord or <a href="https://github.com/ck2rpg/ck2rpg.github.io">Github</a>.</p>
<p class="main-landing-text">Thank you for being a part of this early stage of the Procedural Map Generator. We are committed to creating a robust tool that enhances your Crusader Kings 3 experience. Stay tuned for updates.</p>
<p class="main-landing-text">Happy mapping!</p>
<img class="avatar" src="icons/ck2rpg.png">
<p class="main-landing-text">-ck2rpg, 6/29/24</p>
</div>
<div id="landing-release-notes">
<div id="landing-release-notes-details">
<p class="text-intro">Alpha 0.29.1 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Bug Fix: Fixed bug where terrain import was not handling plains and desert mountains correctly.</li>
</ul>
<p class="text-intro">Alpha 0.29.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: Save your current actively displayed map mode as an image file by clicking the green button in the top left corner (placeholder icon - I'll find something better).</li>
<li>Feature: Added ability to import terrain map. Importable terrain colors are those that match the CK3 terrain map. You can see them in this reddit post from a few years back: https://www.reddit.com/r/CrusaderKings/comments/ium003/crusader_kings_3_terrain_map/</li>
<li>Feature: You now can change the opacity of an imported overlay under the import tab.</li>
<li>Feature: Added a rudimentary day/night cycle to globe map. I will make this toggleable soon but am releasing to test the feature.</li>
<li>Goback: I added back in the 8092x4096 resolution. BIG FLASHING WARNING SIGN THAT THIS WILL CAUSE OUT OF MEMORY CRASH if you try to generate the CK3 maps, but some people wanted it anyways for other purposes.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.28.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: Added ability to import any map image that can then be explored in the globe or map table modes.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.27.1 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Hot fix: fixed issue where selection of map table mode or globe would prevent the other from loading. Now you can switch back and forth without error.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.27.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: Map table map mode added. Zoom in and out and fly all around your map.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.26.1 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Bug fix: Fixed bug preventing paper maps from displaying to globe.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.26.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: New Map Mode: Globe. Spinning and spinnable globe of your map (press ESC to exit).</li>
<li>Feature: New Map Mode: Temperature map.</li>
<li>Development Update: I have completed wind mapping and the Koppen formulas, but I am still working on precipitation. Both the code and functionality on that front reman a mess and don't produce great results. I'll hold off on opening up those other options until precipitation is complete. After that, I'll move on to remapping terrain.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.25.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: I added a brush indicator to top left of screen.</li>
<li>CRITICAL BUG FIX: I fixed the faith brush (it was generating massive amounts of faiths on a single click due to a faulty check on whether a faith color key existed).</li>
<li>Bug Fix: I removed the resolution size of 8,192x4,096 from the generator for the time being because no one has been able to generate a map of this resolution without a browser memory crash. You still can generate a 8,192x4,096 map through setting the map size and using upscaling of lower resolutions. While I understand that people may want to try it, may aim here is to prevent the frustration of people working on a map that has no chance of generating.</li>
<li>Fix: I removed some extraneous console logs that slipped through from earlier testing.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.24.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: Discord user ΔBSTRΔCT BLΔCK contributed an "Immersion" option for ethnicity generation with more constrained genetics and palettes.</li>
<li>Feature: Discord users ΔBSTRΔCT BLΔCK and hunter00001 contributed to faith icon generation by adding tons of new icons.</li>
<li>Change: I added a black outline to the paper map style if the resolution is above minimal. I'm testing some fantasy map styles and using this initial test change as a base.</li>
<li>Musings: Some background on the current approach to language generation here: https://youtu.be/W_LhOUYRLoM. I know there is much more work to do on this front but wanted to give background on status and current implementation.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.23.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: Added a relief map mode</li>
<li>Feature: Improved erosion brush to avoid deposition because it made function useless and far too messy.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.22.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: Paper map mode with mini-icons at 512x256 resolution</li>
<li>Feature: Added a random reroller button that repeatedly spits out a new map every second for testing purposes.</li>
<li>Meta: Renamed from "CK3 Procedural Map Generator" to just "Procedural Map Generator"</li>
<li>Bug fix: Fixed a problem where erosion brush applying off map would cause errors.</li>
<li></li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.21.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Update: Alpha 0.21.0 is a work in progress release of the title importer. I am releasing it in this WIP form because my time this weekend is limited, and user testing would be helpful. In its current form you can upload your title hierarchy. Your image MUST be the same size as the generator resolution, or you will have blurring and bad results. For an uploaded image, black is water, and any other color is a title. Currently, you MUST upload every level of the hierarchy and must do so in order (empire -> kingdom -> duchy -> county -> province). When you upload the empire image, it will reset all underlying land to sea level. and water to 0.</li>
<li>Performance: I made some properties of map cells redundant through refactoring and culled those properties from map cells. I am hoping this will improve performance and am on the hunt for more improvements.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.20.1 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Bug Fix: the right side editor for titles, cultures, and faiths now scrolls to avoid entries overflowing into empty white space.</li>
<li>Bug Fix: The map options menu on left side of screen is now hidden after province generation.</li>
<li>Bug Fix: the right-side title, culture, and faith editing menu is now properly hidden after you proceed to file saving.</li>
<li>Known Issue: The update results in two editor menus after you generate provinces. The UI for these needs to be combined. Additionally, there should be a way to navigate and edit heritage/culture and religion/faith after generating provinces, just as there is for titles. It is on my list.</li>
<br>
<li>Note: If you have not updated yet, I strongly recommend switching to the Alpha 0.20.0 template and checking out the new Youtube tutorial. While I plan to make changes to the older templates for backwards compatibility, it is not high on my list. While in Alpha, I am less concerned about breaking changes because each generation is a one-off that can be done with a new template.</li>
<li>Note 2: If you have previously generated a map, I do plan to release a list of things you can do to bring your map up to RTP, but it likely will be this weekend.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.20.0 Release Change Log</p>
<p class="main-landing-text">
</p><ul class="change-log-list">
<li>Feature: Added Culture and Faith map modes to the map generation screen, which allows you to draw cultures and faiths onto the map. The designated territories of the cultures and faiths will encompass any generated province locators that fall within that territory.</li>
<li>Feature: Added culture and faith editors to the new drawing mode. You will see this new menu on the right side of your screen. When you click on a color swatch for a culture or faith, it will switch to that culture or faith's color. When you click on the name of the culture or faith, it will bring up an editor.</li>
<li>Feature: Added title drawing mode and editor.</li>
<li>Feature: When drawing a title, the generator will look to your culture and faith generation settings. In other words, if a culture is supposed to be assigned per kingdom, each kingdom you draw will automatically spawn a culture and cultural territory. You can change these options dynamically between drawing different elements (e.g., move from culture per kingdom to culture per county for an area). Any spawned cultures will then be visible on the culture map mode.</li>
<li>Feature: Added a "Roguelike" map mode on the map generation screen.</li>
<li>Feature: Added a button to save your generator settings as a text file that can later be loaded into the generator.</li>
<li>Feature: Added an image overlay import to allow tracing from an image.</li>
<li>Feature: The generator will generate a single placeholder landless title and character to avoid error log spam.</li>
<li>Bug Fix: Users identified a bug with random holder selection, which resulted in a random holder level being selected across the board instead of for each landed title hierarchy. This bug has been fixed. Now, each a random holder level is selected for each title hierarchy (e.g., all titles within X de jure empire will have holders generated at duchy level and no higher).</li>
<li>Bug Fix: Removed outdated relic magnify button from menu.</li>
<li>Bug fix: Fixed flavorization bug causing "Caliph of" nothing localization for princes.</li>
</ul>
<p></p><br>
<p class="text-intro">Alpha 0.19.0 Release</p>
<p class="main-landing-text">Ethnicities and Palettes</p>
<p class="main-landing-heading">Alpha 0.19.0 Release</p>
<p class="main-landing-text">
Feature: Reimplemented random skin, eye, and hair color generation, which was removed after Alpha 0.1, as an option under the culture tab. By default, vanilla ethnicities will be used unless you select random.<br>
Bug Fix: The random ethnicity option was not working due to some missing checks. This has been fixed.<br>
</p><br>
<p class="text-intro">Alpha 0.18.1 Release</p>
<p class="main-landing-text">Bug Fix: empires</p>
<p class="main-landing-heading">Alpha 0.18.1 Release</p>
<p class="main-landing-text">
Bug fix: Two missing pieces of code were preventing empires from generating either when "Random" holder level was selected or "Empire" level was selected. In both cases, at most kingdoms would be generated. This bug has been corrected, and empires should now generate as expected in both cases.<br>
</p><br>
<p class="text-intro">Alpha 0.18.0 Release</p>
<p class="main-landing-text">Initial Noise Solution</p>
<p class="main-landing-heading">Alpha 0.18.0 Release</p>
<p class="main-landing-text">
Template Change: I uploaded a noise-based map to the <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3320451649">workshop</a> and <a href="https://mods.paradoxplaza.com/mods/88801/Any">Paradox Mods</a>. I suggest using it or the (Not) Afria map for your new template. This avoids the bug, mentioned in previous updates, causing larger than 4096x2048 maps to crash for some users.
Feature: Added a "Random Map" button to the top right of the generator screen. When you click on it, it will use simplex noise to produce a map. The current approach is based on hotspots and noise. Customization options will be added in the future.<br>
Feature: When you change resolutions, instead of running a spread process to generate a new map, it will runt he random map function discussed above. This will address the spreading lines with only ocean that you often see on resolution change.<br>
Note: The generated "Random Maps" currently do not play nice with the "Spread" process. I suggest using other editing functions.<br>
Note: The generated "Random Map" often contains very small islands that do not end up getting land provinced. I'm fine with this because I just see those islands as uninhabitable. If you don't want this, you may need to drop the islands by hand for now<br>
Bug fix: Removed excessive console logs related to languages from earlier testing.<br>
</p><br>
<p class="text-intro">Alpha 0.17.4 Release</p>
<p class="main-landing-text">Fixed dynasty localization bug</p>
<p class="main-landing-heading">0.17.4 Change Log</p>
<p class="main-landing-text">
A recent change was causing dynasties to not have localization. I fixed it.
</p><br>
<p class="text-intro">Alpha 0.17.3 Release</p>
<p class="main-landing-text">Removed map table from template</p>
<p class="main-landing-heading">0.17.3 Change Log</p>
<p class="main-landing-text">
I removed the map table from the template because it is causing clipping errors. I also want to see if it fixes the GPU error/crash that four users have encountered and are discussing in the ask-for-tool-help channel on discord.
</p><br>
<p class="text-intro">Alpha 0.17.2 Release</p>
<p class="main-landing-text">Additional CTDs fix</p>
<p class="main-landing-heading">0.17.2 Change Log</p>
<p class="main-landing-text">
Addresses a bug in Alpha 0.17.1 that was causing default.map to generate with a duplicate province and a missing placeholder sea province (where the placeholder was necessary). I believe this change will finally resolve the CTD bug, "Province '%i' has no associated title in common/landed_titles. FIX THIS. Game will probably crash if you don't" for those who are experiencing it on lower resolution generations.
</p><br>
<p class="text-intro">Alpha 0.17.1 Release</p>
<p class="main-landing-text">Additional CTDs fix</p>
<p class="main-landing-heading">0.17.1 Change Log</p>
<p class="main-landing-text">
Changes to the way placeholders were handled has been causing the placeholder color to be seen on provinces.png but not assigned in definitions file or Default.map. As a result, a widely inconsistent CTD bug has been causing headaches for several users. I revised the placeholder code to ensure that it correctly determined whether a placeholder was needed and added it if it was to definitions and default.map. I have tested it on 512x256 resolution and 8,192x4,096 map size, and it worked without CTD. Please let me know if your CTDs continue.
</p><br>
<p class="text-intro">Alpha 0.17.0 Release</p>
<p class="main-landing-text">New map template</p>
<p class="main-landing-heading">0.17.0 Change Log</p>
<p class="main-landing-text">
Feature: A new map template is available <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3315769954">here</a>. From initial tests, it appears to greatly reduce the size of the error log. It also brings the map table back.<br>
</p><br>
<p class="text-intro">Alpha 0.16.4 Release</p>
<p class="main-landing-text">Fixed ocean locators</p>
<p class="main-landing-heading">0.16.4 Change Log</p>
<p class="main-landing-text">
Bug fix: Ocean locators now generate correctly and are properly moved by script.<br>
</p><br>
<p class="text-intro">Alpha 0.16.3 Release</p>
<p class="main-landing-text">Fixed CTD bug and other bug fixes.</p>
<p class="main-landing-heading">0.16.3 Change Log</p>
<p class="main-landing-text">
Bug fix: After probably 15 hours of bug hunting a silent CTD error, I found the issue. A recent change to the Gimp postprocessing script removed some code necessary for proper transfer of object masks (left one out). The map editor would try to make it work but mostly just CTD without noting an error. Finally, after hundreds of attempts at fixing other possible issues, the map editor was able to spit into the log that one of the masks was too large. I tracked it back to the python script.<br>
Bug fix: I removed many vowels and consonants from the language generator because they were throwing errors in the log when used as keys. I need to rework that aspect of the generation to use generic keys and then reintroduce.<br>
Bug fix: With the gimp script fix, I also was able to implement my previous solution to the blurring problem. Now, your masks will not blur if you have same size/resolution map. Heightmap will have minor blurring applied to avoid massive drops near water.<br>
</p><br>
<p class="text-intro">Alpha 0.16.2 Release</p>
<p class="main-landing-text">Allow low res maps</p>
<p class="main-landing-heading">0.16.2 Change Log</p>
<p class="main-landing-text">
River maps now properly generate for (1) maps with the same map size and resolution and (2) maps with a map size of 8,192x4,096 and resolution of 512x256. I will be able to add proper rivers for additional map/resolution sizes, but I have to draw templates for any maps that are not equal to their resolution, which is time consuming and not my first priority.
</p><br>
<p class="text-intro">Alpha 0.16.1 Release</p>
<p class="main-landing-text">Hot fix to gimp script</p>
<p class="main-landing-heading">0.16.1 Change Log</p>
<p class="main-landing-text">
Bug fix: Changes to the Gimp postprocessing script in 0.16.0 were causing crashes to desktop. I reverted to the old script as a hot fix while I work on a fix. In the meantime, the newly reinstated river maps will not line up exactly with coasts. This should be a mostly easy fix to some formatting and logic issues in the revised gimp script.
</p><br>
<p class="text-intro">Alpha 0.16.0 Release</p>
<p class="main-landing-text">Language Fixes</p>
<p class="main-landing-heading">0.16.0 Change Log</p>
<p class="main-landing-text">
Feature: River generation now works for all map sizes.<br>
Feature: Map and resolution Size now must be paired. This is necessary for the river fix.<br>
Feature: Wetlands and farmlands generation are now based on a noise-based approach that looks at elevation, chunk size, and scattershot settings. These settings can be toggled under the "Features" tab. I did not add floodplains back in with this update because they are too persnickety and the masking always looks awful.<br>
Geography fix: Taiga no longer shows up as an arctic ever-snow terrain mask. Instead, you will see much more variation in taiga. The arctic/snow mono-terrain has been removed but might be added back in the future as impassable ice caps or just faaaaaar north low development areas? We'll see what the community wants on that front.<br>
Bug fix: Fixed a bug that was causing maps of less than vanilla map size to have unassigned terrain mask areas (areas showing as pink/transparent in map editor and black in game). One aspect of the fix requires downloading an additional file called settings.txt, which the revised python script now reads. You MUST use the new python postprocessing script on Github, which has been updated with it.<br>
Bug fix: Fixed inconsistent references to sea level in a few places in code, which was causing difficult to track terrain bugs.<br>
Bug fix: Dynasty names now use the language of the culture instead of the old trigram approach.<br>
Bug fix: An earlier performance improvement changed the way that the low res map is mapped to the map size. This introduced an issue with the timing of cell terrain mask assignment that was causing abnormal assignments. I fixed this issue.<br>
Bug fix: A typo of a misplaced equals sign was causing ocean provinces to not have their placeholder "sea" terrain assigned properly, which caused issues in tracking oceans. This typo has been corrected, and oceans are now correctly tracked.<br>
Bug fix: I previously removed file saving for several terrain masks that the generator does not use but accidentally removed some that it does or would soon again. "Where have all the farmlands and wetlands gone?" you might ask... They're back!<br>
</p><br>
<p class="text-intro">Alpha 0.15.1 Release</p>
<p class="main-landing-text">Language Fixes</p>
<p class="main-landing-heading">0.15.1 Change Log</p>
<p class="main-landing-text">
Bug fix: 0.15.0 was not catching non-english vowels and consonants in language generator. Added these in. Also added an arabic seed to the mix.
</p><br>
<p class="text-intro">Alpha 0.15.0 Release</p>
<p class="main-landing-text">Language and Perfromance updates</p>
<p class="main-landing-heading">0.15.0 Change Log</p>
<p class="main-landing-text">
Feature: Rebuilt language generation/naming from scratch. The new approach moves away from phonetics and syllable-based generation, which the old approach used, to probabilistic constraints based on seed languages. Essentially, a seed text is parsed for all possible initial, middle, and final consonants, vowels, and clusters. Constraints are then probabilistically applied to reduce those possibilities further. For example, an X probability that the letter "z" will not exist in this language. If met, "z" and every cluster including "z" will be removed from the language possibilities. I also focused on legibility to English speakers. The results, I think, are better than the old approach. I'm still fine-tuning but look forward to your thoughts on the changes.<br>
Performance Improvement: Took steps to free up memory before image downloads. Still working on the too-slow image downloads issue and troubleshooting/considering options.<br>
</p><br>
<p class="text-intro">Alpha 0.14.0 Release</p>
<p class="main-landing-text">Resolution Performance</p>
<p class="main-landing-heading">0.14.0 Change Log</p>
<p class="main-landing-text">
Performance Improvement: Changing between resolutions should be much faster.<br>
Performance Improvement: Out of memory crashes should be less common for higher resolution. For example, I now generate 8,192x4,096 map size and 8,192x4,096 resolution without problem.<br>
Known Issue: Image downloading remains far too slow. For 8,192x4,096 resolution, it is unbearably slow and likely makes it unworkable even if the memory crashes are resolved. I am working on potential solutions.
</p><br>
<p class="text-intro">Alpha 0.13.0 Release</p>
<p class="main-landing-text">Development, Settable Eras, Innovations</p>
<p class="main-landing-heading">0.13.0 Change Log</p>
<p class="main-landing-text">
Alpha 0.13.0 introduces the following new features and bug fixes:
</p><br>
<ul class="bulleted">
<li>Set the era for each culture under the history tab. For now, there is no way to vary between cultures, but I am brainstorming ideas on that front.</li>
<li>For now, innovations are blanket assigned based on era. Due to limitations in the way files are named, these are added to the cultures through an on action instead of through generated history files.</li>
<li>Development levels are procedurally generated as a factor of the average favorability of a county's provinces and the set era. Favorability is based on terrain, resource access, adjacency to water, elevation, and certain favorability factors within a five province zone of that province.</li>
<li>Bug fix: Removed certain console logs that were used for testing but slowing down generation.</li>
<li>Bug hunt: On a few occasions, generated files have stalled the load for my map editor. I believe the issue is related to generating too many cultures (e.g., setting cultural divergence down to the county level). If you have experienced this or seen issues, please let me know. It is a difficult bug to track down because I have to run a new generation and get to map editor stage each time.</li>
<li>Unimplemented in this round: I am still working on more meaningful tradition assignment and didn't want folks to think I forgot about it in this update. Probably next update.</li>
</ul>
<p class="text-intro">Alpha 0.12.0 Release</p>
<p class="main-landing-text">Title History Variation</p>
<p class="main-landing-heading">0.12.0 Change Log</p>
<p class="main-landing-text">
I introduced a new History Tab, allowing users to customize the level at which title holders are generated within the game's history. This feature determines the occupancy of titles at the game's start.
</p><br>
<ul class="bulleted">
<li>Random Level: The generator will randomly determine the level for title generation within each de jure empire. In one empire, titles may be fragmented down to the county level, while in another, the empire might remain intact at the game's start.</li>
<li>Empire Level: Selecting this level ensures that each de jure empire, along with all subordinate titles, will have generated holders at the game's start.</li>
<li>Kingdom Level: Choosing this level ensures that each de jure kingdom, along with its subordinate titles, will have generated holders.</li>
<li>Duchy Level: This option generates holders for each de jure duchy and all subordinate titles.</li>
<li>County Level: Selecting this option results in a completely fragmented world, with titles broken down to the county level.</li>
</ul>
<p class="text-intro">Alpha 0.11.0 Release</p>
<p class="main-landing-text">Religion and Culture options</p>
<p class="main-landing-heading">0.11.0 Change Log</p>
<p class="main-landing-text">
UI: Added culture and religion tabs to the menu.<br><br>
Feature: Added an option to decide the title tier at which cultural heritages are generated. One culture will be generated at each title of that tier with a separate cultural heritage.<br><br>
Feature: Added an option to diverge from the selected heritage/culture level. For example, a heritage level of Empire and divergence level of duchy would mean that each empire would have one culture and an associated heritage and each duchy within the empire would have a culture of that heritage.<br><br>
Feature: Changed keys from a random assortment of letters to a random combination of a random adjective and random other word (usually a noun) mashed together.<br><br>
QoL: Changed the brush elevation limit from a single limit to an upper and lower limit. Now, you don't have to switch limits back and forth anymore for the raise and lower elevation brushes.<br><br>
Bug Fix: Water province drawing is now fixed.<br><br>
Bug Fix: Removed unused error logging code from the now defunct undo-redo function.<br><br>
</p>
<p class="text-intro">Alpha 0.10.0 Release</p>
<p class="main-landing-text">UI Updates</p>
<p class="main-landing-heading">0.10.0 Change Log</p>
<p class="main-landing-text">
In anticipation of greatly expanding your ability to affect settings, generator internals, and lore and history generation, converted the menu from drop-downs to tabs.<br><br>
</p>
<p class="text-intro">Alpha 0.9.2 Release</p>
<p class="main-landing-text">Settable max titles within title</p>
<p class="main-landing-heading">0.9.2 Change Log</p>
<p class="main-landing-text">
In response to 0.9.0, some indicated a preference for the ability to change the maximum number of titles within a title. This release implements that feature.<br>
</p>
<p class="text-intro">Alpha 0.9.1 Release</p>
<p class="main-landing-text">Hot fix</p>
<p class="main-landing-heading">0.9.1 Change Log</p>
<p class="main-landing-text">
Hot fix for faulty variable issue in 0.9.0<br>
</p>
<p class="text-intro">Alpha 0.9.0 Release</p>
<p class="main-landing-text">Improvements to landed title generation</p>
<p class="main-landing-heading">0.9.0 Change Log</p>
<p class="main-landing-text">
-Feature: Added settable distance limiters to landed title generation. Essentially, if a title's provinces could be merged into a landed title but one of the provinces is beyond the distance threshold, the title will not merge. This allows you some control over landed title spread. Please test this feature and provide feedback. I've run several tests with the defaults that have been set, and the results are much better. I'm interested to see your results as you use and modify those settings.<br>
-Bug fix: Removed undo/redo button for now because it was too buggy and crashy to be of any real use.<br>
-Code cleanup: Several code clean ups of unused code.<br>
-Poll: if you would appreciate the ability to change the max limit of how many provinces in a county, counties in a duchy, duchies in a kingdom, etc., please let me know over in the suggestions channel on discord. I will add this feature if there is enough interest.<br>
</p>
<p class="text-intro">Alpha 0.8.1 Release</p>
<p class="main-landing-text">Default color change for province drawing</p>
<p class="main-landing-heading">0.8.1 Change Log</p>
<p class="main-landing-text">
-Bug fix: Changed default color for province drawing selection to red to avoid people accidentally painting a province pure black (you can't paint province black in provinces.png).<br>
</p>
<p class="text-intro">Alpha 0.8.0 Release</p>
<p class="main-landing-text">Zoom and Erosion Brush</p>
<p class="main-landing-heading">0.8.0 Change Log</p>
<p class="main-landing-text">
-Feature: Added ability to zoom in and out on a scrollable canvas or reset back to a canvas stretched to window size.<br>
-Feature: Added a rudimentary erosion brush.<br>
</p>
<p class="text-intro">Alpha 0.7.0 Release</p>
<p class="main-landing-text">PakaruMar's UI Updates</p>
<p class="main-landing-heading">0.7.0 Change Log</p>
<p class="main-landing-text">
-Note: A special thank you to Discord user PakaruMar for providing the following UI updates:<br>
-UI: Improved landing page.<br>
-UI: Collapsible menu sections<br>
-UI: A map mode menu<br>
-UI: "Generating World" loading spinner<br>
-UI: New icons<br>
-UI: Code cleanup<br>
-UI: Overall improvements to look and feel<br>
</p>
<p class="text-intro">Alpha 0.6.0 Release</p>
<p class="main-landing-text">Hot fix for hybrid culture names. Limiter for elevation brushes. Province eraser.</p>
<p class="main-landing-heading">0.6.0 Change Log</p>
<p class="main-landing-text">
-Feature: A new "Limit" setting allows you to set a limit over which or under which the raise elevation and lower elevation brushes will not go. For example, a limit of 40 would cause the raise elevation brush to raise AT MOST to 40 elevation. Any cells that are above or under the limit remain unaffected. This will allow you to make more targeted changes (e.g., adding plains to a coastline without affecting the coastline)<br>
-Feature: Added a province eraser brush that will erase any drawn province overrides.<br>
-Fix: Fixed bug where hybrid culture name localization was not being generated.<br>
-Fix: Reduced size of overly large icon file.<br>
</p>
<p class="text-intro">Alpha 0.5.2 Release</p>
<p class="main-landing-text">Full map draw performance improvements</p>
<p class="main-landing-heading">0.5.2 Change Log</p>
<p class="main-landing-text">
-Fix: Improved full map drawing performance by using image data in lieu of pixel by pixel rects.<br>
</p>
<p class="text-intro">Alpha 0.5.1 Release</p>
<p class="main-landing-text">Brush editor performance improvements</p>
<p class="main-landing-heading">0.5.1 Change Log</p>
<p class="main-landing-text">
-Fix: Massively improved the speed and latency of the brush editor for elevation, province, and terrain editing. Night and day difference.<br>
</p>
<p class="text-intro">Alpha 0.5.0 Release</p>
<p class="main-landing-text">Generator and quality of life mprovements</p>
<p class="main-landing-heading">0.5.0 Change Log</p>
<p class="main-landing-text">
-Feature: Added ability to normalize your heightmap by editing the generator-to-heightmap divisor directly from current default of 2. The higher the divisor, the less stark your heightmap and closer your elevation changes. This also should address the jagged terrain problem for smaller maps.<br>
-Feature: Added ability to change the generator's lower elevation limits for hills, mountains, and mountain snow lines.<br>
-Feature: Changed title key naming schema to use the RGB of the province (or capital province for higher tiers) for easier editing.<br>
</p>
<p class="text-intro">Alpha 0.4.0 Release</p>
<p class="main-landing-text">Minor quality of life changes</p>
<p class="main-landing-heading">0.4.0 Change Log</p>
<p class="main-landing-text">
-Feature: Added an option to override zoomed in terrain with flat map through shader generation (thanks to terrapass at mod coop for the inspiration through an unrelated question)<br>
-Feature: Added an equator line to the color map.<br>
-Feature: Added ability to modify broad climate zones. You set the upper limit of their distance from equator, and the zones run sequentially up to their upper distance.<br>
-TUTORIAL UPDATE: I added a new part to step 14 to clarify that you also need to <em>REPACK THE HEIGHTMAP</em>!
-Bug Fix: The last update created a problem where heighmaps were showing in their original state on import. I changed it to draw the heightmap in the generator state.<br>
-Bug Fix: Fixed bug where brush power was initially set incorrectly and did not match the slider.<br>
-Known remaining problem from last update: The farther a map size and resolution gets away from vanilla sizes, the more jagged everything becomes. This is due to an error in the blur process in post-processing. I am working on it, but it is not solved yet.<br>
</p>
<p class="text-intro">Alpha 0.3.0 Release</p>
<p class="main-landing-text">Introduced generator resolution!</p>
<p class="main-landing-heading">0.3.0 Change Log</p>
<p class="main-landing-text">
-Feature: Select from multiple generator resolutions. Fair warning that higher resolutions are resource intensive and can lead to out of memory errors. I am working on solutions to this. I'm currently able to run a 4,096x2048 res 8192x4096 map with 32GB ram.<br>
-Feature: Added the ability to modify heightmap imports by multiplying, dividing, or adding to base import on import.<br>
-Bug Fix: Fixed brush indicator bug. Brush indicator now matches even after scaling.<br>
-Bug Fix: Tooltips now work correctly and appear directly above tooltipped features.<br>
-Bug Fix: Replaced several sliders with number inputs because the sliders were too fidgety.<br>
</p>
<p class="text-intro">Alpha 0.2.0 Release</p>
<p class="main-landing-text">Map Sizes!</p>
<p class="main-landing-heading">0.2.0 Change Log</p>
<p class="main-landing-text">
-Feature: Select from 8192x4096, 4096x2048, 2048x1024, and 1024x512 map sizes.<br>
</p>
<p class="text-intro">Alpha 0.1.5 Release</p>
<p class="main-landing-text">Alpha 0.1.5 includes a few bug fixes and backend changes.</p>
<p class="main-landing-heading">0.1.5 Change Log</p>
<p class="main-landing-text">
-Bug fix: Dragging the map editor menu no longer results in a clear background over parts of it.<br>
-Bug fix: I neglected to add UI for previously implemented ability to change province limit, water province limit, and fill in. Added UI here. This feature should be considred unstable and in early user testing. If you reduce the maximum number of provinces, you need to increase the fill limit to give the generator more attempts to correctly fill in larger provinces. Unfortunately, increasing the fill in attempts will reduce the speed of generation fairly significantly.<br>
-Experimental: Added a couple of experimental image generators that are not currently used in the game. Building up to future paper/flat map generation options (e.g., roguelike, pixel art, parchment, etc.).<br>
</p>
<p class="text-intro">Alpha 0.1.4 Release</p>
<p class="main-landing-text">Alpha 0.1.4 removes the need to edit mapobjectdata or rivers.png by resetting the /map_object_data/generated file and processing the rivers.png image with indexing through the Gimp script.
</p><p class="main-landing-heading">0.1.4 Change Log</p>
<p class="main-landing-text">
-Feature: Generates additional files for the map_object_data/generated folder.
-Feature: Gimp script revised to automatically process the rivers.png file and reset the map_object_data/generated folder.
</p>
<p class="text-intro">Alpha 0.1.3 Release</p>
<p class="main-landing-text">Alpha 0.1.3 introduces province painting and editing.
</p><p class="main-landing-heading">0.1.3 Change Log</p>
<p class="main-landing-text">
-Feature: Paint a land or water province on the map. During province generation, if it has room to grow, it will.<br>
-Feature: Rewrite localization for empires, kingdoms, duchies, counties, provinces, faiths, and cultures by clicking on a province in the province map and defining the related localization.<br>
-Feature: Toggle whether a province is impassable, impassable sea, lake, or river by clicking on the province in the province map and toggling a checkbox.<br>
-Feature: The Gimp post-processing script now prints a message to screen when it is done.<br>
-Feature: While editing provinces, draw a land only province map.<br>
-Feature: While editing provinces, draw a water only province map.<br>
-Feature: While editing provinces, draw empire, kingdom, duchy, and county maps. (Warning: this is a bit slow).<br>
-Bug fix: Terrain painting with mountains now results in correct masking.<br>
-Bug fix: Activities locator is now properly generated.<br>
-Bug fix: Locators are now actually automatically moved during Gimp post-processing script.<br>
-Quality of Life: You no longer need to process your flatmap by hand. It is now done by the Gimp post-processing script. <br>
</p><br><br>
<p class="text-intro">Alpha 0.1.2 Release</p>
<p class="main-landing-text">Alpha 0.1.2 includes two hot fixes for issues in the generator: (1) desert_mountains not painting on terrain map and (2) ghostly looking beaches left behind from prior map when you import a height map. There are also some new options under the hood but not exposed through the toolbox yet.</p>
<p class="main-landing-heading">0.1.2 Change Log</p>
<p class="main-landing-text">
Fixed bug preventing desert_mountains from painting in terrain painter.<br>
When you uploaded a heightmap, the system would retain beaches on map from prior map. Fixed this problem.<br>
Added rudimentary ability to modify land and water province limits, no UI for it yet.<br>
Added brush feathering option for circle brush, no UI for it yet.<br>
Restyled terrain selection box to move it closer to toolbox on open.<br>
</p><br><br>
<p class="text-intro">Alpha 0.1.1 Release</p>
<p class="main-landing-text">We are thrilled to announce the alpha release 0.1.1 of the Procedural Map Generator for Crusader Kings 3.</p>
<p class="main-landing-heading">0.1.1 Change Log</p>
<p class="main-landing-text">
Added ability to import heightmap.<br>
Added simple noise function.<br>
Stopped drawing rivers initially. Now you must choose to draw rivers because it affects elevation when you rerun rivers.<br>
Added undo button to map generator.<br>
Added redo button to map generator.<br>
Added toggle to allow users to avoid bug causing memory overflows due to undo/redo buttons.<br>
Added a button allowing you to lower elevation of water only (useful for heightmap import work)<br>
Added a button allowing you to raise elevation of land only (useful for heightmap import work)<br>
Fixed bug causing hills around desert mountains to look green.<br>
Fixed bug causing hills around cold climate mountains to look green.<br>
Deleted generated clothing palettes from template file. Clothing is vanilla palette now. Will work on palette generation at some point. Random is boring.<br>
Removed large ears. Will add back as optional with history/lore update.<br>
Added red brush overlay to show where you are on generator. <br>
Minimizable toolbar.<br>
Fixed bug preventing moving to image downloads if winter severity was not checked.<br>
Add generator for descriptor.mod<br>
Added ability to draw a land only province map <br>
Added square and circle brushes for map editor.<br>
Added indicator for paintbrush cursor.<br>
Fixed locator generation and made automatic. Will need to spread combat, etc. locators around province in future release.<br>
Added hybrid culture name generation (keyed to province of creating character).<br>
Added settings to use vanilla ethnicities for now. Will add back in other options with history/lore update.<br>
Removed asset file that was calling old files that are no longer in the mod.<br>
Deleted bugged line in template descriptor.mod that was causing crashes.<br>
Fixed missing 'DeathDeityHerHim' and decay localization for religions.<br>
</p>
</div>
</div>
</div>
</div>
</div>
<div id="loading-screen">
<h1 class="loading">Generating a New World</h1>
<div class="loadingSpin"></div>
</div>
<canvas id="glCanvas"></canvas>
<script src="js/mapgen/threeMap.js"></script>
<script src="js/mapgen/walkableMap.js"></script>
<!--<img id="heightmapImg" src="heightmap.png" style="display: none"/>-->
<script src="js/langgen/alice.js"></script>
<script src="js/external_libraries/simplex-noise.js"></script>
<script src="js/langgen/religionnames.js"></script>
<script src="js/langgen/parsedsurnames.js"></script>
<script src="js/langgen/malenames.js"></script>
<script src="js/langgen/femalenames.js"></script>
<script src="js/langgen/mostcommon.js"></script>
<script src="js/langgen/britishplaces.js"></script>
<script src="js/langgen/frenchSeed.js"></script>
<script src="js/langgen/germanSeed.js"></script>
<script src="js/langgen/portugueseSeed.js"></script>
<script src="js/langgen/quechuaSeed.js"></script>
<script src="js/langgen/arabicSeed.js"></script>
<script src="js/all/clock.js"></script>
<script src="js/all/utilities.js"></script>
<script src="js/all/initialState.js"></script>
<script src="js/mapgen/sorting.js"></script>
<script src="js/mapgen/canvasOperations.js"></script>
<script src="js/mapgen/getNeighbors.js"></script>
<script src="js/mapgen/downloading.js"></script>
<script src="js/mapgen/showInfo.js"></script>
<script src="js/mapgen/brushEditor.js"></script>
<script src="js/gameConcepts/gameConcepts.js"></script>
<script src="js/mapgen/biome.js"></script>
<script src="js/mapgen/masking.js"></script>
<script src="js/mapgen/transparentTest.js"></script>
<script src="js/mapgen/tectonics.js"></script>
<script src="js/mapgen/winterSeverity.js"></script>
<script src="js/mapgen/asteroids.js"></script>
<script src="js/mapgen/createWorld.js"></script>
<script src="js/mapgen/drawing.js"></script>
<script src="js/mapgen/getFeatures.js"></script>
<script src="js/mapgen/rain.js"></script>
<script src="js/mapgen/changeElevation.js"></script>
<script src="js/mapgen/cleanup.js"></script>
<script src="js/mapgen/moisture.js"></script>
<script src="js/mapgen/erosion.js"></script>
<script src="js/mapgen/floodfills.js"></script>
<script src="js/mapgen/rivers.js"></script>
<script src="js/mapgen/parchMap.js"></script>
<script src="js/langgen/lang2.js"></script>
<script src="js/langgen/lang3.js"></script>
<script src="js/landedTitles/generateLandedTitles.js"></script>
<script src="js/mapgen/createProvinces.js"></script>
<script src="js/mapgen/createProvinceTerrain.js"></script>
<script src="js/culture/generateCulture.js"></script>
<script src="js/religion/generateReligion.js"></script>
<script src="js/history/simplehistory.js"></script>
<script src="js/palettes/clothingtextures.js"></script>
<script src="js/palettes/eyeskinhair.js"></script>
<script src="experimental/explainer.js"></script>
<script src="experimental/explainerHistory.js"></script>
<script src="js/mapgen/startup.js"></script>
<script src="js/textFileWriters/writeProvinceDefinitions.js"></script>
<script src="js/textFileWriters/writeBookmark.js"></script>
<script src="js/textFileWriters/writeCultureLocalization.js"></script>
<script src="js/textFileWriters/writeDefaultMap.js"></script>
<script src="js/textFileWriters/writeDynastyLocalization.js"></script>
<script src="js/textFileWriters/writeLandedTitles.js"></script>
<script src="js/textFileWriters/writeLocators.js"></script>
<script src="js/textFileWriters/writeTitleLocalization.js"></script>
<script src="js/textFileWriters/writeSettings.js"></script>
<script src="js/textFileWriters/writeGeneratorSettings.js"></script>
<script src="js/interface/clickables.js"></script>
<script src="js/loregen/koppenClimate.js"></script>
<script src="js/loregen/agriculturalProductivity.js"></script>
<script src="js/loregen/miningSuitability.js"></script>
<script src="js/loregen/livestockSuitability.js"></script>
<script src="js/loregen/determineBuildingMaterials.js"></script>
<script src="js/loregen/canProvinceProduce.js"></script>
<script src="js/loregen/geographical_regions/materials.js"></script>
<script src="js/loregen/geographical_regions/analyzeRegion.js"></script>
<script src="js/loregen/geographical_regions/assignGraphicsPossibilities.js"></script>
<script src="js/loregen/tribalCreationMyth.js"></script>
<script src="js/loregen/evaluateExpansionFavorability.js"></script>
<script src="js/loregen/calculateDaylight.js"></script>
<script src="js/climate/isClimateTransitionZone.js"></script>
<script src="js/climate/calculateFloodRisk.js"></script>
<script src="experimental/heightmapUpload.js"></script>
<script src="js/textFileWriters/writeDescriptor.js"></script>
<script src="js/textFileWriters/writeHybridCultures.js"></script>
<script src="js/textFileWriters/writeGenerators.js"></script>
<script src="js/textFileWriters/writeDefines.js"></script>
<script src="js/ethnicitygen/vanilla.js"></script>
<script src="experimental/drawRoguelike.js"></script>
<script src="js/mapgen/provinceEditor.js"></script>
<script src="js/all/math.js"></script>
<script src="js/textFileWriters/writeHeightmapHeightmap.js"></script>
<script src="js/shared/ui/moveable-element.js"></script>
<script src="js/shared/ui/hideable-element.js"></script>
<script src="js/interface/zoom.js"></script>
<script src="js/randomKeys/randomAdjectives.js"></script>
<script src="js/randomKeys/randomNouns.js"></script>
<script src="js/external_libraries/voronoi.js"></script>
<script src="js/interface/voronoiProvinces.js"></script>
<script src="js/external_libraries/quadtree.js"></script>
<script src="js/textFileWriters/writeTerrainShader.js"></script>
<!--
<script src="js/testing/createDummyProvinces.js"></script>
<script src="js/testing/createdDummyProvinces.js"></script>
<script src="js/testing/createDummyWorld.js"></script>
<script src="js/testing/test.js"></script>
-->
</body></html>