Modding:Guía del Modder/Prueba y solución de problemas

De Stardew Valley Wiki
Revisión del 18:15 20 ago 2022 de Margotbean (discusión | contribs.) (+pt link)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Creación de mods SMAPI SMAPI mascot.png


Modding:Índice

Esta página lo ayuda a probar sus mods y resolver problemas comunes. Para problemas con el uso de mods, consulte Modding:Guía del jugador/Solución de problemas.

Prueba del mod

Pruebas básicas

La prueba es bastante sencilla para la mayoría de los mods:

  1. Haga clic en Build > Rebuild Solution (Visual Studio) o Build > Rebuild All (MonoDevelop).
  2. segúrese de que no haya errores de compilación y que el mod se copie en su Mods a la carpeta.
  3. Prueba el mod en el juego.
  4. Asegúrese de que no haya errores o advertencias para su mod en la consola SMAPI.

En general, si un mod funciona en una plataforma, funcionará bien en las demás.

Probando en multijugador

Puedes probar mods en multijugador en la misma computadora, iniciando dos instancias del juego:

  1. Prepara al jugador uno:
    1. Reinicie SMAPI como de costumbre.
    2. Desde la pantalla de título: haz click co-op, y luego en Anfitrión.
    3. Inicie una nueva ranura para guardar (a menos que ya haya creado una). Asegúrate de establecer 'cabinas iniciales' en al menos una (necesitarás una cabina por jugador adicional).
  2. Prepara al jugador dos:
    1. Vuelva a iniciar SMAPI. (Esto creará automáticamente un archivo de registro separado).
    2. Desde la pantalla de título: haga click co-op, luego únase a la juego LAN.
    3. Deje el cuadro de 'Ingresar IP...' vacío y haga clic en Aceptar.

Pruebas en todas las plataformas

Para mods complejos, es posible que deba probar su mod en todas las plataformas. El juego es prácticamente el mismo en Linux/Mac, por lo que solo necesitas probar tu mod dos veces: una vez en Windows y otra vez en Linux o Mac. Puede hacerlo probando una versión en su computadora y la otra en una máquina virtual.

Si su computadora principal es Windows 11:
  1. Instale el subsistema de Windows para Linux (WSL).
  2. Instale el software necesario en WSL:
    1. Instala Steam.
    2. Inicie export TERM=xterm && steam, luego instale e inicie Stardew Valley a través de su interfaz de usuario. Esto también instalará sus dependencias.
    3. (optional) (opcional) Descargue e instale su IDE preferido, si planea compilar el código en Linux. Para la última versión independiente de Rider (no gratuita):
      wget "<URL de descarga aquí>" -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
      
    4. Instale SMAPI.
  3. Para iniciar el juego, inícielo steam y ejecútelo a través de su interfaz de usuario.
Si su computadora principal es Windows 10 o anterior
:
  1. Instala VirtualBox.
  2. Cree una máquina virtual de ZorinOS Core en VirtualBox.
    • Consulte esta guía de configuración para obtener más detalles. El instalador de ZorinOS uede ser un poco diferente al que se muestra, pero debería ser bastante intuitivo.
    • Si no ve ninguna opción para los sistemas operativos de 64 bits en VirtualBox, vea cómo habilitarlos.
    • Al crear el disco virtual, se recomiendan al menos 20GB.
  3. Descargue el instalador de Steam en la máquina virtual y ejecútelo
  4. Inicie Steam para finalizar la instalación. Si no sucede nada, consulte estos pasos adicionales para solucionarlo.
  5. Instale Stardew Valley a través de Steam.
  6. Instale SMAPI.
  7. (opcional) Instale mono-complete and MonoDevelop en su máquina virtual. Esto solo es necesario si desea compilar por separado para Linux/Mac. Al instalar los archivos .deb files, utilice las instrucciones para la versión de Ubuntu que se muestran aquí. Si te encuentras con errores, que Linux se apiade de tu alma.
  8. (opcional) Solo para desbloquear Mac OS: Virtual Machine Unlocker 2.1.1 para VmWare Workstation 11/12/14, VmWare Player 7/12/14 o Fusion 7/8/10. Esto es necesario para iniciar Mac OS en una máquina virtual
