Adds Map of Vietnam (#4592)

> **Before opening a PR:** discuss new features on
[Discord](https://discord.gg/K9zernJB5z) first, and file bugs or small
improvements as
[issues](https://github.com/openfrontio/OpenFrontIO/issues/new/choose).
You must be assigned to an `approved` issue — unsolicited PRs will be
auto-closed.

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

Resolves #4591 (issue number)

## Description:

- long skinny map for the Vietnam War simulation and the Vietnamese
audience in the game. Uses impassable terrain. Nations are provinces
that existed in the 60s-70s . Additionals are modern provinces.
- 15 nations
- 62 including additional
- 2 Teams spawns, teams are divided on the 17th Parallel dividing North
And South Vietnam during the war
- More chance to be a 2 team game
- Unfortunately the nations names do not have vietnamese accent markers
because it breaks the game

"height": 3560,
    "num_land_tiles": 1504115,
    "width": 1976

---
<img width="1979" height="3563" alt="image"
src="https://github.com/user-attachments/assets/81b205e2-7126-4f7e-aba8-b2bb1efd7499"
/>
<img width="395" height="489" alt="Screenshot 2026-07-12 205333"
src="https://github.com/user-attachments/assets/f3cc4026-36df-43ee-bca5-e41b1350bdf8"
/>


## 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

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

DISCORD_USERNAME crunchybbbbb
This commit is contained in:
crunchybbb
2026-07-28 09:35:25 -07:00
committed by GitHub
parent d35e60466a
commit 73b086a187
9 changed files with 4726 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

+203
View File
@@ -0,0 +1,203 @@
{
"additionalNations": [
{
"coordinates": [1085, 1363],
"flag": "vn",
"name": "Ha Tinh"
},
{
"coordinates": [1093, 766],
"flag": "vn",
"name": "Ninh Binh"
},
{
"coordinates": [1158, 696],
"flag": "vn",
"name": "Hung Yen"
},
{
"coordinates": [1237, 514],
"flag": "vn",
"name": "Bac Ninh"
},
{
"coordinates": [1184, 362],
"flag": "vn",
"name": "Lang Son"
},
{
"coordinates": [984, 384],
"flag": "vn",
"name": "Thai Nguyen"
},
{
"coordinates": [832, 658],
"flag": "vn",
"name": "Phu Tho"
},
{
"coordinates": [383, 419],
"flag": "vn",
"name": "Dien Bien"
},
{
"coordinates": [559, 261],
"flag": "vn",
"name": "Lai Chau"
},
{
"coordinates": [1086, 216],
"flag": "vn",
"name": "Cao Bang"
},
{
"coordinates": [748, 406],
"flag": "vn",
"name": "Lao Cai"
},
{
"coordinates": [1656, 2179],
"flag": "South Vietnam",
"name": "Quang Ngai"
},
{
"coordinates": [1693, 2401],
"flag": "South Vietnam",
"name": "Gia Lai"
},
{
"coordinates": [1744, 2797],
"flag": "South Vietnam",
"name": "Khanh Hoa"
},
{
"coordinates": [1373, 2862],
"flag": "South Vietnam",
"name": "Dong Nai"
},
{
"coordinates": [1034, 3089],
"flag": "South Vietnam",
"name": "Dong Thap"
},
{
"coordinates": [1146, 3248],
"flag": "South Vietnam",
"name": "Vinh Long"
},
{
"coordinates": [885, 3379],
"flag": "South Vietnam",
"name": "Ca Mau"
},
{
"coordinates": [898, 3175],
"flag": "South Vietnam",
"name": "An Giang"
},
{
"coordinates": [1180, 2921],
"flag": "South Vietnam",
"name": "Tay Ninh"
}
],
"id": "Vietnam",
"name": "Vietnam",
"translation_key": "map.vietnam",
"categories": ["new", "countries", "asia"],
"multiplayer_frequency": 4,
"special_team_count": 2,
"nations": [
{
"coordinates": [1227, 3020],
"flag": "South Vietnam",
"name": "Saigon"
},
{
"coordinates": [1038, 3287],
"flag": "South Vietnam",
"name": "Can Tho"
},
{
"coordinates": [1670, 2588],
"flag": "South Vietnam",
"name": "Dak Lak"
},
{
"coordinates": [1633, 1983],
"flag": "South Vietnam",
"name": "Da Nang"
},
{
"coordinates": [1549, 2868],
"flag": "South Vietnam",
"name": "Lam Dong"
},
{
"coordinates": [1547, 1822],
"flag": "South Vietnam",
"name": "Hue"
},
{
"coordinates": [617, 3129],
"flag": "South Vietnam",
"name": "Phu Quoc"
},
{
"coordinates": [899, 1045],
"flag": "vn",
"name": "Nghe An"
},
{
"coordinates": [1248, 1584],
"flag": "South Vietnam",
"name": "Quang Tri"
},
{
"coordinates": [1000, 830],
"flag": "vn",
"name": "Thanh Hoa"
},
{
"coordinates": [1016, 584],
"flag": "vn",
"name": "Ha Noi"
},
{
"coordinates": [1224, 628],
"flag": "vn",
"name": "Hai Phong"
},
{
"coordinates": [1426, 487],
"flag": "vn",
"name": "Quang Ninh"
},
{
"coordinates": [853, 237],
"flag": "vn",
"name": "Tuyen Quang"
},
{
"coordinates": [609, 538],
"flag": "vn",
"name": "Son La"
}
],
"teamGameSpawnAreas": {
"2": [
{
"height": 1360,
"width": 1976,
"x": 0,
"y": 0
},
{
"height": 2200,
"width": 1976,
"x": 0,
"y": 1360
}
]
}
}
+1
View File
@@ -1088,6 +1088,7 @@
"twolakes": "Two Lakes",
"unitedstates": "United States",
"venice": "Venice",
"vietnam": "Vietnam",
"warshipwarship": "Warship Warship",
"world": "World",
"worldinverted": "World Inverted",
+218
View File
@@ -0,0 +1,218 @@
{
"additionalNations": [
{
"coordinates": [1085, 1363],
"flag": "vn",
"name": "Ha Tinh"
},
{
"coordinates": [1093, 766],
"flag": "vn",
"name": "Ninh Binh"
},
{
"coordinates": [1158, 696],
"flag": "vn",
"name": "Hung Yen"
},
{
"coordinates": [1237, 514],
"flag": "vn",
"name": "Bac Ninh"
},
{
"coordinates": [1184, 362],
"flag": "vn",
"name": "Lang Son"
},
{
"coordinates": [984, 384],
"flag": "vn",
"name": "Thai Nguyen"
},
{
"coordinates": [832, 658],
"flag": "vn",
"name": "Phu Tho"
},
{
"coordinates": [383, 419],
"flag": "vn",
"name": "Dien Bien"
},
{
"coordinates": [559, 261],
"flag": "vn",
"name": "Lai Chau"
},
{
"coordinates": [1086, 216],
"flag": "vn",
"name": "Cao Bang"
},
{
"coordinates": [748, 406],
"flag": "vn",
"name": "Lao Cai"
},
{
"coordinates": [1656, 2179],
"flag": "South Vietnam",
"name": "Quang Ngai"
},
{
"coordinates": [1693, 2401],
"flag": "South Vietnam",
"name": "Gia Lai"
},
{
"coordinates": [1744, 2797],
"flag": "South Vietnam",
"name": "Khanh Hoa"
},
{
"coordinates": [1373, 2862],
"flag": "South Vietnam",
"name": "Dong Nai"
},
{
"coordinates": [1034, 3089],
"flag": "South Vietnam",
"name": "Dong Thap"
},
{
"coordinates": [1146, 3248],
"flag": "South Vietnam",
"name": "Vinh Long"
},
{
"coordinates": [885, 3379],
"flag": "South Vietnam",
"name": "Ca Mau"
},
{
"coordinates": [898, 3175],
"flag": "South Vietnam",
"name": "An Giang"
},
{
"coordinates": [1180, 2921],
"flag": "South Vietnam",
"name": "Tay Ninh"
}
],
"categories": ["new", "countries", "asia"],
"id": "Vietnam",
"map": {
"height": 3560,
"num_land_tiles": 1504070,
"width": 1976
},
"map16x": {
"height": 890,
"num_land_tiles": 90607,
"width": 494
},
"map4x": {
"height": 1780,
"num_land_tiles": 371352,
"width": 988
},
"multiplayer_frequency": 4,
"name": "Vietnam",
"nations": [
{
"coordinates": [1227, 3020],
"flag": "South Vietnam",
"name": "Saigon"
},
{
"coordinates": [1038, 3287],
"flag": "South Vietnam",
"name": "Can Tho"
},
{
"coordinates": [1670, 2588],
"flag": "South Vietnam",
"name": "Dak Lak"
},
{
"coordinates": [1633, 1983],
"flag": "South Vietnam",
"name": "Da Nang"
},
{
"coordinates": [1549, 2868],
"flag": "South Vietnam",
"name": "Lam Dong"
},
{
"coordinates": [1547, 1822],
"flag": "South Vietnam",
"name": "Hue"
},
{
"coordinates": [617, 3129],
"flag": "South Vietnam",
"name": "Phu Quoc"
},
{
"coordinates": [899, 1045],
"flag": "vn",
"name": "Nghe An"
},
{
"coordinates": [1248, 1584],
"flag": "South Vietnam",
"name": "Quang Tri"
},
{
"coordinates": [1000, 830],
"flag": "vn",
"name": "Thanh Hoa"
},
{
"coordinates": [1016, 584],
"flag": "vn",
"name": "Ha Noi"
},
{
"coordinates": [1224, 628],
"flag": "vn",
"name": "Hai Phong"
},
{
"coordinates": [1426, 487],
"flag": "vn",
"name": "Quang Ninh"
},
{
"coordinates": [853, 237],
"flag": "vn",
"name": "Tuyen Quang"
},
{
"coordinates": [609, 538],
"flag": "vn",
"name": "Son La"
}
],
"special_team_count": 2,
"teamGameSpawnAreas": {
"2": [
{
"height": 1360,
"width": 1976,
"x": 0,
"y": 0
},
{
"height": 2200,
"width": 1976,
"x": 0,
"y": 1360
}
]
},
"translation_key": "map.vietnam"
}
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: 9.6 KiB

+9
View File
@@ -112,6 +112,7 @@ export enum GameMapType {
TwoLakes = "Two Lakes", // map-generator/assets/maps/twolakes/info.json
UnitedStates = "United States", // map-generator/assets/maps/unitedstates/info.json
Venice = "Venice", // map-generator/assets/maps/venice/info.json
Vietnam = "Vietnam", // map-generator/assets/maps/vietnam/info.json
WarshipWarship = "Warship Warship", // map-generator/assets/maps/warshipwarship/info.json
World = "World", // map-generator/assets/maps/world/info.json
WorldInverted = "World Inverted", // map-generator/assets/maps/worldinverted/info.json
@@ -1387,6 +1388,14 @@ export const maps: readonly MapInfo[] = [
categories: ["europe"],
multiplayerFrequency: 6,
},
{
id: "Vietnam",
type: GameMapType.Vietnam,
translationKey: "map.vietnam",
categories: ["new", "countries", "asia"],
multiplayerFrequency: 4,
specialTeamCount: 2,
},
{
id: "WarshipWarship",
type: GameMapType.WarshipWarship,