Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
bba4aa4
Modularize map generation and add new generators
genixpro Sep 10, 2026
9befd6f
Sort map generators by quality
genixpro Sep 10, 2026
a099035
Refine map generator quality order
genixpro Sep 10, 2026
b77c5c0
Make Contested Commons the first and default generator
genixpro Sep 10, 2026
1da0a15
Fix rectangular map previews and wrapped colony start coordinates
genixpro Sep 10, 2026
44e191e
Keep review reports and generated screenshots out of the repository
genixpro Sep 10, 2026
427a47e
Bridge CustomGamePreferences through the legacy generator descriptor
genixpro Sep 10, 2026
db88fb0
Fix MenuColonyHarness for the modularized generator API
genixpro Sep 10, 2026
99ca264
Guarantee reachable starting wheat and wood, fix old-random's wood-po…
claude Sep 10, 2026
c87330a
Detect and clear resource walls that seal off a team's starting pocket
claude Sep 10, 2026
428021f
Choose colony sites after resources exist, and choose them for equality
claude Sep 10, 2026
b37fe40
Score colony sites as they will be built, not as the bare map looks
claude Sep 10, 2026
34c8382
Compute fertility as the growth probability it actually is
claude Sep 11, 2026
67bbc03
Score the start each colony actually got, not just its walk
claude Sep 11, 2026
8a08190
Keep the best of five rolls instead of the first that fits
claude Sep 11, 2026
f087a76
Cache the per-tile hard-space test chooseBalancedStarts already prove…
genixpro Sep 11, 2026
c02219c
Narrow FertilityField's single-axis intermediates to the range they use
genixpro Sep 11, 2026
db6ecb3
Hoist named RNG-stream lookups out of Shattered Coast and Rugged Arch…
genixpro Sep 11, 2026
3203e22
Fix column-major grid traversal and pointer-chasing data structures i…
genixpro Sep 11, 2026
e66723d
Bump Contested Commons' revision for its WholeRegion cache-order fix
genixpro Sep 11, 2026
afcb7fd
Finish replacing std::queue with preallocated flat FIFOs across the f…
genixpro Sep 11, 2026
af3bb6a
Give Fjord Continent an ambient resource scatter to restore map perso…
genixpro Sep 11, 2026
4375ae8
Populate Map::Tile::fertility during generation, not just on load or …
genixpro Sep 11, 2026
37024c9
Fix a generation-failure regression in Fjord's ambient scatter, and s…
genixpro Sep 11, 2026
00a70c4
Make scatterResources actually prefer farmable ground, not just legal…
genixpro Sep 11, 2026
1770b36
Paint ambient wheat/wood as a fertility-threshold band, not independe…
genixpro Sep 11, 2026
fb96b8a
Split ambient farmland placement into where (fertility) vs which crop…
genixpro Sep 11, 2026
1d9ea57
Fix wheat trapped behind a wood wall: finer split scale, per-componen…
genixpro Sep 11, 2026
9637b2e
Give Fjord a central lake, richer core resources, and fix outlier isl…
genixpro Sep 11, 2026
5f7a5e0
Widen resource-islands range, thicken core fruit, center lake algae, …
genixpro Sep 11, 2026
38b5ed3
Fix fjords not actually reaching the lake in lake-connected mode
genixpro Sep 11, 2026
d35645d
Renumber Fjord's generation steps and trim debugging-journey comments
genixpro Sep 11, 2026
87162c9
Document the Fjord step-renumbering cleanup
genixpro Sep 11, 2026
0aaec73
Split FjordContinentGenerator::generate() into named helper functions
genixpro Sep 11, 2026
123a95b
Remove the Lattice map generator
genixpro Sep 11, 2026
560ec8d
Replace the framework changelog with a current-state architecture doc
genixpro Sep 11, 2026
8acc378
Rewrite the Maze generator as a real pen-and-paper maze
genixpro Sep 11, 2026
894bfec
Document the rewritten Maze and drop stale scatter references
genixpro Sep 11, 2026
047788a
Make the maze livable: grass passages, thin channels, scattered resou…
genixpro Sep 11, 2026
bc54ddb
Maze: fit homes to any grid that can hold them, and translate its mes…
genixpro Sep 11, 2026
ef16821
Maze: fruit becomes treasure at dead ends; algae returns to the channels
genixpro Sep 11, 2026
a983c37
Maze: default channel width 4 and loopiness 5
genixpro Sep 11, 2026
ef1bf6f
Maze: default channel width 2
genixpro Sep 11, 2026
260b93a
Maze: sand roads link every cell through ground that can't be closed
genixpro Sep 11, 2026
919c744
Add the Ring world map generator
genixpro Sep 11, 2026
44a197c
Ring world: keep ocean islands at least 128-map size
genixpro Sep 11, 2026
8733fa3
List Maze second in the generator catalog
genixpro Sep 11, 2026
badf29a
Add the Symmetric arena map generator
genixpro Sep 11, 2026
cc471d0
Symmetric arena: shortest walking routes, orchard groves, roomier hom…
genixpro Sep 11, 2026
56d94e1
Add the Stone highlands map generator (legacy id 14)
genixpro Sep 11, 2026
8cffde4
Symmetric arena: orchard dealt by orbit, tidier causeways, scale caps
genixpro Sep 11, 2026
825bd45
Add the Watershed map generator
genixpro Sep 11, 2026
64d6005
Merge the Watershed map generator (legacy id 13)
genixpro Sep 11, 2026
b8afcac
Merge the Stone highlands map generator (legacy id 14)
genixpro Sep 11, 2026
eda72ba
Merge the Symmetric arena map generator (legacy id 15)
genixpro Sep 11, 2026
51ee651
Merge the Ring world map generator (legacy id 16)
genixpro Sep 11, 2026
014fd1b
Document the Watershed, Stone highlands, Symmetric arena and Ring wor…
genixpro Sep 11, 2026
e9b200a
Scatter algae over water bodies, not land components
genixpro Sep 11, 2026
119419f
List the new generators mid-catalog
genixpro Sep 11, 2026
0e69a31
Translate new map generator labels in all language tables
genixpro Sep 11, 2026
6b2e05e
Stop computeDistances overrunning its queue on repeated sources
genixpro Sep 11, 2026
c3fa53b
Default generated maps to 256x256
genixpro Sep 11, 2026
52dcef6
Add Randomize and Reset to defaults to the custom game Map tab
genixpro Sep 11, 2026
95e24a7
Merge translations for the new map generator and lobby labels
genixpro Sep 11, 2026
d010554
Add a map fairness tournament harness
genixpro Sep 11, 2026
fab76ca
Add on/off switch controls, shown as checkboxes, and save every gener…
genixpro Sep 11, 2026
7da834a
Fix tournament summaries and adjudicate stalled games by population
genixpro Sep 11, 2026
e261613
Report tournament bias from decisive games and size the smoke preset
genixpro Sep 11, 2026
741afdd
Explain which map form the fairness tournament plays
genixpro Sep 11, 2026
8b3e86e
Document measured fairness tournament cost
genixpro Sep 11, 2026
aa2690f
Wrap boot tiles before guaranteeStartingResources floods from them
genixpro Sep 11, 2026
017770c
Add resource amounts and a hilltop stone switch to the height-field g…
genixpro Sep 11, 2026
68df089
Add resource amounts and beach and bridge switches to Concrete island…
genixpro Sep 11, 2026
244da6d
Add resource amounts and a switch each to Old random and Old islands
genixpro Sep 11, 2026
8139286
Judge tournament bias against a fair-map floor, and test the scorer p…
genixpro Sep 11, 2026
eb596f6
Point the tournament doc at its offline test
genixpro Sep 11, 2026
99e5b76
Keep every colony buildable when a resource amount is turned up
genixpro Sep 11, 2026
3a82503
Add resource amounts and switches to Contested commons, Maze and Fjor…
genixpro Sep 11, 2026
aa6d0c6
Add resource amounts and switches to Watershed, Stone highlands, Symm…
genixpro Sep 11, 2026
f975ede
Document the resource amounts, the switches and keeping colonies buil…
genixpro Sep 11, 2026
5dbc8e3
Translate the new resource amount and switch labels
genixpro Sep 11, 2026
adb0021
Add the engine baseline preset
genixpro Sep 11, 2026
d007bcf
Mention the baseline preset where presets are run
genixpro Sep 11, 2026
12f9cc0
Merge the map fairness tournament harness
genixpro Sep 11, 2026
cecfef9
Skip a colony marker another marker is drawn over
genixpro Sep 11, 2026
2434668
Merge the tournament baseline preset
genixpro Sep 11, 2026
5b967be
Merge resource amounts and on/off switches for every generator
genixpro Sep 11, 2026
283ee82
Fix the Windows build: near and far are macros there
genixpro Sep 12, 2026
82e0155
Note the Windows near/far macro trap in the development reference
genixpro Sep 12, 2026
43426ae
Add the City states map generator
genixpro Sep 12, 2026
7b221ff
Add the Tidal flats map generator
genixpro Sep 12, 2026
adf81b1
Pick a landscape by sight in the custom game lobby
genixpro Sep 12, 2026
517ea16
Let Contested commons spread any colony count on any map size
genixpro Sep 12, 2026
2b66a1f
Merge master into codex/modular-map-generators
genixpro Sep 12, 2026
57e424c
Enforce generator revisions with golden maps and sweep every colony c…
genixpro Sep 12, 2026
84c30a0
Seat every colony on a crowded Shattered coast
genixpro Sep 12, 2026
4f7be2c
Format the map generator tree with one clang-format configuration
genixpro Sep 12, 2026
9875966
Retire the height map's debug dumps and the noise macros
genixpro Sep 12, 2026
acd1590
Share the torus grid, flood and reachability check between generators
genixpro Sep 12, 2026
ab4f28b
Use the shared flood for Stone highlands' and Maze's remaining floods
genixpro Sep 12, 2026
0e1bf68
Split Contested commons' generate into its five stages
genixpro Sep 12, 2026
c870aa2
Split Rugged archipelago's terrain into its growth passes
genixpro Sep 12, 2026
ffadd74
Split Isles' generate into its stages
genixpro Sep 12, 2026
d801ead
Split Shattered coast's terrain into its stages
genixpro Sep 12, 2026
9493124
Split City states' design into coasts, features and rasterization
genixpro Sep 12, 2026
43b5409
Roll the lobby's preview candidates off the UI thread
genixpro Sep 12, 2026
a564208
Measure start metrics by colony index
genixpro Sep 12, 2026
e2071ba
Record the full-rotation tournament result
genixpro Sep 12, 2026
8ad1401
Add the Everglades map generator
genixpro Sep 12, 2026
b6f596d
Extract the designed generators' shared toolkit
genixpro Sep 12, 2026
acb7218
Route every flood through Grid and consolidate the lattice noise
genixpro Sep 12, 2026
b5aae89
Quarantine the legacy toolkit and split the height-field pipeline
genixpro Sep 12, 2026
8c0904d
Test the shared generator toolkit and document it module by module
genixpro Sep 12, 2026
8051b17
Converge the noise, roads, kits and island rule; bump three revisions
genixpro Sep 12, 2026
7450988
Add the Spider web map generator and its drawing primitives
genixpro Sep 12, 2026
e95f988
Add the Coral map generator; fill rectangular maps; enrich Spider web
genixpro Sep 13, 2026
e096364
Document every map generator's logic and tuning values
genixpro Sep 13, 2026
25dce09
Make Map::smoothResources fray deposits again
genixpro Sep 13, 2026
52c55c9
Add sand roads to City states
genixpro Sep 13, 2026
b86c59b
Add hexagon and warped cells to the Maze on a shared tiling toolkit
genixpro Sep 13, 2026
79761d5
Add Carousel, Amphitheatre and Switchbacks walled-arena generators
genixpro Sep 13, 2026
de35b7b
Tidy the walled-arena generators and document their design
genixpro Sep 13, 2026
4c21ff6
Add landscape primitives to the map generator toolkit
genixpro Sep 13, 2026
6f30581
Add nine landscape generators on the landscape toolkit
genixpro Sep 13, 2026
6536aa6
Revise Old growth, Anthill and Old town from first play
genixpro Sep 13, 2026
6b0214b
Revise Old growth, Anthill and Old town from second play
genixpro Sep 13, 2026
8f5be47
Make Old town's tendrils short, frequent and two tiles wide
genixpro Sep 13, 2026
4414a17
Halve Old town's tendrils
genixpro Sep 14, 2026
452224b
Drop Marches and Patchwork; revise Fingerprint, Rain shadow, Polder, …
genixpro Sep 14, 2026
45b528b
Deal start sites to colonies at random (dealStarts)
genixpro Sep 14, 2026
3e709fc
Switchbacks: farms on every map size
genixpro Sep 14, 2026
1bbc06e
Switchbacks: farms fill all the sea, stone lines between colonies
genixpro Sep 14, 2026
da8ba4c
Amphitheatre: territories by balanced power diagram, straight borders
genixpro Sep 14, 2026
987d25d
Canals: fourteen block kinds, forts and fields beside every pad
genixpro Sep 14, 2026
385de4b
Map generators: cleanup pass, byte-identical
genixpro Sep 14, 2026
850ce2c
Translate the landscape controls in every catalog
genixpro Sep 14, 2026
953fe43
Review fixes: mingw build, test link surface, Stone Highlands passes,…
genixpro Sep 14, 2026
9e71355
Merge origin/master into codex/modular-map-generators
genixpro Sep 14, 2026
c6fb9d5
Golden check can require rows; Old growth's lake size survives prefer…
genixpro Sep 14, 2026
3b53ec5
Golden rows for linux-x86_64, required by CI
genixpro Sep 14, 2026
1617f7e
Rename the last near and far identifiers for mingw
genixpro Sep 14, 2026
9e1f9db
Merge remote-tracking branch 'origin/master' into codex/modular-map-g…
genixpro Sep 14, 2026
ab95800
Reach the sync RNG through a function, not an extern thread_local object
genixpro Sep 14, 2026
81622ca
Tune ten generators from the 2026-09-14 play notes
genixpro Sep 14, 2026
65ae972
Lobby: random maps by default, random parameters, start quality break…
genixpro Sep 14, 2026
459093f
City states: the archipelago in the sea outside the circle; picker Re…
genixpro Sep 14, 2026
342bbc1
CI: show the visual lobby harness's output in the job log
genixpro Sep 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Matches the style the engine and the generator core already use: tabs, Allman braces,
# 100 columns, right-aligned pointers and references, access specifiers half a level out.
BasedOnStyle: LLVM
Language: Cpp
Standard: c++20
IndentWidth: 4
TabWidth: 4
UseTab: ForContinuationAndIndentation
ContinuationIndentWidth: 4
ColumnLimit: 100
BreakBeforeBraces: Allman
AccessModifierOffset: -2
PointerAlignment: Right
ReferenceAlignment: Right
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AllowShortLambdasOnASingleLine: All
AllowShortBlocksOnASingleLine: Never
AlignAfterOpenBracket: Align
AlignOperands: Align
BinPackArguments: true
BinPackParameters: true
NamespaceIndentation: None
IndentCaseLabels: false
SortIncludes: false
ReflowComments: false
FixNamespaceComments: true
SpaceAfterCStyleCast: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
10 changes: 8 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,17 @@ jobs:

