Difference between revisions of "Modding:Modder Guide/Testing and Releasing"

From Stardew Valley Wiki
Jump to navigation Jump to search
(move content from create-a-mod page (only author is Pathoschild))
 
(expand)
Line 3: Line 3:
 
Once you're ready to share your mod, it's time to test and release it!
 
Once you're ready to share your mod, it's time to test and release it!
  
==Test on all platforms==
+
==Test the mod==
If you want to test your mod on all platforms, there's some first-time setup you need to get out of the way. Essentially you need to test your mod twice: once on Windows, and again on Linux or Mac. You can do that by testing one version on your computer, and the other in a virtual machine.
+
===Basic testing===
 +
Testing is pretty straightforward for most mods:
 +
# Click ''Build > Rebuild Solution'' (Visual Studio) or ''Build > Rebuild All'' (MonoDevelop).
 +
# Make sure there are no build errors and the mod gets copied to your <tt>Mods</tt> folder.
 +
# Try the mod in-game.
 +
# Make sure there are no errors or warnings for your mod in the SMAPI console.
 +
 
 +
In general, if a mod works on one platform it'll work fine on the others.
 +
 
 +
===Testing on all platforms===
 +
For complex mods, you may need to test your mod on all platforms. The game is mostly the same on Linux/Mac, so you only need to test your mod twice: once on Windows, and again on Linux or Mac. You can do that by testing one version on your computer, and the other in a virtual machine.
  
 
* '''If your main computer is Windows:'''
 
* '''If your main computer is Windows:'''
Line 17: Line 27:
 
*# Install Stardew Valley in your VM.
 
*# Install Stardew Valley in your VM.
  
===Release your mod===
+
==Prepare the release package==
Ready to share your mod with the world? Here's how:
+
The 'release package' for a SMAPI mod is just a <tt>.zip</tt> file containing a mod with your compiled files, <tt>manifest.json</tt>, any <tt>i18n</tt> files, etc. The NuGet package will create it for you automatically.
  
# Open your project's <tt>bin/Debug</tt> or <tt>bin/Release</tt> folder (depending on your build configuration).
+
===Generate package===
 +
# Edit your mod's <tt>manifest.json</tt> to increase the version.
 +
# Click ''Build > Rebuild Solution'' (Visual Studio) or ''Build > Rebuild All'' (MonoDevelop) to make sure the project is compiled.
 +
# Open your mod project's <tt>bin/Debug</tt> or <tt>bin/Release</tt> folder (depending on your build configuration).
 
# There should be a <tt>.zip</tt> file there for your mod version.
 
# There should be a <tt>.zip</tt> file there for your mod version.
# Upload that file to [http://www.nexusmods.com/stardewvalley Nexus Mods].
 
  
In your mod description, providing clear install steps will help reduce support questions. Example BBCode:
+
That <tt>.zip</tt> file is the release package for your mod, ready to upload.
 +
 
 +
===Troubleshoot package===
 +
Here's how to fix common issues with the generated <tt>.zip</tt> file.
 +
 
 +
* The <tt>.zip</tt> file is missing:
 +
** Make sure you're looking at the right folder (either <tt>bin/Debug</tt> or <tt>bin/Release</tt>).
 +
** Make sure there are no build errors.
 +
 
 +
* Some mod files aren't in the package:
 +
** If it's a mod file: right-click on the file in Visual Studio or MonoDevelop, choose ''Properties'', and change 'Copy to Output Directory' to 'copy if newer'.
 +
** If it's an assembly reference: right-click on the reference in Visual Studio or MonoDevelop, choose ''Properties'', and change 'Copy Local' or 'Local Copy' to true.
 +
 
 +
* Some mod files that shouldn't be in the package are included:
 +
** If it's a mod file: right-click on the file in Visual Studio or MonoDevelop, choose ''Properties'', and change 'Copy to Output Directory' to 'do not copy'.
 +
** If it's an assembly reference: right-click on the reference in Visual Studio or MonoDevelop, choose ''Properties'', and change 'Copy Local' or 'Local Copy' to false.
 +
 
 +
