Skip to content

Add 27 new levels - #30

Open
Upabjojr wants to merge 3 commits into
tomluchowski:shaders-improvementfrom
Upabjojr:split/new-levels
Open

Add 27 new levels#30
Upabjojr wants to merge 3 commits into
tomluchowski:shaders-improvementfrom
Upabjojr:split/new-levels

Conversation

@Upabjojr

@Upabjojr Upabjojr commented Aug 1, 2026

Copy link
Copy Markdown

Adds 27 new levels across three commits: six (three multiplayer, three skirmish), then thirteen more (up to 145×145 and eight players), then eight more. The nineteen pre-existing levels are untouched. Level data files only.

Compared to the first version of this batch, every map has been reworked for variety, taking the shipped hand-made maps as the reference:

  • Interleaved terrain — gold veins wind through rock and dirt, ore and stray rock are speckled through the ground, shores are ragged with beaches, islands and creeks, and a gem pocket hides deep in rock. Gold, water, lava and stone are no longer isolated blobs.
  • Wildlife — small caves in the wilderness hold packs of neutral (seat 0) creatures picked by the nearest biome: lizardmen and tentacles by the water, skeletons by the lava, goblins and kobolds by the gold, rats, spiders and hornets elsewhere.
  • Hero dungeons — where a seat color was free, the wilds hold a walled hero keep (claimed walls, a wave portal with delayed waves, a garrison with equipped knights, gate cannons and buried wall gold) under an inactive Hero seat, in the style of StoneKeep and FallingKeeper. On maps that already use all eight seat colors, a rock-walled ruin garrisoned by rogue hero veterans stands in instead, as RuinsOfTheConfluent does with seat-0 heroes.

The generated multiplayer maps' fairness guarantee is preserved: each map's symmetry (mirror, half turn, quarter turn, or the full symmetry group of the square) is detected from its tiles and every change — every tile, every wild creature, every keep — is stamped across the whole symmetry orbit, so players get mirror-image keeps at equal distance and equal reachable gold. Skirmish maps play against AI seats and are enriched organically instead.

Verified: the tile grid still maps onto itself under each map's declared transform; every temple still digs to every temple and portal without crossing water or lava; and each of the 27 maps loads in the engine and holds a listening dedicated server with no errors, with all rooms, wave portals, traps and creatures instantiated.


Split out of #16 so each topic can be reviewed on its own.

🤖 Generated with Claude Code

Multiplayer, every player given exactly the same start:

  Twin Fangs      65x65, 2 players, half turn rotation. A gem seam in the
                  middle, ringed in lava with a breach on either side.
  Four Winds      81x81, 4 player free for all, quarter turn rotation, so
                  no corner is better than another. Gold spokes reach out
                  from a crossroads nobody can hold quietly.
  The Broken Seal 73x73, 2 players, half turn rotation. A vault walled in
                  rock holds two hero portals that send waves at a keeper
                  picked at random, so neither player can rely on the
                  other soaking them.

Skirmish, each with something to achieve:

  The Golden Vein     65x65, a mining race against one AI keeper. Mine
                      2000, then 6000, then 12000 gold, and destroy him.
  Heroes at the Gate  65x65, no rival keeper, only escalating hero waves
                      from two portals down two defensible approaches.
                      Hold the temple and kill every last hero.
  The Deep Catacombs  73x73, walled crypts on a grid. Claim 250 tiles,
                      then 600, against an AI keeper, while hero waves
                      arrive from both ends.

Equality on the multiplayer maps is structural rather than eyeballed: each
map is authored once and stamped through the rotations that generate it,
so a player's surroundings are the image of every other player's. The maps
are odd sized on purpose, so the rotation has a centre tile to fix; on an
even sized map there is no such tile and the middle cannot be symmetric.

Checked before committing: the whole tile grid maps onto itself under the
rotation with seat ids following it, early reachable gold is equal for
every player, every room tile is claimed floor owned by the room's seat,
each seat starts inside its own temple, and every temple can dig its way
to every portal and to every other temple without crossing water or lava.
All six load in the engine with no warnings.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 9a43fbe)

Reworked after a first look at the batch: the ground was clean but sterile.
Gold, water and lava sat in separate blobs in an even sea of dirt, nothing
lived anywhere, and no heroes held any of it. Every map now gets gold veins
wound through rock and dirt, speckled ore and stray rock, ragged shores with
beaches, islands and creeks, a gem pocket buried deep in rock, and caves
holding packs of neutral creatures picked by the nearest biome: lizardmen by
the water, skeletons by the lava, goblins by the gold. Where a seat color was
free the wilds also hold a hero keep - claimed walls, a wave portal, a
garrison and gate cannons, all under an inactive Hero seat - and where none
was free, a rock ruin garrisoned by rogue hero veterans sitting on their gold.

On multiplayer maps every change, down to each wild creature, is stamped over
the map's symmetry orbit, so the declared transform still holds exactly, the
players get mirror-image keeps at equal distance, and reachable gold stays
equal; the temples still dig to every temple and portal without crossing
water or lava, which is checked, as is that each map loads and holds a
listening server. Skirmish maps play against AI seats and are enriched
organically instead.
Multiplayer:

  Sunken Halls        97x97,   2 players, half turn
  The Iron Cross      97x97,   4 players, quarter turn
  Ember Basin         113x113, 4 players, quarter turn
  The Shattered Ring  113x113, 2 players, half turn, hero vault
  Heroes of the Deep  113x113, 4 players, quarter turn, hero vault
  Long Winter         129x129, 2 players, half turn
  The Eight Thrones   145x145, 8 players, every symmetry of the square

