Add support for Stardew Valley 1.3
Pathoschild opened this issue · 6 comments
Update SMAPI to support the upcoming Stardew Valley 1.3 beta.
To do
Phase I: during SDV 1.3 alpha
SMAPI compatibility
- Decompile and unpack the initial alpha build.
- Fix the decompiled code so it can be run locally.
- Fix SMAPI compile and runtime errors.
- Detect broken code in mods due to changes and mark them incompatible.
- Rewrite most common basic changes.
- Drop support for deprecated APIs.
- Update for content manager changes.
- Prepare home page + update checks for parallel releases (#457).
- Investigate: will multiplayer updates cause conflicts with mod events? Are they async?
Net synchronisation happens synchronously (seeMultiplayer.UpdateEarly
andMultiplayer.UpdateLate
.) - Rewrite player/world state tracking to eventually support events for multiple players.
Initial documentation
- Start pushing XNB → Content Patcher conversions (coordination thread).
- Update compatibility list for SMAPI 2.5.
- Prepare impact assessment for SMAPI mods.
- Prepare impact assessment for XNB / Content Patcher mods.
- Dig through game code and document suggested changes in SDV 1.3.
Mod compatibility
- Update mod build config package to support Stardew Valley 1.3.
- Add C# analyzers to report problematic code to modders (#471).
- Draft modder migration guide.
- Update mod compatibility list for Stardew Valley 1.3 beta.
- Add multiplayer sync events for mods which need to sanitise world state before sync (#479).
Phase II: before SDV 1.3 beta
- Start migration forum thread.
- Start updating mods.
- Make sure smapi.io goes into beta mode correctly.
Phase III: after beta
SMAPI 2.5.3 beta adds better compatibility and update checks, updated internal mod data, and some internal changes to support the upcoming update. I'll push that live in a few days.
SMAPI 2.6 alpha extends that with SDV 1.3 compatibility in the support-sdv-1.3
branch, and its existing features seem to be working fine so far. I haven't started hooking into the game's multiplayer logic yet, and will need some changes in the game to do so.
Out of 293 SMAPI mods known compatible with SMAPI 2.5.3, 81% (238) are currently incompatible and 19% (55) seem to be compatible and can be loaded. Of the latter 55, some may fail due to broken code that SMAPI's heuristics didn't detect. You can see a few of those errors at the bottom of this sample log.
Here are the XNB changes in Stardew Valley 1.3.0-alpha.2.
Notes:
- I ignored changes to non-English files for simplicity.
- New content files aren't listed, since they won't impact existing mods and to avoid spoiling some surprises.
- XNB mods are disproportionately affected, since they replace the entire file. Content Patcher packs are typically unaffected unless they replace the entire file (in which case see the XNB mod column).
- I don't know what changed in affected map files (if anything), only that the files are different.
Shorthand:
- 'broken' means removing new content or potentially important changes, or potentially causing significant display bugs. This is a broad category — the game may work fine without it or crash, depending how it uses that specific content.
- 'mostly unaffected' means mods will only be affected if they edit specific entries or fields.
- Blank means zero expected impact.
content file | changes | XNB | Content Patcher |
---|---|---|---|
Characters/Dialogue/Abigail |
new content | ✘ broken | |
Characters/Dialogue/Alex |
new content | ✘ broken | |
Characters/Dialogue/Abigail |
new content | ✘ broken | |
Characters/Dialogue/Clint |
new content | ✘ broken | |
Characters/Dialogue/Demetrius |
new content | ✘ broken | |
Characters/Dialogue/Elliott |
new content | ✘ broken | |
Characters/Dialogue/Emily |
new content | ✘ broken | |
Characters/Dialogue/Evelyn |
new content | ✘ broken | |
Characters/Dialogue/George |
new content | ✘ broken | |
Characters/Dialogue/Gus |
new content | ✘ broken | |
Characters/Dialogue/Haley |
new content | ✘ broken | |
Characters/Dialogue/Harvey |
new content | ✘ broken | |
Characters/Dialogue/Krobus |
small text change | ✘ minor issues | ✓ mostly unaffected |
Characters/Dialogue/Leah |
new content | ✘ broken | |
Characters/Dialogue/Lewis |
new content | ✘ broken | |
Characters/Dialogue/Linus |
new content | ✘ broken | |
Characters/Dialogue/ MarriageDialogueSebastian |
small text change | ✘ minor issues | ✓ mostly unaffected |
Characters/Dialogue/Maru |
new content | ✘ broken | |
Characters/Dialogue/Pam |
new content | ✘ broken | |
Characters/Dialogue/Penny |
new content | ✘ broken | |
Characters/Dialogue/Pierre |
new content + small text change | ✘ broken | ✓ mostly unaffected |
Characters/Dialogue/Robin |
new content | ✘ broken | |
Characters/Dialogue/Sam |
new content | ✘ broken | |
Characters/Dialogue/Sebastian |
new content | ✘ broken | |
Characters/Dialogue/Shane |
new content | ✘ broken | |
Characters/Farmer/hats |
new sprites at bottom | ✘ broken | ✘ impacts new-hat packs |
Characters/Governor |
new sprites at bottom | ✘ broken | ✓ mostly unaffected |
Characters/Pam |
new sprites at bottom | ✘ broken | ✓ mostly unaffected |
Characters/Penny |
new sprites in empty slot | ✘ broken | ✓ mostly unaffected |
Characters/schedules/Abigail |
new content | ✘ broken | |
Characters/schedules/Alex |
new content | ✘ broken | |
Characters/schedules/Caroline |
new content | ✘ broken | |
Characters/schedules/Clint |
new content | ✘ broken | |
Characters/schedules/Demetrius |
new content | ✘ broken | |
Characters/schedules/Elliott |
new content | ✘ broken | |
Characters/schedules/Emily |
new content | ✘ broken | |
Characters/schedules/Evelyn |
new content | ✘ broken | |
Characters/schedules/Clint |
new content | ✘ broken | |
Characters/schedules/Haley |
new content | ✘ broken | |
Characters/schedules/Harvey |
new content | ✘ broken | |
Characters/schedules/Jas |
new content | ✘ broken | |
Characters/schedules/Jodi |
new content | ✘ broken | |
Characters/schedules/Leah |
new content | ✘ broken | |
Characters/schedules/Lewis |
new content | ✘ broken | |
Characters/schedules/Linus |
new content | ✘ broken | |
Characters/schedules/Marnie |
new content | ✘ broken | |
Characters/schedules/Maru |
new content | ✘ broken | |
Characters/schedules/Penny |
new content | ✘ broken | |
Characters/schedules/Robin |
new content | ✘ broken | |
Characters/schedules/Sam |
new content | ✘ broken | |
Characters/schedules/Sebastian |
new content | ✘ broken | |
Characters/schedules/Shane |
new content + schedule fixes | ✘ broken | ✓ mostly unaffected |
Characters/schedules/Vincent |
new content | ✘ broken | |
Characters/schedules/Willy |
new content | ✘ broken | |
Data/BigCraftablesInformation |
new content | ✘ broken | |
Data/Blueprints |
new content + changes | ✘ broken | ✓ mostly unaffected |
Data/CraftingRecipies |
new content | ✘ broken | |
Data/Crops |
new content | ✘ broken | |
Data/Events/ArchaeologyHouse |
minor change | ✘ broken | ✓ mostly unaffected |
Data/Events/Beach |
new content + changes | ✘ broken | ✓ mostly unaffected |
Data/Events/BusStop |
new content | ✘ broken | |
Data/Events/Farm |
new content + changes | ✘ broken | ✓ mostly unaffected |
Data/Events/FarmHouse |
changes | ✘ broken | ✓ mostly unaffected |
Data/Events/Forest |
new content | ✘ broken | |
Data/Events/HaleyHouse |
new content | ✘ broken | |
Data/Events/Mountain |
new content + changes | ✘ broken | ✓ mostly unaffected |
Data/Events/Saloon |
new content | ✘ broken | |
Data/Events/SeedShop |
changes | ✘ broken | ✓ mostly unaffected |
Data/Events/Town |
new content + changes | ✘ broken | ✓ mostly unaffected |
Data/Events/WizardHouse |
changes | ✘ broken | ✓ mostly unaffected |
Data/Events/Woods |
new content | ✘ broken | |
Data/ExtraDialogue |
new content | ✘ broken | |
Data/Festivals/fall27 |
changes | ✘ broken | ✓ mostly unaffected |
Data/Festivals/spring13 |
changes | ✘ broken | ✓ mostly unaffected |
Data/Festivals/spring24 |
changes | ✘ broken | ✓ mostly unaffected |
Data/Festivals/summer11 |
new content + changes | ✘ broken | ✓ mostly unaffected |
Data/Festivals/summer28 |
changes | ✘ broken | ✓ mostly unaffected |
Data/Festivals/winter8 |
changes | ✘ broken | ✓ mostly unaffected |
Data/Fish |
new content | ✘ broken | |
Data/Furniture |
new content | ✘ broken | |
Data/Monsters |
new content | ✘ broken | |
Data/NPCGiftTastes |
changes | ✘ broken | ✓ mostly unaffected |
Data/ObjectInformation |
new content | ✘ broken | |
Data/Quests |
new content + changes | ✘ broken | ✓ mostly unaffected |
Data/animationDescriptions |
changes | ✘ broken | ✓ mostly unaffected |
Data/hats |
new content | ✘ broken | |
Data/mail |
new content | ✘ broken | |
LooseSprites/ControllerMaps |
cosmetic changes | ✘ minor issues | ✘ minor issues |
LooseSprites/Cursors |
new content + changes | ✘ broken | ✓ mostly unaffected |
LooseSprites/chatBox |
significantly changed | ✘ broken | ✘ broken |
LooseSprites/letterBG |
new content | ✘ broken | |
LooseSprites/map |
cosmetic changes | ✘ minor issues | |
Maps/Farm |
unknown changes | ✘ broken? | ✘ broken? |
Maps/FarmHouse |
unknown changes | ✘ broken? | ✘ broken? |
Maps/FarmHouse1 |
unknown changes | ✘ broken? | ✘ broken? |
Maps/FarmHouse1_marriage |
unknown changes | ✘ broken? | ✘ broken? |
Maps/FarmHouse2 |
unknown changes | ✘ broken? | ✘ broken? |
Maps/FarmHouse2_marriage |
unknown changes | ✘ broken? | ✘ broken? |
Maps/Farm_Combat |
unknown changes | ✘ broken? | ✘ broken? |
Maps/Farm_Fishing |
unknown changes | ✘ broken? | ✘ broken? |
Maps/Farm_Foraging |
unknown changes | ✘ broken? | ✘ broken? |
Maps/Farm_Mining |
unknown changes | ✘ broken? | ✘ broken? |
Maps/Railroad |
unknown changes | ✘ broken? | ✘ broken? |
Maps/Sewer |
unknown changes | ✘ broken? | ✘ broken? |
Maps/sewerTiles |
new content | ✘ broken | ✓ mostly unaffected |
Maps/Town |
unknown changes | ✘ broken? | ✘ broken? |
Maps/fall_town |
new content | ✘ broken | ✓ mostly unaffected |
Maps/paths |
new content | ✘ minor issues | |
Maps/spring_town |
new content | ✘ broken | ✓ mostly unaffected |
Maps/springobjects |
new content + cosmetic changes | ✘ broken | ✓ mostly unaffected |
Maps/summer_town |
new content | ✘ broken | ✓ mostly unaffected |
Maps/winter_town |
new content | ✘ broken | ✓ mostly unaffected |
Portraits/MrQi |
new content | ✘ broken | |
SewerTiles |
new content | ✘ broken | ✓ mostly unaffected |
Strings/Characters |
new content | ✘ broken | |
Strings/Events |
new content | ✘ broken | |
Strings/Locations |
new content | ✘ broken | |
Strings/Objects |
new content | ✘ broken | |
Strings/StringsFromCSFiles |
new content | ✘ broken | |
Strings/UI |
new content + changes | ✘ broken | |
TileSheets/Craftables |
new content + significant changes | ✘ broken | ✘ possibly broken |
TileSheets/crops |
new content | ✘ broken | ✓ mostly unaffected |
TileSheets/furniture |
new content | ✘ broken | ✓ mostly unaffected |
fall_town |
new content | ✘ broken | ✓ mostly unaffected |
paths |
new content | ✘ minor issues | |
spring_town |
new content | ✘ broken | ✓ mostly unaffected |
winter_town |
new content | ✘ broken | ✓ mostly unaffected |
Stardew Valley 1.3 compatibility is now in the main develop
branch, with compile flags where needed. That lets us release most of the changes in SMAPI 2.5.x, so we can validate them before Stardew Valley 1.3 is released to reduce confounding factors.
SMAPI's home page and update checks are now ready for the beta version (#457).
Some updates:
- SMAPI 2.6 is now ready and compatible.
- SMAPI 2.5.5 was the last release for Stardew Valley 1.2, and support for 1.2 was dropped in
develop
. - I added C# analyzers to the mod build package, so modders will see warnings for net code to fix.
- The migration process is documented.
- The mod compatibility list is updated for Stardew Valley 1.3.