SMAPI - Stardew Modding API

SMAPI - Stardew Modding API

971k Downloads

Add support for Stardew Valley 1.3

Pathoschild opened this issue · 6 comments

commented

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 (see Multiplayer.UpdateEarly and Multiplayer.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

  • Review feasibility of...
    • audio API (#467);
    • save data API (#468);
    • multiplayer API (#480).
commented

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.

commented

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
commented

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.

commented

SMAPI's home page and update checks are now ready for the beta version (#457).

commented

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.
commented

Done in develop for the upcoming SMAPI 2.6. We'll probably need more changes during the beta, but this is done as a distinct task.