Move map metadata into info.json and generate map TypeScript from it (#4227)

**Add approved & assigned issue number here:**

N/A — maintainer refactor.

## Description:

Makes each map's `info.json` the single source of truth for map metadata
— adding a map is now a folder with `image.png` + `info.json`, a
`gen-maps` run, and an en.json display name.

**info.json / manifest.json carry full map metadata.** Every
`map-generator/assets/maps/<map>/info.json` declares `id` (the
`GameMapType` enum key), `name` (the enum value — wire format, unchanged
for all 94 maps), `translation_key`, `categories`, and
`multiplayer_frequency` (the public-playlist weight that used to be the
`FREQUENCY` record in MapPlaylist.ts). The generator validates
everything and mirrors it into `resources/maps/<map>/manifest.json`. 23
stale info.json `name` values were normalized to the canonical enum
value; enum values are byte-identical, so replays and stored game
configs are unaffected.

**The generator emits the TypeScript and discovers maps itself.** New
`map-generator/codegen.go` generates `src/core/game/Maps.gen.ts`
(`GameMapType`, `GameMapName`, `mapCategories`, `mapTranslationKeys`,
`multiplayerFrequency` — now a full `Record<GameMapName, number>`,
killing the old `Partial`) on every run; `Game.ts` re-exports it. The
hardcoded map registry in `main.go` is gone — maps are auto-discovered
from the `assets/maps` / `assets/test_maps` directories. MapConsistency
tests fail with a "run `npm run gen-maps`" message if info.json,
manifest.json, and Maps.gen.ts drift. The tracked
`map-generator/map-generator` binary is rebuilt to match.

**New categories: continents + world/cosmic/tournament/other,
multi-category support.** `continental`/`regional`/`fantasy`/`arcade`
are replaced by `featured`, `world`, `europe`, `asia`, `north_america`,
`africa`, `south_america`, `oceania`, `antarctica`, `cosmic`,
`tournament`, and `other`. Maps can list multiple categories, so
straddlers (Black Sea, Bosphorus, Caucasus, Between Two Seas, Bering
Sea/Strait, Mena, Strait of Gibraltar, Hawaii, Arctic) appear under both
regions. Featured is itself a category (same 7 maps as before).
MapPlaylist keeps its arcade exclusion via an explicit set.

**Map picker UI.** Two tabs: **Featured** (default — featured maps plus
a Favorites section when maps are starred) and **All** (one prominent
collapsible bar per category with a map count, collapsed by default).
The selected map is prepended to the featured grid when it lives
elsewhere. `getMapName()` resolves through the generated
`mapTranslationKeys`, which also fixes tourney maps never resolving a
valid translation key.

## Please complete the following:

- [ ] I have added screenshots for all UI updates (maintainer change —
picker described above)
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evanpelle

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Evan
2026-06-11 19:36:53 -07:00
committed by GitHub
co-authored by Claude Fable 5
parent 8da2291a49
commit 3de5fb4204
205 changed files with 2404 additions and 825 deletions
+11 -207
View File
@@ -93,213 +93,17 @@ export const ColoredTeams: Record<string, Team> = {
Nations: "Nations",
} as const;
export enum GameMapType {
World = "World",
WorldInverted = "World Inverted",
GiantWorldMap = "Giant World Map",
Europe = "Europe",
EuropeClassic = "Europe Classic",
Mena = "Mena",
NorthAmerica = "North America",
SouthAmerica = "South America",
Oceania = "Oceania",
BlackSea = "Black Sea",
Africa = "Africa",
Pangaea = "Pangaea",
Asia = "Asia",
Mars = "Mars",
BritanniaClassic = "Britannia Classic",
Britannia = "Britannia",
GatewayToTheAtlantic = "Gateway to the Atlantic",
Australia = "Australia",
Iceland = "Iceland",
EastAsia = "East Asia",
BetweenTwoSeas = "Between Two Seas",
FaroeIslands = "Faroe Islands",
DeglaciatedAntarctica = "Deglaciated Antarctica",
FalklandIslands = "Falkland Islands",
Baikal = "Baikal",
Halkidiki = "Halkidiki",
StraitOfGibraltar = "Strait of Gibraltar",
Italia = "Italia",
Japan = "Japan",
Pluto = "Pluto",
Montreal = "Montreal",
NewYorkCity = "New York City",
Achiran = "Achiran",
BaikalNukeWars = "Baikal Nuke Wars",
FourIslands = "Four Islands",
Svalmel = "Svalmel",
GulfOfStLawrence = "Gulf of St. Lawrence",
Lisbon = "Lisbon",
Manicouagan = "Manicouagan",
Lemnos = "Lemnos",
Tourney1 = "Tourney 2 Teams",
Tourney2 = "Tourney 3 Teams",
Tourney3 = "Tourney 4 Teams",
Tourney4 = "Tourney 8 Teams",
Passage = "Passage",
Sierpinski = "Sierpinski",
TheBox = "The Box",
TwoLakes = "Two Lakes",
StraitOfHormuz = "Strait of Hormuz",
Surrounded = "Surrounded",
Didier = "Didier",
DidierFrance = "Didier France",
AmazonRiver = "Amazon River",
BosphorusStraits = "Bosphorus Straits",
BeringStrait = "Bering Strait",
Yenisei = "Yenisei",
TradersDream = "Traders Dream",
Hawaii = "Hawaii",
Alps = "Alps",
NileDelta = "Nile Delta",
Arctic = "Arctic",
SanFrancisco = "San Francisco",
Aegean = "Aegean",
MilkyWay = "MilkyWay",
MareNostrum = "Mare Nostrum",
Dyslexdria = "Dyslexdria",
GreatLakes = "Great Lakes",
StraitOfMalacca = "Strait Of Malacca",
Luna = "Luna",
Conakry = "Conakry",
Caucasus = "Caucasus",
LosAngeles = "Los Angeles",
BeringSea = "Bering Sea",
Antarctica = "Antarctica",
ArchipelagoSea = "ArchipelagoSea",
BajaCalifornia = "Baja California",
MiddleEast = "Middle East",
TaiwanStrait = "Taiwan Strait",
IndianSubcontinent = "Indian Subcontinent",
DanishStraits = "Danish Straits",
NorthwestPassage = "Northwest Passage",
Venice = "Venice",
Korea = "Korea",
Balkans = "Balkans",
YellowSea = "Yellow Sea",
Labyrinth = "Labyrinth",
Caribbean = "Caribbean",
Onion = "Onion",
ChoppingBlock = "Chopping Block",
SoutheastAsia = "SoutheastAsia",
MississippiRiver = "Mississippi River",
Titan = "Titan",
HongKong = "Hong Kong",
JuanDeFucaStrait = "Juan De Fuca Strait",
}
export type GameMapName = keyof typeof GameMapType;
export const mapCategories: Record<string, GameMapType[]> = {
continental: [
GameMapType.World,
GameMapType.GiantWorldMap,
GameMapType.NorthAmerica,
GameMapType.SouthAmerica,
GameMapType.Europe,
GameMapType.EuropeClassic,
GameMapType.Asia,
GameMapType.Africa,
GameMapType.Oceania,
GameMapType.Antarctica,
],
regional: [
GameMapType.BritanniaClassic,
GameMapType.Britannia,
GameMapType.BlackSea,
GameMapType.GatewayToTheAtlantic,
GameMapType.BetweenTwoSeas,
GameMapType.Iceland,
GameMapType.EastAsia,
GameMapType.Mena,
GameMapType.Australia,
GameMapType.FaroeIslands,
GameMapType.FalklandIslands,
GameMapType.Baikal,
GameMapType.Halkidiki,
GameMapType.StraitOfGibraltar,
GameMapType.Italia,
GameMapType.Japan,
GameMapType.Montreal,
GameMapType.GulfOfStLawrence,
GameMapType.Lisbon,
GameMapType.NewYorkCity,
GameMapType.Manicouagan,
GameMapType.Lemnos,
GameMapType.TwoLakes,
GameMapType.StraitOfHormuz,
GameMapType.AmazonRiver,
GameMapType.BosphorusStraits,
GameMapType.BeringStrait,
GameMapType.Yenisei,
GameMapType.Hawaii,
GameMapType.Alps,
GameMapType.NileDelta,
GameMapType.Arctic,
GameMapType.SanFrancisco,
GameMapType.Aegean,
GameMapType.MareNostrum,
GameMapType.GreatLakes,
GameMapType.StraitOfMalacca,
GameMapType.Conakry,
GameMapType.Caucasus,
GameMapType.LosAngeles,
GameMapType.BeringSea,
GameMapType.ArchipelagoSea,
GameMapType.BajaCalifornia,
GameMapType.Korea,
GameMapType.MiddleEast,
GameMapType.TaiwanStrait,
GameMapType.Balkans,
GameMapType.IndianSubcontinent,
GameMapType.DanishStraits,
GameMapType.NorthwestPassage,
GameMapType.Venice,
GameMapType.YellowSea,
GameMapType.Caribbean,
GameMapType.SoutheastAsia,
GameMapType.MississippiRiver,
GameMapType.HongKong,
GameMapType.JuanDeFucaStrait,
],
fantasy: [
GameMapType.Pangaea,
GameMapType.DeglaciatedAntarctica,
GameMapType.Achiran,
GameMapType.BaikalNukeWars,
GameMapType.FourIslands,
GameMapType.Svalmel,
GameMapType.Surrounded,
GameMapType.TradersDream,
GameMapType.Passage,
GameMapType.Dyslexdria,
GameMapType.WorldInverted,
],
cosmic: [
GameMapType.Luna,
GameMapType.Mars,
GameMapType.Titan,
GameMapType.Pluto,
GameMapType.MilkyWay,
],
arcade: [
GameMapType.TheBox,
GameMapType.ChoppingBlock,
GameMapType.Didier,
GameMapType.DidierFrance,
GameMapType.Labyrinth,
GameMapType.Sierpinski,
GameMapType.Onion,
],
tournament: [
GameMapType.Tourney1,
GameMapType.Tourney2,
GameMapType.Tourney3,
GameMapType.Tourney4,
],
};
// GameMapType, GameMapName, mapCategories, mapTranslationKeys, and
// multiplayerFrequency are generated from
// map-generator/assets/maps/<map>/info.json by the map-generator
// (`npm run gen-maps`).
export {
GameMapType,
mapCategories,
mapTranslationKeys,
multiplayerFrequency,
type GameMapName,
} from "./Maps.gen";
export enum GameType {
Singleplayer = "Singleplayer",
+428
View File
@@ -0,0 +1,428 @@
// Code generated by map-generator; DO NOT EDIT.
// Map metadata lives in map-generator/assets/maps/<map>/info.json.
// Regenerate with `npm run gen-maps`.
export enum GameMapType {
Achiran = "Achiran", // map-generator/assets/maps/achiran/info.json
Aegean = "Aegean", // map-generator/assets/maps/aegean/info.json
Africa = "Africa", // map-generator/assets/maps/africa/info.json
Alps = "Alps", // map-generator/assets/maps/alps/info.json
AmazonRiver = "Amazon River", // map-generator/assets/maps/amazonriver/info.json
Antarctica = "Antarctica", // map-generator/assets/maps/antarctica/info.json
ArchipelagoSea = "ArchipelagoSea", // map-generator/assets/maps/archipelagosea/info.json
Arctic = "Arctic", // map-generator/assets/maps/arctic/info.json
Asia = "Asia", // map-generator/assets/maps/asia/info.json
Australia = "Australia", // map-generator/assets/maps/australia/info.json
Baikal = "Baikal", // map-generator/assets/maps/baikal/info.json
BaikalNukeWars = "Baikal Nuke Wars", // map-generator/assets/maps/baikalnukewars/info.json
BajaCalifornia = "Baja California", // map-generator/assets/maps/bajacalifornia/info.json
Balkans = "Balkans", // map-generator/assets/maps/balkans/info.json
BeringSea = "Bering Sea", // map-generator/assets/maps/beringsea/info.json
BeringStrait = "Bering Strait", // map-generator/assets/maps/beringstrait/info.json
BetweenTwoSeas = "Between Two Seas", // map-generator/assets/maps/betweentwoseas/info.json
BlackSea = "Black Sea", // map-generator/assets/maps/blacksea/info.json
BosphorusStraits = "Bosphorus Straits", // map-generator/assets/maps/bosphorusstraits/info.json
Britannia = "Britannia", // map-generator/assets/maps/britannia/info.json
BritanniaClassic = "Britannia Classic", // map-generator/assets/maps/britanniaclassic/info.json
Caribbean = "Caribbean", // map-generator/assets/maps/caribbean/info.json
Caucasus = "Caucasus", // map-generator/assets/maps/caucasus/info.json
ChoppingBlock = "Chopping Block", // map-generator/assets/maps/choppingblock/info.json
Conakry = "Conakry", // map-generator/assets/maps/conakry/info.json
DanishStraits = "Danish Straits", // map-generator/assets/maps/danishstraits/info.json
DeglaciatedAntarctica = "Deglaciated Antarctica", // map-generator/assets/maps/deglaciatedantarctica/info.json
Didier = "Didier", // map-generator/assets/maps/didier/info.json
DidierFrance = "Didier France", // map-generator/assets/maps/didierfrance/info.json
Dyslexdria = "Dyslexdria", // map-generator/assets/maps/dyslexdria/info.json
EastAsia = "East Asia", // map-generator/assets/maps/eastasia/info.json
Europe = "Europe", // map-generator/assets/maps/europe/info.json
EuropeClassic = "Europe Classic", // map-generator/assets/maps/europeclassic/info.json
FalklandIslands = "Falkland Islands", // map-generator/assets/maps/falklandislands/info.json
FaroeIslands = "Faroe Islands", // map-generator/assets/maps/faroeislands/info.json
FourIslands = "Four Islands", // map-generator/assets/maps/fourislands/info.json
GatewayToTheAtlantic = "Gateway to the Atlantic", // map-generator/assets/maps/gatewaytotheatlantic/info.json
GiantWorldMap = "Giant World Map", // map-generator/assets/maps/giantworldmap/info.json
GreatLakes = "Great Lakes", // map-generator/assets/maps/greatlakes/info.json
GulfOfStLawrence = "Gulf of St. Lawrence", // map-generator/assets/maps/gulfofstlawrence/info.json
Halkidiki = "Halkidiki", // map-generator/assets/maps/halkidiki/info.json
Hawaii = "Hawaii", // map-generator/assets/maps/hawaii/info.json
HongKong = "Hong Kong", // map-generator/assets/maps/hongkong/info.json
Iceland = "Iceland", // map-generator/assets/maps/iceland/info.json
IndianSubcontinent = "Indian Subcontinent", // map-generator/assets/maps/indiansubcontinent/info.json
Italia = "Italia", // map-generator/assets/maps/italia/info.json
Japan = "Japan", // map-generator/assets/maps/japan/info.json
JuanDeFucaStrait = "Juan De Fuca Strait", // map-generator/assets/maps/juandefucastrait/info.json
Korea = "Korea", // map-generator/assets/maps/korea/info.json
Labyrinth = "Labyrinth", // map-generator/assets/maps/labyrinth/info.json
Lemnos = "Lemnos", // map-generator/assets/maps/lemnos/info.json
Lisbon = "Lisbon", // map-generator/assets/maps/lisbon/info.json
LosAngeles = "Los Angeles", // map-generator/assets/maps/losangeles/info.json
Luna = "Luna", // map-generator/assets/maps/luna/info.json
Manicouagan = "Manicouagan", // map-generator/assets/maps/manicouagan/info.json
MareNostrum = "Mare Nostrum", // map-generator/assets/maps/marenostrum/info.json
Mars = "Mars", // map-generator/assets/maps/mars/info.json
Mena = "Mena", // map-generator/assets/maps/mena/info.json
MiddleEast = "Middle East", // map-generator/assets/maps/middleeast/info.json
MilkyWay = "MilkyWay", // map-generator/assets/maps/milkyway/info.json
MississippiRiver = "Mississippi River", // map-generator/assets/maps/mississippiriver/info.json
Montreal = "Montreal", // map-generator/assets/maps/montreal/info.json
NewYorkCity = "New York City", // map-generator/assets/maps/newyorkcity/info.json
NileDelta = "Nile Delta", // map-generator/assets/maps/niledelta/info.json
NorthAmerica = "North America", // map-generator/assets/maps/northamerica/info.json
NorthwestPassage = "Northwest Passage", // map-generator/assets/maps/northwestpassage/info.json
Oceania = "Oceania", // map-generator/assets/maps/oceania/info.json
Onion = "Onion", // map-generator/assets/maps/onion/info.json
Pangaea = "Pangaea", // map-generator/assets/maps/pangaea/info.json
Passage = "Passage", // map-generator/assets/maps/passage/info.json
Pluto = "Pluto", // map-generator/assets/maps/pluto/info.json
SanFrancisco = "San Francisco", // map-generator/assets/maps/sanfrancisco/info.json
Sierpinski = "Sierpinski", // map-generator/assets/maps/sierpinski/info.json
SouthAmerica = "South America", // map-generator/assets/maps/southamerica/info.json
SoutheastAsia = "SoutheastAsia", // map-generator/assets/maps/southeastasia/info.json
StraitOfGibraltar = "Strait of Gibraltar", // map-generator/assets/maps/straitofgibraltar/info.json
StraitOfHormuz = "Strait of Hormuz", // map-generator/assets/maps/straitofhormuz/info.json
StraitOfMalacca = "Strait Of Malacca", // map-generator/assets/maps/straitofmalacca/info.json
Surrounded = "Surrounded", // map-generator/assets/maps/surrounded/info.json
Svalmel = "Svalmel", // map-generator/assets/maps/svalmel/info.json
TaiwanStrait = "Taiwan Strait", // map-generator/assets/maps/taiwanstrait/info.json
TheBox = "The Box", // map-generator/assets/maps/thebox/info.json
Titan = "Titan", // map-generator/assets/maps/titan/info.json
Tourney1 = "Tourney 2 Teams", // map-generator/assets/maps/tourney1/info.json
Tourney2 = "Tourney 3 Teams", // map-generator/assets/maps/tourney2/info.json
Tourney3 = "Tourney 4 Teams", // map-generator/assets/maps/tourney3/info.json
Tourney4 = "Tourney 8 Teams", // map-generator/assets/maps/tourney4/info.json
TradersDream = "Traders Dream", // map-generator/assets/maps/tradersdream/info.json
TwoLakes = "Two Lakes", // map-generator/assets/maps/twolakes/info.json
Venice = "Venice", // map-generator/assets/maps/venice/info.json
World = "World", // map-generator/assets/maps/world/info.json
WorldInverted = "World Inverted", // map-generator/assets/maps/worldinverted/info.json
YellowSea = "Yellow Sea", // map-generator/assets/maps/yellowsea/info.json
Yenisei = "Yenisei", // map-generator/assets/maps/yenisei/info.json
}
export type GameMapName = keyof typeof GameMapType;
export const mapCategories: Record<string, GameMapType[]> = {
featured: [
GameMapType.World,
GameMapType.Europe,
GameMapType.NorthAmerica,
GameMapType.SouthAmerica,
GameMapType.Asia,
GameMapType.Africa,
GameMapType.Japan,
],
world: [
GameMapType.Dyslexdria,
GameMapType.GiantWorldMap,
GameMapType.World,
GameMapType.WorldInverted,
],
europe: [
GameMapType.Aegean,
GameMapType.Alps,
GameMapType.ArchipelagoSea,
GameMapType.Arctic,
GameMapType.Balkans,
GameMapType.BetweenTwoSeas,
GameMapType.BlackSea,
GameMapType.BosphorusStraits,
GameMapType.Britannia,
GameMapType.BritanniaClassic,
GameMapType.Caucasus,
GameMapType.DanishStraits,
GameMapType.Europe,
GameMapType.EuropeClassic,
GameMapType.FaroeIslands,
GameMapType.GatewayToTheAtlantic,
GameMapType.Halkidiki,
GameMapType.Iceland,
GameMapType.Italia,
GameMapType.Lemnos,
GameMapType.Lisbon,
GameMapType.MareNostrum,
GameMapType.StraitOfGibraltar,
GameMapType.TwoLakes,
GameMapType.Venice,
],
asia: [
GameMapType.Asia,
GameMapType.Baikal,
GameMapType.BeringSea,
GameMapType.BeringStrait,
GameMapType.BetweenTwoSeas,
GameMapType.BlackSea,
GameMapType.BosphorusStraits,
GameMapType.Caucasus,
GameMapType.EastAsia,
GameMapType.HongKong,
GameMapType.IndianSubcontinent,
GameMapType.Japan,
GameMapType.Korea,
GameMapType.Mena,
GameMapType.MiddleEast,
GameMapType.SoutheastAsia,
GameMapType.StraitOfHormuz,
GameMapType.StraitOfMalacca,
GameMapType.TaiwanStrait,
GameMapType.YellowSea,
GameMapType.Yenisei,
],
north_america: [
GameMapType.Arctic,
GameMapType.BajaCalifornia,
GameMapType.BeringSea,
GameMapType.BeringStrait,
GameMapType.Caribbean,
GameMapType.GreatLakes,
GameMapType.GulfOfStLawrence,
GameMapType.Hawaii,
GameMapType.JuanDeFucaStrait,
GameMapType.LosAngeles,
GameMapType.Manicouagan,
GameMapType.MississippiRiver,
GameMapType.Montreal,
GameMapType.NewYorkCity,
GameMapType.NorthAmerica,
GameMapType.NorthwestPassage,
GameMapType.SanFrancisco,
],
africa: [
GameMapType.Africa,
GameMapType.Conakry,
GameMapType.Mena,
GameMapType.NileDelta,
GameMapType.StraitOfGibraltar,
],
south_america: [
GameMapType.AmazonRiver,
GameMapType.FalklandIslands,
GameMapType.SouthAmerica,
],
oceania: [GameMapType.Australia, GameMapType.Hawaii, GameMapType.Oceania],
antarctica: [GameMapType.Antarctica, GameMapType.DeglaciatedAntarctica],
cosmic: [
GameMapType.Luna,
GameMapType.Mars,
GameMapType.MilkyWay,
GameMapType.Pluto,
GameMapType.Titan,
],
tournament: [
GameMapType.Tourney1,
GameMapType.Tourney2,
GameMapType.Tourney3,
GameMapType.Tourney4,
],
other: [
GameMapType.Achiran,
GameMapType.BaikalNukeWars,
GameMapType.ChoppingBlock,
GameMapType.Didier,
GameMapType.DidierFrance,
GameMapType.FourIslands,
GameMapType.Labyrinth,
GameMapType.Onion,
GameMapType.Pangaea,
GameMapType.Passage,
GameMapType.Sierpinski,
GameMapType.Surrounded,
GameMapType.Svalmel,
GameMapType.TheBox,
GameMapType.TradersDream,
],
};
export const mapTranslationKeys: Record<GameMapType, string> = {
[GameMapType.Achiran]: "map.achiran",
[GameMapType.Aegean]: "map.aegean",
[GameMapType.Africa]: "map.africa",
[GameMapType.Alps]: "map.alps",
[GameMapType.AmazonRiver]: "map.amazonriver",
[GameMapType.Antarctica]: "map.antarctica",
[GameMapType.ArchipelagoSea]: "map.archipelagosea",
[GameMapType.Arctic]: "map.arctic",
[GameMapType.Asia]: "map.asia",
[GameMapType.Australia]: "map.australia",
[GameMapType.Baikal]: "map.baikal",
[GameMapType.BaikalNukeWars]: "map.baikalnukewars",
[GameMapType.BajaCalifornia]: "map.bajacalifornia",
[GameMapType.Balkans]: "map.balkans",
[GameMapType.BeringSea]: "map.beringsea",
[GameMapType.BeringStrait]: "map.beringstrait",
[GameMapType.BetweenTwoSeas]: "map.betweentwoseas",
[GameMapType.BlackSea]: "map.blacksea",
[GameMapType.BosphorusStraits]: "map.bosphorusstraits",
[GameMapType.Britannia]: "map.britannia",
[GameMapType.BritanniaClassic]: "map.britanniaclassic",
[GameMapType.Caribbean]: "map.caribbean",
[GameMapType.Caucasus]: "map.caucasus",
[GameMapType.ChoppingBlock]: "map.choppingblock",
[GameMapType.Conakry]: "map.conakry",
[GameMapType.DanishStraits]: "map.danishstraits",
[GameMapType.DeglaciatedAntarctica]: "map.deglaciatedantarctica",
[GameMapType.Didier]: "map.didier",
[GameMapType.DidierFrance]: "map.didierfrance",
[GameMapType.Dyslexdria]: "map.dyslexdria",
[GameMapType.EastAsia]: "map.eastasia",
[GameMapType.Europe]: "map.europe",
[GameMapType.EuropeClassic]: "map.europeclassic",
[GameMapType.FalklandIslands]: "map.falklandislands",
[GameMapType.FaroeIslands]: "map.faroeislands",
[GameMapType.FourIslands]: "map.fourislands",
[GameMapType.GatewayToTheAtlantic]: "map.gatewaytotheatlantic",
[GameMapType.GiantWorldMap]: "map.giantworldmap",
[GameMapType.GreatLakes]: "map.greatlakes",
[GameMapType.GulfOfStLawrence]: "map.gulfofstlawrence",
[GameMapType.Halkidiki]: "map.halkidiki",
[GameMapType.Hawaii]: "map.hawaii",
[GameMapType.HongKong]: "map.hongkong",
[GameMapType.Iceland]: "map.iceland",
[GameMapType.IndianSubcontinent]: "map.indiansubcontinent",
[GameMapType.Italia]: "map.italia",
[GameMapType.Japan]: "map.japan",
[GameMapType.JuanDeFucaStrait]: "map.juandefucastrait",
[GameMapType.Korea]: "map.korea",
[GameMapType.Labyrinth]: "map.labyrinth",
[GameMapType.Lemnos]: "map.lemnos",
[GameMapType.Lisbon]: "map.lisbon",
[GameMapType.LosAngeles]: "map.losangeles",
[GameMapType.Luna]: "map.luna",
[GameMapType.Manicouagan]: "map.manicouagan",
[GameMapType.MareNostrum]: "map.marenostrum",
[GameMapType.Mars]: "map.mars",
[GameMapType.Mena]: "map.mena",
[GameMapType.MiddleEast]: "map.middleeast",
[GameMapType.MilkyWay]: "map.milkyway",
[GameMapType.MississippiRiver]: "map.mississippiriver",
[GameMapType.Montreal]: "map.montreal",
[GameMapType.NewYorkCity]: "map.newyorkcity",
[GameMapType.NileDelta]: "map.niledelta",
[GameMapType.NorthAmerica]: "map.northamerica",
[GameMapType.NorthwestPassage]: "map.northwestpassage",
[GameMapType.Oceania]: "map.oceania",
[GameMapType.Onion]: "map.onion",
[GameMapType.Pangaea]: "map.pangaea",
[GameMapType.Passage]: "map.passage",
[GameMapType.Pluto]: "map.pluto",
[GameMapType.SanFrancisco]: "map.sanfrancisco",
[GameMapType.Sierpinski]: "map.sierpinski",
[GameMapType.SouthAmerica]: "map.southamerica",
[GameMapType.SoutheastAsia]: "map.southeastasia",
[GameMapType.StraitOfGibraltar]: "map.straitofgibraltar",
[GameMapType.StraitOfHormuz]: "map.straitofhormuz",
[GameMapType.StraitOfMalacca]: "map.straitofmalacca",
[GameMapType.Surrounded]: "map.surrounded",
[GameMapType.Svalmel]: "map.svalmel",
[GameMapType.TaiwanStrait]: "map.taiwanstrait",
[GameMapType.TheBox]: "map.thebox",
[GameMapType.Titan]: "map.titan",
[GameMapType.Tourney1]: "map.tourney1",
[GameMapType.Tourney2]: "map.tourney2",
[GameMapType.Tourney3]: "map.tourney3",
[GameMapType.Tourney4]: "map.tourney4",
[GameMapType.TradersDream]: "map.tradersdream",
[GameMapType.TwoLakes]: "map.twolakes",
[GameMapType.Venice]: "map.venice",
[GameMapType.World]: "map.world",
[GameMapType.WorldInverted]: "map.worldinverted",
[GameMapType.YellowSea]: "map.yellowsea",
[GameMapType.Yenisei]: "map.yenisei",
};
// How many times each map appears in the multiplayer playlist.
export const multiplayerFrequency: Record<GameMapName, number> = {
Achiran: 5,
Aegean: 6,
Africa: 7,
Alps: 4,
AmazonRiver: 3,
Antarctica: 1,
ArchipelagoSea: 3,
Arctic: 6,
Asia: 6,
Australia: 4,
Baikal: 5,
BaikalNukeWars: 0,
BajaCalifornia: 4,
Balkans: 6,
BeringSea: 5,
BeringStrait: 2,
BetweenTwoSeas: 5,
BlackSea: 6,
BosphorusStraits: 3,
Britannia: 5,
BritanniaClassic: 0,
Caribbean: 5,
Caucasus: 5,
ChoppingBlock: 5,
Conakry: 3,
DanishStraits: 5,
DeglaciatedAntarctica: 4,
Didier: 1,
DidierFrance: 1,
Dyslexdria: 8,
EastAsia: 5,
Europe: 7,
EuropeClassic: 0,
FalklandIslands: 4,
FaroeIslands: 4,
FourIslands: 4,
GatewayToTheAtlantic: 5,
GiantWorldMap: 0,
GreatLakes: 6,
GulfOfStLawrence: 4,
Halkidiki: 4,
Hawaii: 4,
HongKong: 6,
Iceland: 4,
IndianSubcontinent: 8,
Italia: 6,
Japan: 6,
JuanDeFucaStrait: 4,
Korea: 5,
Labyrinth: 6,
Lemnos: 3,
Lisbon: 4,
LosAngeles: 8,
Luna: 6,
Manicouagan: 4,
MareNostrum: 6,
Mars: 3,
Mena: 6,
MiddleEast: 8,
MilkyWay: 8,
MississippiRiver: 3,
Montreal: 6,
NewYorkCity: 3,
NileDelta: 4,
NorthAmerica: 5,
NorthwestPassage: 5,
Oceania: 0,
Onion: 2,
Pangaea: 5,
Passage: 4,
Pluto: 6,
SanFrancisco: 3,
Sierpinski: 10,
SouthAmerica: 5,
SoutheastAsia: 5,
StraitOfGibraltar: 5,
StraitOfHormuz: 4,
StraitOfMalacca: 4,
Surrounded: 4,
Svalmel: 8,
TaiwanStrait: 5,
TheBox: 3,
Titan: 3,
Tourney1: 0,
Tourney2: 0,
Tourney3: 0,
Tourney4: 0,
TradersDream: 4,
TwoLakes: 6,
Venice: 6,
World: 20,
WorldInverted: 8,
YellowSea: 5,
Yenisei: 6,
};