Difference between revisions of "Modding:Content Patcher"
Pathoschild (talk | contribs) (→Next steps: + placeholder note) |
Pathoschild (talk | contribs) (→Assets: clarify: game's content folder) |
||
Line 17: | Line 17: | ||
===Assets=== | ===Assets=== | ||
− | An ''asset'' is essentially a file in the <tt>Content</tt> folder with a unique ''asset name''. The asset name never includes the <tt>Content</tt> path, language, or file extension (you can use tokens to target specific languages). For example: | + | An ''asset'' is essentially a file in the game's <tt>Content</tt> folder with a unique ''asset name''. The asset name never includes the <tt>Content</tt> path, language, or file extension (you can use tokens to target specific languages). For example: |
{| class="wikitable" | {| class="wikitable" |
Revision as of 19:34, 25 September 2019
Do you want to create Content Patcher packs for Stardew Valley? This page is for you! For using mods, see Modding:Player Guide. For creating SMAPI mods, see Modding:Modder Guide.
Quick start
This page is meant as a gentle introduction to creating Content Patcher packs. If you don't need an introduction, see the full Content Patcher readme.
Basic concepts
What is Content Patcher?
Content Patcher is a SMAPI mod which lets you change the game assets (images, dialogue, data, and maps) without replacing game files or writing code. You use it by creating a content pack (basically a folder) with a couple of JSON files (basically text). Just by editing a JSON file, you can...
- replace one image file;
- make seasonal changes;
- make dialogue that changes based on the weather, date, your relationships with other NPCs, etc;
- make very specific changes (like coffee is more expensive on winter weekends when it's snowing after you've completed the JojaMart);
- and much more.
Assets
An asset is essentially a file in the game's Content folder with a unique asset name. The asset name never includes the Content path, language, or file extension (you can use tokens to target specific languages). For example:
file | asset name |
---|---|
Content/Portraits/Abigail.xnb | Portraits/Abigail |
Content/Maps/spring_beach.xnb Content/Maps/spring_beach.es-ES.xnb Content/Maps/spring_beach.fr-FR.xnb |
Maps/spring_beach |
An asset may contain multiple sprites or data entries. For example, here's what Portraits/Abigail contains if you unpack it:
So if you wanted to change Abigail's portraits, you would use Content Patcher to load or edit Portraits/Abigail.
Load vs edits
There are two conceptual ways you can change an asset:
- Load the initial version of an asset. Each asset can only be loaded by one mod at the same time. This is mainly useful for total replacement mods (like a mod that completely changes an NPC's portraits), or to provide files that don't exist in the Content folder.
- Edit an asset after it's loaded. Any number of edits can be applied to the same asset.
For example, let's say the game needs Abigail's portraits. This is how changes are applied:
┌────────────┐ │ edit asset │ ┌───────────┐ ├────────────┤ get Portraits/Abigail ──>│ load file │───>│ edit asset │──> portrait asset └───────────┘ ├────────────┤ │ edit asset │ └────────────┘
This is divided into four different action types (Load, EditData, EditImage, EditMap), which are explained in more detail on the following pages.
Get started
First let's get our basic content pack up and running:
- Install SMAPI and Content Patcher.
- Unpack the game's Content folder so you can see what each asset contains (see Modding:Editing XNB files#Unpack game files).
- Create a SMAPI content pack.
- Create a content.json file in the same folder with this content:
{ "Format": "1.9", "Changes": [ ] }
- Launch the game.
If you did everything correctly so far, you should see the new mod under "Loaded X content packs" in the SMAPI console. (If not, review the above steps or ask for help.)
Next steps
You've created a Content Patcher pack!
For help making it do something, see...
- Content Patcher readme for the full reference;
- video intro to Content Patcher (unofficial);
- intro to converting XNB mods (unofficial).
(We'll have a guided tutorial here soon.)