- name: Build and run custom-game setup regressions
run: |
scons -j$(nproc) release=1 server=0 custom-setup-test map-generator-defaults-test
scons -j$(nproc) release=1 server=0 custom-setup-test map-generator-defaults-test map-generator-golden-test
timeout 60s ./build/src/MapGeneratorDefaultsTest glob2-map-defaults-ci
# Golden maps: rows exist per platform and this platform must have them. --print first,
# so the rows a new platform would record are in the log even when the check that
# follows fails and can be committed from there.
timeout 300s ./build/src/MapGeneratorGoldenTest glob2-golden-ci --print
timeout 300s ./build/src/MapGeneratorGoldenTest glob2-golden-ci --require-rows
timeout 600s ./build/src/MapGeneratorGoldenTest glob2-golden-ci --sweep
timeout 180s ./build/src/CustomGameSetupHarness
mkdir -p artifacts/custom-game-ci
timeout 180s xvfb-run -a -s '-screen 0 1024x768x24' ./build/src/CustomGameSetupHarness artifacts/custom-game-ci > artifacts/custom-game-ci/ui.log 2>&1
timeout 180s xvfb-run -a -s '-screen 0 1024x768x24' ./build/src/CustomGameSetupHarness artifacts/custom-game-ci 2>&1 | grep -v '^Map generation\|^Landscape preview\|^Settings::load' | tee artifacts/custom-game-ci/ui.log
timeout 60s xvfb-run -a ./build/src/CustomGameSetupHarness preferences-write
timeout 60s xvfb-run -a ./build/src/CustomGameSetupHarness preferences-read
cat artifacts/custom-game-ci/ui.log
Expand Down
3 changes: 3 additions & 0 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,9 @@ def main():
'#src/game/entities',
'#src/gui',
'#src/map', '#src/map/edit', '#src/map/generator',
'#src/map/generator/core', '#src/map/generator/generators',
'#src/map/generator/shared', '#src/map/generator/shared/legacy',
'#src/map/generator/compatibility',
'#src/map/gradient', '#src/map/io', '#src/map/pathfind',
'#src/net', '#src/net/irc', '#src/net/message',
'#src/sgsl',
Expand Down
Loading
Loading