Add 27 new levels - #30
Open
Upabjojr wants to merge 3 commits into
Open
Conversation
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.
Upabjojr
force-pushed
the
split/new-levels
branch
from
August 1, 2026 10:50
8f183e7 to
26866a3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
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