Skirmish:

  Gold and Ashes      97x97,   1 rival keeper, mine 3000/9000/18000 gold
  The Lost Legion     97x97,   hero survival, three portals
  The Great Warren    113x113, 3 rival keepers, claim 400 then 900 tiles
  Siege of the Deep   129x129, 3 rival keepers plus a hero vault
  The Endless Tide    129x129, hero survival, five portals, faster waves
  Kingdoms Fall       145x145, 7 rival keepers, claim 400 then 1000 tiles

The first six maps were authored feature by feature, which does not scale to a
145x145 map without it turning into a field of undug dirt. These are built from
three templates instead: the symmetry group decides how many players there are,
and a seeded generator fills the authored wedge with rock, water, lava, caverns
and gold seams. The seed is part of the map, so each one regenerates identically.

Eight players come from using all eight symmetries of the square rather than
just the rotations, so the eight starts are the same ground seen eight ways. The
wedge is then an octant, which is why that map is the largest: the keeper's
ground has to fit inside it without touching its own reflection.

Filling a wedge automatically needs the wedge boundary respected, so scatter()
places a blob only when the whole blob is inside it, not merely its centre.
stamp() already refuses to let two stamps write different terrain to one tile,
which is what keeps a generated map as symmetric as a hand authored one.

All nineteen levels were checked the same way as before: the tile grid maps onto
itself under the map's rotation, with the seat permutation derived from where the
temples land rather than declared; early reachable gold is equal for every player,
including all eight on the largest maps; rooms are claimed floor owned by their
seat; and every temple can dig to every portal and every other temple without
crossing water or lava. All nineteen load in the engine with no warnings.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 222e0da)

Reworked after a first look at the batch: the ground was clean but sterile.
Gold, water and lava sat in separate blobs in an even sea of dirt, nothing
lived anywhere, and no heroes held any of it. Every map now gets gold veins
wound through rock and dirt, speckled ore and stray rock, ragged shores with
beaches, islands and creeks, a gem pocket buried deep in rock, and caves
holding packs of neutral creatures picked by the nearest biome: lizardmen by
the water, skeletons by the lava, goblins by the gold. Where a seat color was
free the wilds also hold a hero keep - claimed walls, a wave portal, a
garrison and gate cannons, all under an inactive Hero seat - and where none
was free, a rock ruin garrisoned by rogue hero veterans sitting on their gold.

On multiplayer maps every change, down to each wild creature, is stamped over
the map's symmetry orbit, so the declared transform still holds exactly, the
players get mirror-image keeps at equal distance, and reachable gold stays
equal; the temples still dig to every temple and portal without crossing
water or lava, which is checked, as is that each map loads and holds a
listening server. Skirmish maps play against AI seats and are enriched
organically instead.
Multiplayer:

  Mirror Pass       89x89,   2 players, mirror symmetric
  The Salt Lake     105x105, 2 players, gold island behind water
  Crown of Embers   121x121, 4 players, hero vault
  The Four Gates    137x137, 4 players, the largest four player map

Skirmish:

  The Breach        89x89,   hero survival, two fast portals
  Thieves Gold      105x105, 1 rival keeper, race for the island gold
  Old Enemies       121x121, 1 rival keeper plus a hero vault
  The Last Gate     137x137, hero survival, six slow, heavy portals

Two things are new in the generator rather than merely new numbers. Mirror Pass
and Thieves Gold are built on a reflection instead of a rotation: the halves
face each other rather than being turned around the middle, so anything on the
axis, the gem pit, the lake, serves both players at the same distance instead of
coming in pairs. And the lake itself is a new centre: a gold island ringed by
water, which stops a digging worker in a way no wall of dirt does, so the only
ways in are the authored causeways. Every causeway is authored in the full
orbit, since each one crosses water the other stamps would re-lay.

Old Enemies is the first one on one skirmish with a hero vault, and The Last
Gate spreads six portals across the widest survival front so far. Sizes 89 to
137 fill the gaps between the existing maps; all sizes stay odd so the symmetry
has a centre tile to fix.

Checked the same way as the other nineteen: the grid maps onto itself under the
declared transform with the seat permutation derived from where the temples
land, early reachable gold is equal for every player, and every temple digs to
every portal and temple without crossing water or lava. The nineteen existing
maps regenerate byte for byte with the new code. All eight load in the engine
and hold a listening server with no warnings.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 0ebc0e8)

Reworked after a first look at the batch: the ground was clean but sterile.
Gold, water and lava sat in separate blobs in an even sea of dirt, nothing
lived anywhere, and no heroes held any of it. Every map now gets gold veins
wound through rock and dirt, speckled ore and stray rock, ragged shores with
beaches, islands and creeks, a gem pocket buried deep in rock, and caves
holding packs of neutral creatures picked by the nearest biome: lizardmen by
the water, skeletons by the lava, goblins by the gold. Where a seat color was
free the wilds also hold a hero keep - claimed walls, a wave portal, a
garrison and gate cannons, all under an inactive Hero seat - and where none
was free, a rock ruin garrisoned by rogue hero veterans sitting on their gold.

On multiplayer maps every change, down to each wild creature, is stamped over
the map's symmetry orbit, so the declared transform still holds exactly, the
players get mirror-image keeps at equal distance, and reachable gold stays
equal; the temples still dig to every temple and portal without crossing
water or lava, which is checked, as is that each map loads and holds a
listening server. Skirmish maps play against AI seats and are enriched
organically instead.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant