Diferenças entre edições de "Modificações:Guia do Modder/Teste e Solução de Problemas"

Fonte: Stardew Valley Wiki
Saltar para a navegação Saltar para a pesquisa
(Conteúdo carregado)
 
(Limpou toda a página)
Etiqueta: Esvaziamento
Linha 1: Linha 1:
{{Traduzir}}
 
  
 
This page helps you test your mods and solve common issues. '''For issues ''using'' mods, see [[Modding:Player Guide/Troubleshooting]].'''
 
 
==Test the mod==
 
===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 <samp>Mods</samp> 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 in multiplayer===
 
You can test mods in multiplayer on the same computer, by launching two instances of the game:
 
 
# Prepare player one:
 
## Launch SMAPI like usual.
 
## From the title screen: click ''co-op'', then ''host''.
 
## Start a new save slot (unless you've already created one). Make sure to set 'starting cabins' to at least one (you'll need one cabin per extra player).
 
# Prepare player two:
 
## Launch SMAPI again. (This will automatically create a separate log file.)
 
## From the title screen: click ''co-op'', then ''join LAN game''.
 
## Leave the 'Enter IP...' box empty and click OK.
 
 
===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.
 
 
<dl>
 
<dt>If your main computer is Windows 11:</dt>
 
<dd>
 
<ol>
 
