◀ survival.aether-shard.com
AETHER SHARD SURVIVAL WIKI
built from v0.1.73 · 2026-10-06
DESIGN

World Structure

A design document: planned unless a "Prototype" note says it's built.
Part of The design hub. Drafted 2026-08-30. Locks in with the era master clock (The design hub) and the raid system (Raid System (both directions)).

Shape: one contiguous map — a home valley with era wedges

Zone access = infrastructure projects (the signature mechanic)

Each wedge sits behind a chokepoint: a collapsed bridge, a rockslide-buried pass, a ruined gatehouse, a silted ferry crossing. Opening a zone is a city project — materials + the right building tier + active-play time (e.g. the era-3 pass needs the Stone Worker and Engineer; the era-4 crossing needs a rebuilt ferry).

Zone anatomy (authoring template, per wedge)

Each wedge contains, tuned to its era: 1. One rival city (era-matched; grows/rebuilds within its zone's era band — it does NOT chase the player's era, so cleared zones stay cleared-feeling and each new wedge is the fresh threat). 2. Resource clusters — the era's ore/wood/herbs; visible gathering nodes; later partially automated via city-level gathering outposts? (TBD — outpost building parked.) 3. One set-piece dungeon — mine, ruin, or vault; primary home of tomes, essences, unique found-gear, and a mid-zone boss. 4. Camps & wanderers — humanoid camps (lootable remains, rescue leads), wandering recruits/traders (feed the Inn pipeline). 5. The chokepoint to the valley + one lateral shortcut to an adjacent wedge (unlockable from the far side — Metroidvania-style loop-opening, cuts late-game travel).

Prototype (v0.1.14): the Town scene is the fixed city site; the old arena is the valley's first hunting ground, reached by the road east (a gap in the forest ring). Two-scene travel with persistent hero + city data is the seed of the wedge/chokepoint structure below.

Home valley (era 1)

Travel & knowledge

What this answers from the parking lot

Open questions

Prototype v0.1.45 (2026-09-06) — the wilds scale with the era: World.wild_bandit_hp/dmg/loot (hp ×(1 + 0.25·(era−1)), stab 12 + 2·(era−1), gold on remains 1 + (era−1)) and wild_boar_hp/gore/ extra_cuts (hp ×(1 + 0.25·(era−1)), gore 10 + 2·(era−1), +1 meat from Era 3), applied by the Arena at spawn (Enemy.loot_drop, Boar.gore_dmg, Boar.extra_cuts). Together with camps (v0.1.42), Ironhold (v0.1.43) and raids (v0.1.44) the whole valley scales with city.era.
Prototype v0.1.46 (2026-09-06) — deposits scale with the era: GatherNode.yield_for(kind) = base yield + (era − 1), used at spawn and regrow; bonus_for(kind) = the KINDS "bonus" {item, era, text} once city.era ≥ era, handed over on the last unit (deadfall → hide E2, stone pile → cut stone E2, herb patch → sunroot E2, berry bush → grain E2, copper vein → rough gem E3). Prompt shows "Gather X ×n".

Built 2026-09-12 (v0.1.63): the vast wilds, fog of war, keepers indoors

Eric: "I like the phasing into camps/enemy towns. I just thought the overworld would be vast like Aether Shard. I like the fog of war idea. Shouldn't the NPCs be inside the buildings once they are built?"

Built 2026-09-13 (v0.1.64): rooms you walk into, the valley map, mid-screen messages

Eric: "Game messages should appear in the middle of the screen. I meant go inside the buildings like we do in Aether Shard. Also, the overworld is small, but having a map would help."

Built 2026-09-15 (v0.1.66): the valley on Aether Shard's world engine

Eric: "In pause menu, the UI should be seen. Exiting the UI shouldn't use abilities. The town needs to be bigger, the overworld needs to look and act more like Aether Shard's overworld. It feels too small. The fog of war also needs to operate like Aether Shard, getting the cart from Ironhold disappears when you leave Ironhold."

Built 2026-09-18 (v0.1.67): the Town Hall room, furnished

Eric: "Finish the town hall." The hall has no keeper, so its room (sunhall_hall) gets two working spots, scripts/hall_prop.gd (class HallProp, group "hall_props", interactable reach 64): the ledger on the dais (winlu32_banner; opens the hall's whole ForgeDialog page — ledger line, bounties, appointment, charter, modules) and the notice board by the west wall (winlu32_notice_board; Hud.open_board → ForgeDialog.open_board = _mode "board": bounties only, or "bare boards" until the Notice Board module stands). _bounty_rows() is shared by both pages and now lists done bounties too. Interior._furnish_hall(); --built in the Interior also grants every module. Smoke: 486 checks. Decision: the mayor stays at their own trade counter; the hall is the ledger, not a second copy of the person.

Built 2026-09-18 (v0.1.68): the chunk spawner

Eric: "Start the spawners." scripts/chunk_spawner.gd (class ChunkSpawner) folds Aether Shard's enemy and gather spawners into one: on ChunkManager.chunk_generated it rolls up to 2 deposits and 2 enemies per chunk from data/wild_spawns.json (tables keyed by macro char: . , # ^; 3 attempts, chance 0.45), never on a road, in rock, within 12 tiles of the hero, or (enemies) within 8 macro cells of home — the calm ring keeps the opening's ambush the only fight on that road. Spawns carry group "spawned"; on chunk_freed deposits and idle enemies go, a bandit in CHASE/WINDUP/LUNGE/RECOVER stays. Era stats via World.wild_*. Landmark spawns from valley_map.txt sit on top. Arena.spawn_seed / --spawn-seed=N pin the dice (the smoke uses 7, then disables the spawner for the rest of the run). Smoke: 488 checks. Open: no weights per era yet (an Era-3 valley could roll more bandits); no rare spawns (a champion, a merchant cart).

Built 2026-09-18 (v0.1.69): the ruins have a purpose; rare spawns

Eric: "Give the ruins a purpose" / "Let's add rare spawns too."

Built 2026-09-18 (v0.1.70): the skill diamond

Eric: "The abilities at the bottom. It feels weird. Can we have an assignment screen that is like this: X / X X / X. Then for controllers the top is always up, bottom is down, etc. For keyboards/touchscreens you can keep the horizontal layout." Done: PauseMenu.DIAMOND lays the EQUIPPED cells on a 3×3 board (slot 1 top = ↑/1, 2 right, 3 bottom, 4 left) with a caption naming the directions (pad) or keys; badges show ↑→↓← on a pad. Hud.layout_slots(pad) moves the four HUD slots into the same diamond at 0.8 scale bottom-centre when a pad is connected (_pad_frame calls it on every pad/keys switch), and back to the row otherwise; touch keeps its own row. Hud.pad_connected() is static now. Smoke: 499 checks.

Built 2026-09-18 (v0.1.71): text inside the panels

Eric: "The text needs to land inside of the panels on the menus." Every PauseMenu._page() box now sits in a ScrollContainer (vertical, follow focus; _show_box() / _hide_pages() toggle the frame); caption_label no longer clips (grows, the page scrolls); the ABILITIES board is one HBox — diamond block left, LEARNED/PASSIVES with headers above their grids right — so it fits 940×538 without scrolling; QuestDialog._fit() sizes the panel to the wrapped text (min 150) after every refresh. Note for future pages: the panel's usable height is ~460 px at 1024×600 (the HUD strip takes 54); phones keep the same height (expand widens). Smoke: 499.