Feat: Sierpinski map - live play-tested (#2819)

## Description:

Map requested by creator on [dev
discord](https://discord.com/channels/1359946986937258015/1458638914012315741/1458638914012315741)
and playtested by 42 players on [Rex's
stream](https://www.youtube.com/watch?v=r9w9nr5Toso), adds map
Sierpinski, which is a sierpinski carpet shape. The map is a "party map"
great for private matches, but is not part of the public map rotation.

<img width="1400" height="1400" alt="image"
src="https://github.com/user-attachments/assets/8eead359-73d5-497f-8fee-40f413a22d0e"
/>



https://github.com/user-attachments/assets/3a726343-18e4-4f91-9f5c-1fff459d5a5f



## Please complete the following:

- [x] I have added screenshots for all UI updates
- [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
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

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

bijx

---------

Co-authored-by: iamlewis <lewismmmm@gmail.com>
This commit is contained in:
bijx
2026-01-08 23:01:43 -05:00
committed by GitHub
parent eaef00e05c
commit 8b6dfeaf4a
12 changed files with 126 additions and 2 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,50 @@
{
"name": "Sierpinski",
"nations": [
{
"coordinates": [216, 701],
"name": "West",
"flag": ""
},
{
"coordinates": [226, 240],
"name": "North West",
"flag": ""
},
{
"coordinates": [679, 238],
"name": "North",
"flag": ""
},
{
"coordinates": [1160, 229],
"name": "North East",
"flag": ""
},
{
"coordinates": [1163, 711],
"name": "East",
"flag": ""
},
{
"coordinates": [1146, 1162],
"name": "South East",
"flag": ""
},
{
"coordinates": [684, 1175],
"name": "South",
"flag": ""
},
{
"coordinates": [228, 1183],
"name": "South West",
"flag": ""
},
{
"coordinates": [700, 694],
"name": "Center",
"flag": ""
}
]
}
+1
View File
@@ -56,6 +56,7 @@ var maps = []struct {
{Name: "oceania"},
{Name: "pangaea"},
{Name: "pluto"},
{Name: "sierpinski"},
{Name: "southamerica"},
{Name: "straitofgibraltar"},
{Name: "surrounded"},
+3 -1
View File
@@ -252,6 +252,7 @@
"svalmel": "Svalmel",
"manicouagan": "Manicouagan",
"lemnos": "Lemnos",
"sierpinski": "Sierpinski",
"twolakes": "Two Lakes",
"straitofhormuz": "Strait of Hormuz",
"surrounded": "Surrounded",
@@ -261,7 +262,8 @@
"map_categories": {
"continental": "Continental",
"regional": "Regional",
"fantasy": "Other"
"fantasy": "Other",
"arcade": "Arcade"
},
"map_component": {
"loading": "Loading..."
+65
View File
@@ -0,0 +1,65 @@
{
"map": {
"height": 1400,
"num_land_tiles": 582988,
"width": 1400
},
"map16x": {
"height": 350,
"num_land_tiles": 34656,
"width": 350
},
"map4x": {
"height": 700,
"num_land_tiles": 143268,
"width": 700
},
"name": "Sierpinski",
"nations": [
{
"coordinates": [216, 701],
"flag": "",
"name": "West"
},
{
"coordinates": [226, 240],
"flag": "",
"name": "North West"
},
{
"coordinates": [679, 238],
"flag": "",
"name": "North"
},
{
"coordinates": [1160, 229],
"flag": "",
"name": "North East"
},
{
"coordinates": [1163, 711],
"flag": "",
"name": "East"
},
{
"coordinates": [1146, 1162],
"flag": "",
"name": "South East"
},
{
"coordinates": [684, 1175],
"flag": "",
"name": "South"
},
{
"coordinates": [228, 1183],
"flag": "",
"name": "South West"
},
{
"coordinates": [700, 694],
"flag": "",
"name": "Center"
}
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

+1
View File
@@ -50,6 +50,7 @@ export const MapDescription: Record<keyof typeof GameMapType, string> = {
Manicouagan: "Manicouagan",
Lemnos: "Lemnos",
TwoLakes: "Two Lakes",
Sierpinski: "Sierpinski",
StraitOfHormuz: "Strait of Hormuz",
Surrounded: "Surrounded",
Didier: "Didier",
+1
View File
@@ -92,6 +92,7 @@ const numPlayersConfig = {
[GameMapType.Surrounded]: [42, 28, 14], // 3, 2, 1 player(s) per island
[GameMapType.Didier]: [100, 70, 50],
[GameMapType.AmazonRiver]: [50, 40, 30],
[GameMapType.Sierpinski]: [20, 15, 10],
} as const satisfies Record<GameMapType, [number, number, number]>;
export abstract class DefaultServerConfig implements ServerConfig {
+2 -1
View File
@@ -109,6 +109,7 @@ export enum GameMapType {
Lisbon = "Lisbon",
Manicouagan = "Manicouagan",
Lemnos = "Lemnos",
Sierpinski = "Sierpinski",
TwoLakes = "Two Lakes",
StraitOfHormuz = "Strait of Hormuz",
Surrounded = "Surrounded",
@@ -172,8 +173,8 @@ export const mapCategories: Record<string, GameMapType[]> = {
GameMapType.FourIslands,
GameMapType.Svalmel,
GameMapType.Surrounded,
GameMapType.Didier,
],
arcade: [GameMapType.Didier, GameMapType.Sierpinski],
};
export enum GameType {