<li>[https://docs.microsoft.com/en-us/windows/wsl/install Install Windows Subsystem for Linux (WSL)].</li>
 
<li>Install the required software in WSL:</li>
 
<ol>
 
<li>[https://linuxconfig.org/how-to-install-steam-on-ubuntu-20-04-focal-fossa-linux Install Steam].</li>
 
<li>Launch <code>export TERM=xterm && steam</code>, then install & launch Stardew Valley through its UI. This will also install its dependencies.</li>
 
<li>''(optional)'' Download and install your preferred IDE, if you plan to compile the code on Linux. For the [https://www.jetbrains.com/help/rider/Installation_guide.html#prerequisites latest standalone Rider version] (not free):
 
<syntaxhighlight lang="sh">
 
wget "<download url here>" -O rider-install.tar.gz
 
sudo tar -xzvf rider-install.tar.gz -C /opt
 
ln -s "/opt/JetBrains Rider-<version>/bin/rider.sh"
 
./rider.sh
 
</syntaxhighlight></li>
 
<li>[[Modding:Installing SMAPI on Linux|Install SMAPI]].</li>
 
</ol></li>
 
<li>To launch the game, launch <code>steam</code> and run the game through its UI.</li>
 
</ol></li>
 
</ul>
 
</dd>
 
</dl>
 
 
; If your main computer is Windows 10 or earlier&#x3A;
 
:# Install [https://www.virtualbox.org/ VirtualBox].
 
:# Create a [https://zorinos.com/ ZorinOS Core] VM in VirtualBox.
 
:#* ''See [https://extr3metech.wordpress.com/2013/09/05/installing-zorin-os-7-in-virtual-box-screenshots this setup guide] for more details. The ZorinOS installer might be a bit different than shown, but should be pretty intuitive.''
 
:#* ''If you don't see any options for 64-bit OSes in VirtualBox, see [https://superuser.com/a/866963 how to enable them].''
 
:#* ''When creating the virtual disk, at least 20GB is recommended.''
 
:# [https://store.steampowered.com/about Download the Steam installer] in the VM and run it.
 
:# Launch Steam to finish installation. If nothing happens, see [https://askubuntu.com/questions/771032/steam-not-opening-in-ubuntu-16-04-lts these extra steps] to fix it.
 
:# Install Stardew Valley through Steam.
 
:# [[Modding:Player Guide/Getting Started#Install SMAPI|Install SMAPI]].
 
:# ''(optional)'' Install [https://www.mono-project.com/ <samp>mono-complete</samp>] and [http://www.monodevelop.com/download/ MonoDevelop] in your VM. This is only needed if you want to compile separately for Linux/Mac. When installing <samp>.deb</samp> files, use the instructions for [https://zorinos.com/help/install-apps/#deb-files the Ubuntu version shown here]. If you run into errors, may Linux have mercy on your soul.
 
:# ''(optional)'' For unlocking Mac OS only: [https://www.insanelymac.com/forum/files/file/838-unlocker/ Virtual Machine Unlocker 2.1.1] for VmWare Workstation 11/12/14, VmWare Player 7/12/14, or Fusion 7/8/10.  '''This is needed to boot Mac OS on a virtual Machine'''
 
 
; If your main computer is Linux or macOS&#x3A;
 
:# Install [https://www.virtualbox.org/ VirtualBox].
 
:# [http://www.macworld.co.uk/how-to/mac-software/run-windows-10-on-your-mac-using-virtualbox-3621650/ Create a VM with Windows].
 
:# Install Stardew Valley in your VM.
 
:# [[Modding:Player Guide/Getting Started#Install SMAPI|Install SMAPI]].
 
:# ''(optional)'' Install [https://visualstudio.microsoft.com/vs/community/ Visual Studio Community] in your VM. This is only needed if you want to compile separately for Windows.
 
 
==Fix common build warnings==
 
After building your project, you can see build warnings via ''Visual Studio > View > Error List'' or ''MonoDevelop > View > Pads > Errors''. Here are some common ones.
 
 
===This implicitly converts...===
 
Sample warning: "''This implicitly converts '{0}' from Net{1} to {2}, but Net{1} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/buildmsg/avoid-implicit-net-field-cast for details.''"
 
 
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. This field has an equivalent non-net property, like <samp>monster.Health</samp> (<samp>int</samp>) instead of <samp>monster.health</samp> (<samp>NetBool</samp>). Change your code to use the suggested property instead.
 
 
===FieldName is a Net* field...===
 
Sample warning: "'''{0}' is a Net{1} field; consider using the {2} property instead. See https://smapi.io/buildmsg/avoid-net-field for details.''"
 
 
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. You should access the underlying value instead:
 
<ul>
 
<li>For a reference type (''i.e.,'' one that can contain <samp>null</samp>), you can use the <samp>.Value</samp> property (or <samp>.FieldDict</samp> for a <samp>NetDictionary</samp>):
 
<syntaxhighlight lang="c#">
 
if (building.indoors.Value == null)
 
</syntaxhighlight>
 
 
Or convert the value before comparison:
 
<syntaxhighlight lang="c#">
 
GameLocation indoors = building.indoors.Value;
 
if(indoors == null)
 
  // ...
 
</syntaxhighlight></li>
 
<li>For a value type (''i.e.,'' one that can't contain <samp>null</samp>), check if the parent is null (if needed) and compare with <samp>.Value</samp>:
 
<syntaxhighlight lang="c#">
 
if (item != null && item.category.Value == 0)
 
</syntaxhighlight></li>
 
</ul>
 
 
===The FieldName field is obsolete...===
 
Sample warning: "''The 'Character.friendships' field is obsolete and should be replaced with 'friendshipData'. See https://smapi.io/buildmsg/avoid-obsolete-field for details.''"
 
 
You're referencing a field which should no longer be used. Use the suggested field name instead to fix it.
 
 
===An instance of analyzer ... cannot be created===
 
Update to the latest [https://visualstudio.microsoft.com/vs/community/ Visual Studio]; the NuGet package uses a recent feature that isn't available in older versions.
 
 
==Other issues==
 
===Can't target .NET 5===
 
If the target framework list has options starting with...
 
* ''.NET Framework'': you created the wrong type of project. Make sure you create a .NET 5 project for your mod instead. (The naming is a bit confusing.)
 
* ''.NET Core'', ''.NET Standard'', or ''.NET 5+'': use .NET 5 for compatibility with the game. If you don't have that option, you can install the [https://dotnet.microsoft.com/en-us/download/dotnet/5.0 .NET 5 SDK] to add it.
 
 
===Visual Studio can't find the game/SMAPI/MonoGame DLLs===
 
<span id="Visual_Studio_can.27t_find_the_game.2FSMAPI.2FXNA_DLLs"><!--old section name--></span>
 
Common solutions:
 
* Restart Visual Studio.
 
* Make sure the game and SMAPI are correctly installed and work fine.
 
* Check for an error like "''Failed to find game install path''". If it's present, you need to [https://smapi.io/package/custom-game-path specify your game path].
 
* Make sure you created a .NET 5 project, '''not''' .NET Framework. (See [[Modding:IDE reference#Set the target framework|how to set the target framework]]; if you see options starting with .NET Framework, delete the project and create a .NET 5 project instead.)
 
* Make sure you target .NET 5 (see [[Modding:IDE reference#Set the target framework|how to]]).
 
 
If those didn't fix it:
 
# Click ''Build > Rebuild Solution'' (Visual Studio) or ''Build > Rebuild All'' (MonoDevelop).
 
# Check the ''Output'' pane or error list (Visual Studio), or the ''Errors'' pad (MonoDevelop).
 
# If you don't see anything relevant, post the ''Output'' text to [https://hastebin.com hastebin], [[#Ask for help|ask for help on Discord]], and include a link to your hastebin.
 
 
==Ask for help==
 
See [[Modding:Help]] for how to get help!
 
 
[[es:Modding:Guía del Modder/Prueba y solución de problemas]]
 

Revisão das 12h57min de 20 de agosto de 2022