==Release the mod==
 +
===Create a mod page===
 +
If you haven't already, create a mod page on [http://www.nexusmods.com/stardewvalley Nexus Mods]. Ideally your mod description should...
 +
* explain what the mod does and how to use it;
 +
* provide clear install steps;
 +
* explain which version of the game it works with;
 +
* say whether it works in multiplayer (and list any multiplayer limitations);
 +
* link to release notes, source code, discussion thread, etc if applicable.
 +
 
 +
Here's a recommended template for the mod description:
 +
 
 +
<ol>
 +
<li>Click the "[BBCODE]" button above the mod description on Nexus. This will switch to raw text mode.</li>
 +
<li>Paste this template in:
 
<pre>
 
<pre>
 +
This mod adds pineapples everywhere in the game. Replace this line with a few sentences explaining your mod.
 +
 
[size=5]Install[/size]
 
[size=5]Install[/size]
 
[list=1]
 
[list=1]
Line 31: Line 75:
 
[*]Download this mod and unzip it into [font=Courier New]Stardew Valley/Mods[/font].
 
[*]Download this mod and unzip it into [font=Courier New]Stardew Valley/Mods[/font].
 
[*]Run the game using SMAPI.
 
[*]Run the game using SMAPI.
 +
[/list]
 +
 +
[size=5]How to use[/size]
 +
Provide a few sentences explaining how to use your mod. For example, the default buttons to press, where to find a menu, etc. You can remove this section if it's self-evident.
 +
 +
[size=5]Compatibility[/size]
 +
[list]
 +
[*]Works with Stardew Valley 1.3 beta on Linux/Mac/Windows.
 +
[*]Works in single player and multiplayer. If there are multiplayer limitations, explain them here.
 +
[/list]
 +
 +
[size=5]See also[/size]
 +
Add links below for your mod, and remove any that don't apply. Don't forget to remove this sentence.
 +
 +
[list]
 +
[*]Official discussion thread
 +
[*]Release notes
 +
[*]Source code
 
[/list]
 
[/list]
 
</pre>
 
</pre>
 +
</li>
 +
<li>Click the "[BBCODE]" button to switch back to the formatted view.</li>
 +
<li>Edit the template for your mod.</li>
 +
</ol>
 +
 +
===Upload the mod release===
 +
[[File:Modding - Nexus new-file screen.png|thumb|Nexus 'new file' screen.]]
 +
 +
To upload a file to Nexus:
 +
# From your mod page, go to ''Manage > Files''.
 +
# Fill in the form:
 +
#* 'File name' should have the mod name and version (like <tt>PineapplesEverywhere 1.0</tt>).
 +
#* 'File version' field should match the version in your <tt>manifest.json</tt>! If it doesn't, players may get incorrect update alerts.
 +
#* Tick the "this is the latest version" checkbox so players get update alerts.
 +
#* 'File description' is up to you. You can mention the minimum SMAPI version (if any), what changed, link to release notes, etc.
 +
# Upload the <tt>.zip</tt> file [[#Prepare the release package|you prepared above]].

Revision as of 18:34, 27 May 2018

Creating SMAPI mods SMAPI mascot.png


Modding:Index

Once you're ready to share your mod, it's time to test and release it!

Test the mod

Basic testing

Testing is pretty straightforward for most mods:

  1. Click Build > Rebuild Solution (Visual Studio) or Build > Rebuild All (MonoDevelop).
  2. Make sure there are no build errors and the mod gets copied to your Mods folder.
  3. Try the mod in-game.
  4. Make sure there are no errors or warnings for your mod in the SMAPI console.

In general, if a mod works on one platform it'll work fine on the others.

Testing on all platforms

For complex mods, you may need to test your mod on all platforms. The game is mostly the same on Linux/Mac, so you only need to test your mod twice: once on Windows, and again on Linux or Mac. You can do that by testing one version on your computer, and the other in a virtual machine.

  • If your main computer is Windows:
    1. Install VirtualBox.
    2. Add this premade Linux virtual machine (requires a 64-bit computer).
      In VirtualBox, click Machine » Add and choose the downloaded .vbox file. This is a Manjaro virtual machine with Chromium (web browser), Steam, and MonoDevelop preinstalled.
    3. Launch the virtual machine, and install Stardew Valley from the Steam client (preinstalled) or GOG website.
      Tip: don't change the default install path, or you'll need to customise the mod's build configuration.

