| . ___ __ __ ___ . __ __ __ __ __ __ | | |__ |__) |__) |__ ' /__` /__` / \ /\ |__) |__) / \ \_/ |___ | |___ | \ | \ |___ .__/ .__/ \__/ /~~\ | |__) \__/ / \ ⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∽⋅∼⋅∽⋅∽⋅∽⋅∽⋅
I want to automate the Cairn second edition map creation guide[0] to produce pure text maps, to integrate with my preparation notes easily. Previously[1], I've manually transcribed a map to see how that would look like. In this log, I try to take this one step further by looking for a better formatting.
Last time, our map looked like this:
MINERAL REACH ┌──────────────────────────────╥───────────────────────────────────────┐ │░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ │ │░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ │ │░░░░░░░░░░░░░░░ 7 ───x───┐ ╚═══╗ ┌─────────────── 3 │ │░░░░░░░░░░░░░░░░░░░░ │ ║ B │ │ │ │░░░░░░░░░░░░░░░ A ░ 6 ────┐ ║ │ ┌──────x─────┘ │ │░░░░░░░░░░░░░░░░░░░ │ ├─ 1 ──────┘ │ │ │░░░░░░░░░░░░░░░ │ │ ║ │ │ │░░░░░░░░░░░░░░░ ┌────────┘ │▓▓╚══╗▓▓▓▓▓▓▓ 2 ──────────┐▓▓▓▓▓▓▓▓▓▓▓│ │░░░░░░░░░░░░░░ 8 ─────────────┘▓▓ C ║┌───────┘▓▓▓▓▓▓▓▓▓▓ 4 ▓▓▓▓▓▓▓▓▓▓│ │░░░░░░░░░░░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓┌───║┘▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓│ │░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 5 ──║─────────x──────────┘▓▓▓▓▓▓▓▓▓▓▓│ │░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│ └─────────────────────────────────────╨────────────────────────────────┘ Legend: Point of Interest: 1: Heart: Fortress, Dangerous, Portal 2: Curiosity: Buried Megalith, Irregular Gravity 3: Curiosity: Buried Megalith, Trash Heap 4: Waypoint: Inn, Sacred Grounds 5: Dungeon: Fort, Mirrored 6: Curiosity: Echoin Fields, Site of Ancient Battle 7: Dungeon: Tower, Crumbling 8: Lair: Abandoned Tower, Something Sleeps Landmarks: A: Silver Face B: Broken Sundial C: Great Waterwheel ░: plateau ▓: wasteland : mountain ║: river Connections: ─── : path ─x─ : blocked path 1 ─── 2: Road, 1 Watch, Mineral Flecks - Divided by Political Dispute 1 ─── 3: Wilderness, 2.5 Days, Dead Vegetation - Frequent Flash Floods 1 ─── 6: Road, 1 Watch, Rusted Tools - Firebug Hive 1 ─── 8: Trail, 2 Days, Massive Grooves - Bandit Ambushes 2 ─x─ 3: Trail, 1.5 Days, Follows The Stars - Smoke Filled 2 ─── 4: Trail, 1.5 Days, Abandoned Fields - Blocked by Giant Boulder 2 ─── 5: Trail, 2 Days, Overgrown - Poisonous Fruit 4 ─x─ 5: Cattle Prints, 2 Days, Steep Climb 6 ─x─ 7: Trail, 1 Days, Constant Patrols - Collapsed Bridge 6 ─── 8: Road, 1 Days, Twisted - Gets Extremely Cold
It can be used, but a lot of information is redundant. It's also quite ugly, but map beauty is a secondary goal not a primary one. Primary one is information content. Given that the distances on the map are mostly encoded in the graph like connection system, let's remove all the fluff.
┌──────────────────────────────────────────────────────────────────────┐ │ MINERAL REACH │ ├──────────────────────────────────────────────────────────────────────┤ │Legend: Connections: │ │ │ │ ░: plateau ─── : path │ │ ▓: wasteland ─x─ : blocked path │ │ : mountain │ │ ║: river │ ├───────╥────────────┬─────────────────────────────────────────────────┤ │░░░░ ║ │ 1: Heart: Fortress, Dangerous, Portal │ │░7─x─┐ ╚═══╗ ┌───3 │ 2: Buried Megalith, Irregular Gravity │ │░░░░ │ ║B │ │ │ 3: Buried Megalith, Trash Heap │ │░A░ 6──┐ ║ │ ┌x┘ │ 4: Waypoint: Inn, Sacred Grounds │ │░░░ │ ├──1──┘ │ │ 5: Dungeon: Fort, Mirrored │ │░░ ┌─┘ │▓▓╚══╗▓2─┐▓│ 6: Echoing Fields, Ancient Battle Site │ │░░ 8────┘▓▓▓▓▓║┌┘▓4▓│ 7: Dungeon: Tower, Crumbling │ │░ ▓▓▓▓C▓║│▓▓│▓│ 8: Lair: Abandoned Tower, Something Sleeps │ │░ ▓▓▓▓┌──║┘▓▓│▓│ A: Silver Face │ │░░▓▓▓▓▓▓▓▓▓5──║─x─┘▓│ B: Broken Sundial │ │░▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓│ C: Great Waterwheel │ ├──────────────╨─────┴─────────────────────────────────────────────────┤ │1 ─── 2: Road, 1 Watch, Mineral Flecks - Divided by Political Dispute │ │1 ─── 3: Wilderness, 2.5 Days, Dead Vegetation - Frequent Flash Floods│ │1 ─── 6: Road, 1 Watch, Rusted Tools - Firebug Hive │ │1 ─── 8: Trail, 2 Days, Massive Grooves - Bandit Ambushes │ │2 ─x─ 3: Trail, 1.5 Days, Follows The Stars - Smoke Filled │ │2 ─── 4: Trail, 1.5 Days, Abandoned Fields - Blocked by Giant Boulder │ │2 ─── 5: Trail, 2 Days, Overgrown - Poisonous Fruit │ │4 ─x─ 5: Cattle Prints, 2 Days, Steep Climb │ │6 ─x─ 7: Trail, 1 Days, Constant Patrols - Collapsed Bridge │ │6 ─── 8: Road, 1 Days, Twisted - Gets Extremely Cold │ └──────────────────────────────────────────────────────────────────────┘
I might have gone overboard with the formatting, but it does look rather good in my opinion. It's compact and readable. I don't think that going this far in the formatting is the goal of the generator I have in mind.
From what I see here, I feel it would be best to start from an arbitrary grid size. Then do the random placements. Then densify the representation based on rules.
We've translated an existing map into some representations that seem more or less adequate. But how does the generation process work with that? Can we digitise it adequately? Let's find that out next time.
[0] The Setting Seed/Ream creation procedure
[1] the previous dev blog.
⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∽⋅∼⋅∽⋅∽⋅