-
Notifications
You must be signed in to change notification settings - Fork 776
Second Didier Map for Fuze 🧸 #2846
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis PR adds a new map variant called "Didier (France)" to the game system. The changes include creating new map asset files and manifests for the variant, registering it in the game configuration, updating player slot settings for both Didier map versions, and adding localization strings for the new map. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In @resources/lang/en.json:
- Line 236: The change to the "europeclassic" translation key alters
capitalization to "Europe (Classic)" which is unrelated to the Didier (France)
map addition; revert this key's value back to its original casing or move the
capitalization change into its own commit/PR so the map addition stays isolated
— locate the "europeclassic" entry in resources/lang/en.json and either restore
the previous value or create a separate commit that standardizes map name
capitalization.
🧹 Nitpick comments (1)
map-generator/assets/maps/didierfrance/info.json (1)
4-193: Consider standardizing field ordering across info.json and manifest.json files.The field ordering in this file (coordinates, name, flag) differs from the manifest.json file (coordinates, flag, name). While both are valid JSON, consistent ordering improves maintainability.
♻️ Optional standardization to match manifest.json ordering
Consider reordering fields to match the manifest pattern (coordinates, flag, name):
{ "coordinates": [120, 680], - "name": "Brest", - "flag": "fr" + "flag": "fr", + "name": "Brest" },Apply this pattern to all city entries for consistency with the manifest file.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (8)
map-generator/assets/maps/didier/image.pngis excluded by!**/*.pngmap-generator/assets/maps/didierfrance/image.pngis excluded by!**/*.pngresources/maps/didier/map.binis excluded by!**/*.binresources/maps/didier/map16x.binis excluded by!**/*.binresources/maps/didier/map4x.binis excluded by!**/*.binresources/maps/didierfrance/map.binis excluded by!**/*.binresources/maps/didierfrance/map16x.binis excluded by!**/*.binresources/maps/didierfrance/map4x.binis excluded by!**/*.bin
📒 Files selected for processing (12)
map-generator/assets/maps/didier/info.jsonmap-generator/assets/maps/didierfrance/info.jsonmap-generator/main.goresources/lang/en.jsonresources/maps/didier/manifest.jsonresources/maps/didier/thumbnail.webpresources/maps/didierfrance/manifest.jsonresources/maps/didierfrance/thumbnail.webpsrc/client/components/Maps.tssrc/core/configuration/DefaultConfig.tssrc/core/game/Game.tssrc/server/MapPlaylist.ts
🧰 Additional context used
🧠 Learnings (10)
📓 Common learnings
Learnt from: VariableVince
Repo: openfrontio/OpenFrontIO PR: 1655
File: resources/maps/giantworldmap/manifest.json:165-174
Timestamp: 2025-07-31T12:03:08.052Z
Learning: In OpenFrontIO draft PRs, flag names in map manifest files may be placeholders that will be updated to match the actual SVG flag file names when the assets are received. The final naming depends on the actual flag SVG files provided, not code naming conventions.
📚 Learning: 2025-11-12T23:11:34.445Z
Learnt from: MaxHT0x
Repo: openfrontio/OpenFrontIO PR: 2262
File: src/core/configuration/DefaultConfig.ts:806-832
Timestamp: 2025-11-12T23:11:34.445Z
Learning: In src/core/configuration/DefaultConfig.ts, JSDoc documentation for configuration methods should not be added inline, as it was requested that documentation be placed elsewhere in the codebase.
Applied to files:
src/core/configuration/DefaultConfig.ts
📚 Learning: 2025-08-12T00:31:50.144Z
Learnt from: scottanderson
Repo: openfrontio/OpenFrontIO PR: 1752
File: src/core/game/Game.ts:750-752
Timestamp: 2025-08-12T00:31:50.144Z
Learning: In the OpenFrontIO codebase, changes to the PlayerInteraction interface (like adding canDonateGold and canDonateTroops flags) do not require corresponding updates to src/core/Schemas.ts or server serialization code.
Applied to files:
src/core/configuration/DefaultConfig.ts
📚 Learning: 2025-10-20T20:15:28.858Z
Learnt from: sambokai
Repo: openfrontio/OpenFrontIO PR: 2225
File: src/core/execution/FakeHumanExecution.ts:51-51
Timestamp: 2025-10-20T20:15:28.858Z
Learning: In src/core/execution/FakeHumanExecution.ts, game balance constants like MIRV_COOLDOWN_TICKS, MIRV_HESITATION_ODDS, VICTORY_DENIAL_TEAM_THRESHOLD, VICTORY_DENIAL_INDIVIDUAL_THRESHOLD, and STEAMROLL_CITY_GAP_MULTIPLIER are experimental tuning parameters subject to frequent change during balance testing. Do not flag changes to these values as issues or compare them against previous values.
Applied to files:
src/core/configuration/DefaultConfig.ts
📚 Learning: 2025-08-27T08:12:19.610Z
Learnt from: mokizzz
Repo: openfrontio/OpenFrontIO PR: 1940
File: resources/lang/en.json:763-766
Timestamp: 2025-08-27T08:12:19.610Z
Learning: In OpenFrontIO, some country entries in src/client/data/countries.json may have similar names but different codes (e.g., "Empire of Japan" vs "Empire of Japan1"). Each unique code requires its own translation key in resources/lang/en.json after normalization. Always verify against countries.json before suggesting removal of translation keys.
Applied to files:
resources/lang/en.json
📚 Learning: 2025-08-19T11:00:55.422Z
Learnt from: TheGiraffe3
Repo: openfrontio/OpenFrontIO PR: 1864
File: resources/maps/arabianpeninsula/manifest.json:13-170
Timestamp: 2025-08-19T11:00:55.422Z
Learning: In OpenFrontIO, nation names in map manifests are displayed directly in the UI without translation. They do not need to be added to resources/lang/en.json or processed through translateText(). This is the established pattern across all existing maps including Europe, World, Asia, Africa, and others.
Applied to files:
resources/lang/en.jsonresources/maps/didierfrance/manifest.jsonresources/maps/didier/manifest.json
📚 Learning: 2025-07-12T06:35:10.457Z
Learnt from: Aotumuri
Repo: openfrontio/OpenFrontIO PR: 1357
File: resources/lang/ja.json:0-0
Timestamp: 2025-07-12T06:35:10.457Z
Learning: In OpenFrontIO project, "giantworldmap" is the correct localization key name for the giant world map, used consistently across all language files and TypeScript code. Do not suggest renaming this key.
Applied to files:
resources/lang/en.json
📚 Learning: 2025-06-02T14:27:37.609Z
Learnt from: andrewNiziolek
Repo: openfrontio/OpenFrontIO PR: 1007
File: resources/lang/de.json:115-115
Timestamp: 2025-06-02T14:27:37.609Z
Learning: For OpenFrontIO project: When localization keys are renamed in language JSON files, the maintainers separate technical changes from translation content updates. They wait for community translators to update the actual translation values rather than attempting to translate in the same PR. This allows technical changes to proceed while ensuring accurate translations from native speakers.
Applied to files:
resources/lang/en.json
📚 Learning: 2025-05-30T16:16:27.118Z
Learnt from: VariableVince
Repo: openfrontio/OpenFrontIO PR: 957
File: resources/maps/GatewayToTheAtlantic.json:175-179
Timestamp: 2025-05-30T16:16:27.118Z
Learning: In OpenFrontIO project, flag values in map JSON files (like GatewayToTheAtlantic.json) should match the actual flag file names in the resources directory (e.g., "French foreign legion" corresponds to "French foreign legion.svg"). The naming convention follows the file naming system rather than code naming conventions.
Applied to files:
resources/lang/en.jsonmap-generator/assets/maps/didierfrance/info.jsonresources/maps/didierfrance/manifest.json
📚 Learning: 2025-07-12T08:42:02.109Z
Learnt from: Aotumuri
Repo: openfrontio/OpenFrontIO PR: 1357
File: resources/lang/zh_cn.json:527-539
Timestamp: 2025-07-12T08:42:02.109Z
Learning: In OpenFrontIO project, the territory pattern key "embelem" is the correct spelling used in all language files, not "emblem". This is the technical identifier that appears in en.json and must be consistent across all localization files.
Applied to files:
resources/lang/en.json
🔇 Additional comments (9)
map-generator/main.go (1)
68-68: LGTM! Map registry updated correctly.The new
didierfranceentry is added alongside the existingdidierentry, allowing both map variants to be processed by the map generator.resources/lang/en.json (1)
260-260: LGTM! Localization key added correctly.The new
didierfrancekey with value "Didier (France)" follows the established pattern for map localization.src/client/components/Maps.ts (1)
57-57: LGTM! Map description added correctly.The
DidierFranceentry is added to theMapDescriptionrecord alongside the existingDidierentry, providing the display label "Didier (France)" for the UI.src/core/configuration/DefaultConfig.ts (1)
93-94: Slot configuration updated for map variants.The original
Didierslots are reduced from[100, 70, 50]to[50, 40, 30], while the newDidierFrancereceives the original slot configuration[100, 70, 50]. This suggestsDidierFranceis the larger, full version whileDidieris now a smaller variant.Verify this matches the intended map sizes and player capacity for each variant.
src/server/MapPlaylist.ts (1)
64-64: Verify: Playlist map change requires PR description review.The code shows
DidierFrance: 2,at line 64 with no plainDidierentry in MapPlaylist.ts. However, the contradiction with the PR description cannot be confirmed without access to: (1) the actual PR description text, and (2) what the playlist contained before this change. Please confirm the intended map configuration and clarify whetherDidierorDidierFranceshould be in the playlist.src/core/game/Game.ts (1)
117-117: LGTM! Clean enum and category additions.The
DidierFrancemap type is correctly added to the enum and categorized as arcade. The implementation follows the existing pattern consistently.Also applies to: 178-182
map-generator/assets/maps/didier/info.json (1)
1-53: LGTM! Fictional factions correctly replace real locations.The Didier map now uses fictional faction names (Aywen Enclave, Kumiz Confederation, etc.) instead of real French cities, which aligns with the PR objective to exclude real-France elements from the original Didier map.
resources/maps/didier/manifest.json (1)
1-68: LGTM! Manifest correctly reflects the updated Didier map.The manifest dimensions and nations list properly match the updated info.json with fictional faction names. The changes successfully transform the original Didier map to exclude real-France elements.
resources/maps/didierfrance/manifest.json (1)
21-21: No issues found. The "fr" flag file exists atresources/flags/fr.svgand correctly matches the value referenced in the manifest.
## Description: Discussed that with Lewis. Fuze liked the Didier map without the real france more... So here it is. It won't get added to the playlist, the france version stays in the playlist. (Unrelated: Also quickly changed "Europe (classic)" to Europe (Classic)" to match with "Britannia (Classic)") <img width="934" height="839" alt="Screenshot 2026-01-10 005646" src="https://github.com/user-attachments/assets/64925635-c15a-4167-a5bc-5cf7b3b140f8" /> <img width="1064" height="961" alt="Screenshot 2026-01-10 003335" src="https://github.com/user-attachments/assets/9b6aa936-2c33-4a24-8076-a74a4704adc4" /> <img width="635" height="427" alt="Screenshot 2026-01-10 003316" src="https://github.com/user-attachments/assets/e2b46db8-ef0b-4b45-8ea7-711b9b8f7524" /> ## 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: FloPinguin
## Description: Discussed that with Lewis. Fuze liked the Didier map without the real france more... So here it is. It won't get added to the playlist, the france version stays in the playlist. (Unrelated: Also quickly changed "Europe (classic)" to Europe (Classic)" to match with "Britannia (Classic)") <img width="934" height="839" alt="Screenshot 2026-01-10 005646" src="https://github.com/user-attachments/assets/64925635-c15a-4167-a5bc-5cf7b3b140f8" /> <img width="1064" height="961" alt="Screenshot 2026-01-10 003335" src="https://github.com/user-attachments/assets/9b6aa936-2c33-4a24-8076-a74a4704adc4" /> <img width="635" height="427" alt="Screenshot 2026-01-10 003316" src="https://github.com/user-attachments/assets/e2b46db8-ef0b-4b45-8ea7-711b9b8f7524" /> ## 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: FloPinguin
Description:
Discussed that with Lewis.
Fuze liked the Didier map without the real france more...
So here it is. It won't get added to the playlist, the france version stays in the playlist.
(Unrelated: Also quickly changed "Europe (classic)" to Europe (Classic)" to match with "Britannia (Classic)")
Please complete the following:
Please put your Discord username so you can be contacted if a bug or regression is found:
FloPinguin