Prepare the release package

The 'release package' for a SMAPI mod is just a .zip file containing a mod with your compiled files, manifest.json, any i18n files, etc. The NuGet package will create it for you automatically.

Generate package

  1. Edit your mod's manifest.json to increase the version.
  2. Click Build > Rebuild Solution (Visual Studio) or Build > Rebuild All (MonoDevelop) to make sure the project is compiled.
  3. Open your mod project's bin/Debug or bin/Release folder (depending on your build configuration).
  4. There should be a .zip file there for your mod version.

That .zip file is the release package for your mod, ready to upload.

Troubleshoot package

Here's how to fix common issues with the generated .zip file.

  • The .zip file is missing:
    • Make sure you're looking at the right folder (either bin/Debug or bin/Release).
    • Make sure there are no build errors.
  • Some mod files aren't in the package:
    • If it's a mod file: right-click on the file in Visual Studio or MonoDevelop, choose Properties, and change 'Copy to Output Directory' to 'copy if newer'.
    • If it's an assembly reference: right-click on the reference in Visual Studio or MonoDevelop, choose Properties, and change 'Copy Local' or 'Local Copy' to true.
  • Some mod files that shouldn't be in the package are included:
    • If it's a mod file: right-click on the file in Visual Studio or MonoDevelop, choose Properties, and change 'Copy to Output Directory' to 'do not copy'.
    • If it's an assembly reference: right-click on the reference in Visual Studio or MonoDevelop, choose Properties, and change 'Copy Local' or 'Local Copy' to false.

Release the mod

Create a mod page

If you haven't already, create a mod page on Nexus Mods. Ideally your mod description should...

  • explain what the mod does and how to use it;
  • provide clear install steps;
  • explain which version of the game it works with;
  • say whether it works in multiplayer (and list any multiplayer limitations);
  • link to release notes, source code, discussion thread, etc if applicable.

Here's a recommended template for the mod description:

  1. Click the "[BBCODE]" button above the mod description on Nexus. This will switch to raw text mode.
  2. Paste this template in:
    This mod adds pineapples everywhere in the game. Replace this line with a few sentences explaining your mod.
    
    [size=5]Install[/size]
    [list=1]
    [*][url=https://smapi.io]Install the latest version of SMAPI[/url].
    [*]Download this mod and unzip it into [font=Courier New]Stardew Valley/Mods[/font].
    [*]Run the game using SMAPI.
    [/list]
    
    [size=5]How to use[/size]
    Provide a few sentences explaining how to use your mod. For example, the default buttons to press, where to find a menu, etc. You can remove this section if it's self-evident.
    
    [size=5]Compatibility[/size]
    [list]
    [*]Works with Stardew Valley 1.3 beta on Linux/Mac/Windows.
    [*]Works in single player and multiplayer. If there are multiplayer limitations, explain them here.
    [/list]
    
    [size=5]See also[/size]
    Add links below for your mod, and remove any that don't apply. Don't forget to remove this sentence.
    
    [list]
    [*]Official discussion thread
    [*]Release notes
    [*]Source code
    [/list]
    
  3. Click the "[BBCODE]" button to switch back to the formatted view.
  4. Edit the template for your mod.

Upload the mod release

Nexus 'new file' screen.

To upload a file to Nexus:

  1. From your mod page, go to Manage > Files.
  2. Fill in the form:
    • 'File name' should have the mod name and version (like PineapplesEverywhere 1.0).
    • 'File version' field should match the version in your manifest.json! If it doesn't, players may get incorrect update alerts.
    • Tick the "this is the latest version" checkbox so players get update alerts.
    • 'File description' is up to you. You can mention the minimum SMAPI version (if any), what changed, link to release notes, etc.
  3. Upload the .zip file you prepared above.