Si su computadora principal es Linux o macOS:
  1. Instala VirtualBox.
  2. Crear una máquina virtual con Windows.
  3. Instale Stardew Valley en su máquina virtual.
  4. Instale SMAPI.
  5. (opcional) Instale Visual Studio Community en su máquina virtual. Esto solo es necesario si desea compilar por separado para Windows.

Arreglar alertas de compilación comunes

Después de compilar su proyecto, puede ver las advertencias de compilación a través de Visual Studio > Ver > Lista de errores o MonoDevelop > Ver > Pads > Errores. Aquí hay algunos comunes.

Esto implícitamente convierte...

Ejemplo de un alerta: "Esto convierte implícitamente '{0}' de Net{1} a {2}, pero Net{1} tiene reglas de conversión implícitas poco intuitivas. Considere comparar con el valor real para evitar errores. Consulte https://smapi.io/buildmsg/avoid-implicit-net-field-cast para más detalles."

Su código hace referencia a un Campo de red, o que puede causar errores sutiles. Este campo tiene una propiedad no neta equivalente, como monster.Health (int) en vez monster.health (NetBool). Cambie su código para usar la propiedad sugerida en su lugar.

FieldName es un campo red*...

Ejemplo de advertencia: "'{0}' es un Campo de red (Net){1}; considere usar la propiedad {2} en su lugar. Consulte https://smapi.io/buildmsg/avoid-net-para obtener más detalles."

Su código hace referencia a un Campo de red, lo que puede causar errores sutiles. En su lugar, debe acceder al valor subyacente:

  • Para un tipo de referencia (es decir, uno que puede contener null), puede utilizar la propiedad .Value (o .FieldDict para NetDictionary):
    if (building.indoors.Value == null)
    

    O convertir el Value antes de la comparación:

    GameLocation indoors = building.indoors.Value;
    if(indoors == null)
       // ...
    
  • Para un tipo value (es decir,uno que no puede contener null), verifique si el padre es nulo (si es necesario) y compare con el .Value:
    if (item != null && item.category.Value == 0)
    

El campo FieldName está obsoleto...

Ejemplo de una alerta: " El campo 'Character.friendships' está obsoleto y debe reemplazarse con 'friendshipData'. Consulte https://smapi.io/buildmsg/avoid-obsolete-field para obtener más información."

Está haciendo referencia a un campo que ya no debería utilizarse. Utilice el nombre de campo sugerido en su lugar para corregirlo.

Una instancia de analizador... no se puede ser crear

Actualice a la última versión de Visual Studio; el paquete NuGet usa una característica reciente que no está disponible en versiones anteriores.

Otros problemas

No se puede apuntar a .NET 5

Si la lista de apunte del framework tiene opciones que comienzan con...

  • .NET Framework: y creó el tipo de proyecto incorrecto. En su lugar, asegúrese de crear un proyecto .NET 5 para su mod. (El nombre es un poco confuso.)
  • .NET Core, .NET Standard, o .NET 5+: use .NET 5 fpara compatibilidad con el juego. Si no tiene esa opción, puede instalar el .NET 5 SDK para agregarlo.

Visual Studio no puede encontrar los DLL del juego/SMAPI/MonoGame

Soluciones comunes:

  • Reinicie Visual Studio.
  • Asegúrate de que el juego y SMAPI estén correctamente instalados y funcionen bien.
  • Compruebe si hay un error como " Error al encontrar la ruta de instalación del juego ". Si está presente, debe especificar su ruta de juego.
  • Asegúrese de haber creado un proyecto .NET 5, no .NET Framework. (Vea cómo configurar el apunte del framework; si ve opciones que comienzan con .NET Framework, elimine el proyecto y cree un proyecto .NET 5 en su lugar).
  • Asegúrese de apuntar a .NET 5 (vea Como).

Si esos no lo arreglaron:

  1. Haga click en Build > Rebuild Solution (Visual Studio) o Build > Rebuild All (MonoDevelop).
  2. Compruebe el panel de Output o la lista de errores (Visual Studio), o el panel Errors pad (MonoDevelop).
  3. Si no ve nada relevante, publique el texto de Output en hastebin, solicite ayuda en Discord, e incluya un enlace a su hastebin.

Preguntar por ayuda

¡Consulte Modding:Ayuda para obtener ayuda!