Diferencia entre revisiones de «Modding:Content Patcher»

De Stardew Valley Wiki
Ir a la navegación Ir a la búsqueda
(Agregar sección de empezar y proximos pasos)
m (Texto reemplazado: «tt>» por «samp>»)
 
(No se muestran 3 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
{{/Encabezado}}
 
{{/Encabezado}}
''Nota: Todos los links que te lleven fuera de la wiki en español, estan en inglés''<br>
+
''Nota: Todos los links que te lleven fuera de la wiki en español, estan en inglés''<br />
¿Desea crear paquetes de Content Patcher para Stardew Valley? ¡Esta página es para ti! Esta página pretende ser una introducción suave a la creación de paquetes de Content Patcher. Si no necesita una introducción, consulte el [https://github.com/Pathoschild/StardewMods/tree/develop/ContentPatcher#readme archivo readme de Content Patcher completo].<br>
+
¿Desea crear paquetes de Content Patcher para Stardew Valley? ¡Esta página es para ti! Esta página pretende ser una introducción suave a la creación de paquetes de Content Patcher. Si no necesita una introducción, consulte el [https://github.com/Pathoschild/StardewMods/tree/develop/ContentPatcher#readme archivo readme de Content Patcher completo].<br />
  
'''Para el uso de mods, consulte [[Modding:Guía del jugador/Introducción|Modding: Guía del jugador]].'''<br>
+
'''Para el uso de mods, consulte [[Modding:Guía del jugador/Introducción|Modding: Guía del jugador]].'''<br />
 
'''Para crear mods SMAPI, consulte [[Modding:Guía del Modder/Introducción|Modding: Guía del Modder]].'''
 
'''Para crear mods SMAPI, consulte [[Modding:Guía del Modder/Introducción|Modding: Guía del Modder]].'''
  
Línea 17: Línea 17:
  
 
===Recursos===
 
===Recursos===
Un ''recurso'' es esencialmente un archivo en la carpeta <tt>Content</tt> del juego con el nombre de ''asset''. El nombre del recurso nunca incluye la ruta de <tt>Content</tt> el idioma o la extensión del archivo (Puedes usar tokens para dirigirse a idiomas específicos). Por ejemplo:
+
Un ''recurso'' es esencialmente un archivo en la carpeta <samp>Content</samp> del juego con el nombre de ''asset''. El nombre del recurso nunca incluye la ruta de <samp>Content</samp> el idioma o la extensión del archivo (Puedes usar tokens para dirigirse a idiomas específicos). Por ejemplo:
  
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
 
! Archivo
 
! Archivo
 
! Nombre del Asset
 
! Nombre del Asset
 
|-
 
|-
| <tt>Content/Portraits/Abigail.xnb</tt>
+
| <samp>Content/Portraits/Abigail.xnb</samp>
| <tt>Portraits/Abigail</tt>
+
| <samp>Portraits/Abigail</samp>
 
|-
 
|-
| <tt>Content/Maps/spring_beach.xnb</tt><br /><tt>Content/Maps/spring_beach.es-ES.xnb</tt><br /><tt>Content/Maps/spring_beach.fr-FR.xnb</tt>
+
| <samp>Content/Maps/spring_beach.xnb</samp><br /><samp>Content/Maps/spring_beach.es-ES.xnb</samp><br /><samp>Content/Maps/spring_beach.fr-FR.xnb</samp>
| <tt>Maps/spring_beach</tt>
+
| <samp>Maps/spring_beach</samp>
 
|}
 
|}
  
Un recurso puede contener varios imágenes o entradas de datos. Por ejemplo, esto es lo que contiene <tt>Portraits/Abigail</tt> si lo desempaquetas:
+
Un recurso puede contener varios imágenes o entradas de datos. Por ejemplo, esto es lo que contiene <samp>Portraits/Abigail</samp> si lo desempaquetas:
  
 
[[File:Modding - creating an XNB mod - example portraits.png]]
 
[[File:Modding - creating an XNB mod - example portraits.png]]
  
Así que si quisieras cambiar los retratos de Abigail, usarías Content Patcher para cargar o editar <tt>Portraits/Abigail</tt>.
+
Así que si quisieras cambiar los retratos de Abigail, usarías Content Patcher para cargar o editar <samp>Portraits/Abigail</samp>.
  
 
===Cargar vs Editar===
 
===Cargar vs Editar===
 
Hay dos formas conceptuales de cambiar un recurso:
 
Hay dos formas conceptuales de cambiar un recurso:
  
* ''Cargar'' la versión inicial de un recurso. Cada recurso solo puede ser cargado por un mod al mismo tiempo. Esto es principalmente útil para los mods de reemplazo total (como un mod que cambia completamente los retratos de un PNJ), o para proporcionar archivos que no existen en la carpeta <tt>Content</tt>.
+
* ''Cargar'' la versión inicial de un recurso. Cada recurso solo puede ser cargado por un mod al mismo tiempo. Esto es principalmente útil para los mods de reemplazo total (como un mod que cambia completamente los retratos de un PNJ), o para proporcionar archivos que no existen en la carpeta <samp>Content</samp>.
 
* ''Editar'' un recurso después de cargarlo. Se puede aplicar cualquier cantidad de ediciones al mismo recurso.
 
* ''Editar'' un recurso después de cargarlo. Se puede aplicar cualquier cantidad de ediciones al mismo recurso.
  
Línea 54: Línea 54:
 
</pre>
 
</pre>
  
Esto se divide en cuatro tipos de acción diferentes (<tt>Load</tt>, <tt>EditData</tt>, <tt>EditImage</tt>, <tt>EditMap</tt>),  que se explican con más detalle en el archivo readme de Content Patcher
+
Esto se divide en cuatro tipos de acción diferentes (<samp>Load</samp>, <samp>EditData</samp>, <samp>EditImage</samp>, <samp>EditMap</samp>),  que se explican con más detalle en el archivo readme de Content Patcher
  
 
==Empezar==
 
==Empezar==
Línea 61: Línea 61:
 
<ol>
 
<ol>
 
<li>Instalar [https://smapi.io/ SMAPI] y {{nexus mod|1915|Content Patcher}}.</li>
 
<li>Instalar [https://smapi.io/ SMAPI] y {{nexus mod|1915|Content Patcher}}.</li>
<li>Desempaquete la carpeta <tt>Content</tt>  del juego para que pueda ver lo que contiene cada recurso (consulte [[Modding:Edición de archivos XNB#Desempaquetar archivos del juego|¿Como desempaquetar archivos del juego?]]).</li>
+
<li>Desempaquete la carpeta <samp>Content</samp>  del juego para que pueda ver lo que contiene cada recurso (consulte [[Modding:Edición de archivos XNB#Desempaquetar archivos del juego|¿Como desempaquetar archivos del juego?]]).</li>
 
<li>Crear un [[Modding:Paquetes de contenido #Crear un paquete de contenido|paquete de contenido SMAPI]].</li>
 
<li>Crear un [[Modding:Paquetes de contenido #Crear un paquete de contenido|paquete de contenido SMAPI]].</li>
<li>Crea un archivo <tt>content.json</tt>  en la misma carpeta con este contenido:
+
<li>Crea un archivo <samp>content.json</samp>  en la misma carpeta con este contenido:
<source lang="javascript">
+
<syntaxhighlight lang="javascript">
 
{
 
{
 
   "Format": "1.11.0",
 
   "Format": "1.11.0",
Línea 70: Línea 70:
 
   ]
 
   ]
 
}
 
}
</source>
+
</syntaxhighlight>
 
</li>
 
</li>
 
<li>Abre el juego.</li>
 
<li>Abre el juego.</li>
Línea 78: Línea 78:
  
 
===Formato de Content===
 
===Formato de Content===
El archivo <tt>content.json</tt> que creó anteriormente es lo que le dice a Content Patcher qué cambiar. Esto tiene dos campos principales:
+
El archivo <samp>content.json</samp> que creó anteriormente es lo que le dice a Content Patcher qué cambiar. Esto tiene dos campos principales:
  
* <tt>Format</tt>: La versión de formato. Siempre debe usar la última versión (actualmente 1.11.0) para habilitar las funciones más recientes y evitar comportamientos obsoletos.
+
* <samp>Format</samp>: La versión de formato. Siempre debe usar la última versión (actualmente 1.11.0) para habilitar las funciones más recientes y evitar comportamientos obsoletos.
* <tt>Changes</tt>: Los cambios que desea realizar. Cada entrada se denomina ''parche'', y describe una acción específica a realizar: reemplazar este archivo, copiar esta imagen en el archivo, etc. Puede enumerar cualquier número de parches.
+
* <samp>Changes</samp>: Los cambios que desea realizar. Cada entrada se denomina ''parche'', y describe una acción específica a realizar: reemplazar este archivo, copiar esta imagen en el archivo, etc. Puede enumerar cualquier número de parches.
  
Puede enumerar cualquier número de parches en el campo <tt>Changes</tt>, cada uno rodeado por <code>{</code> y <code>}</code>. Consulte la siguiente sección para obtener más información, pero aquí hay un ejemplo rápido:
+
Puede enumerar cualquier número de parches en el campo <samp>Changes</samp>, cada uno rodeado por <code>{</code> y <code>}</code>. Consulte la siguiente sección para obtener más información, pero aquí hay un ejemplo rápido:
<source lang="javascript">
+
<syntaxhighlight lang="javascript">
 
{
 
{
 
   "Format": "1.11.0",
 
   "Format": "1.11.0",
Línea 101: Línea 101:
 
   ]
 
   ]
 
}
 
}
</source>
+
</syntaxhighlight>
  
(Hay otros campos como<tt>ConfigSchema</tt> y <tt>DynamicTokens</tt> para un uso más avanzado; estos se tratan en el archivo readme completo.)
+
(Hay otros campos como<samp>ConfigSchema</samp> y <samp>DynamicTokens</samp> para un uso más avanzado; estos se tratan en el archivo readme completo.)
  
 
==Próximos pasos==
 
==Próximos pasos==

Revisión actual del 18:45 4 nov 2021

Creación de paquetes de Content Patcher SMAPI mascot.png

Modding:Índice

Nota: Todos los links que te lleven fuera de la wiki en español, estan en inglés
¿Desea crear paquetes de Content Patcher para Stardew Valley? ¡Esta página es para ti! Esta página pretende ser una introducción suave a la creación de paquetes de Content Patcher. Si no necesita una introducción, consulte el archivo readme de Content Patcher completo.

Para el uso de mods, consulte Modding: Guía del jugador.
Para crear mods SMAPI, consulte Modding: Guía del Modder.

Conceptos básicos

¿Qué es Content Patcher?

Content Patcher es un mod SMAPI que te permite cambiar los recursos del juego (imágenes, diálogos, datos y mapas) sin reemplazar los archivos del juego o escribir código. Lo usa creando un paquete de contenido (una carpeta) con un par de archivos JSON (básicamente texto). Simplemente editando un archivo JSON, puedes...

  • Reemplazar un archivo de imagen;
  • Hacer cambios estacionales;
  • Hacer un diálogo que cambie según el clima, la fecha, sus relaciones con otros PNJ, etc;
  • Hacer cambios muy específicos (como hacer que el café sea más caro los fines de semana de invierno cuando nieva después de haber completado el JojaMart);
  • Y mucho más.

Recursos

Un recurso es esencialmente un archivo en la carpeta Content del juego con el nombre de asset. El nombre del recurso nunca incluye la ruta de Content el idioma o la extensión del archivo (Puedes usar tokens para dirigirse a idiomas específicos). Por ejemplo:

Archivo Nombre del Asset
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

Un recurso puede contener varios imágenes o entradas de datos. Por ejemplo, esto es lo que contiene Portraits/Abigail si lo desempaquetas:

Modding - creating an XNB mod - example portraits.png

Así que si quisieras cambiar los retratos de Abigail, usarías Content Patcher para cargar o editar Portraits/Abigail.

Cargar vs Editar

Hay dos formas conceptuales de cambiar un recurso:

  • Cargar la versión inicial de un recurso. Cada recurso solo puede ser cargado por un mod al mismo tiempo. Esto es principalmente útil para los mods de reemplazo total (como un mod que cambia completamente los retratos de un PNJ), o para proporcionar archivos que no existen en la carpeta Content.
  • Editar un recurso después de cargarlo. Se puede aplicar cualquier cantidad de ediciones al mismo recurso.

Por ejemplo, digamos que el juego necesita los retratos de Abigail. Así es como se aplican los cambios:

                                          ┌────────────┐
                                          │ edit asset │
                         ┌───────────┐    ├────────────┤
get Portraits/Abigail ──>│ load file │───>│ edit asset │──> portrait asset
                         └───────────┘    ├────────────┤
                                          │ edit asset │
                                          └────────────┘

Esto se divide en cuatro tipos de acción diferentes (Load, EditData, EditImage, EditMap), que se explican con más detalle en el archivo readme de Content Patcher

Empezar

Crear un mod de ejemplo

Primero vamos a poner en marcha nuestro paquete de contenido básico:

  1. Instalar SMAPI y Content Patcher.
  2. Desempaquete la carpeta Content del juego para que pueda ver lo que contiene cada recurso (consulte ¿Como desempaquetar archivos del juego?).
  3. Crear un paquete de contenido SMAPI.
  4. Crea un archivo content.json en la misma carpeta con este contenido:
    {
       "Format": "1.11.0",
       "Changes": [
       ]
    }
    
  5. Abre el juego.

Si hasta ahora ha hecho todo correctamente, debería ver el nuevo mod en "Loaded X content packs" en la consola SMAPI. (De lo contrario, revise los pasos anteriores o solicite ayuda.)

Formato de Content

El archivo content.json que creó anteriormente es lo que le dice a Content Patcher qué cambiar. Esto tiene dos campos principales:

  • Format: La versión de formato. Siempre debe usar la última versión (actualmente 1.11.0) para habilitar las funciones más recientes y evitar comportamientos obsoletos.
  • Changes: Los cambios que desea realizar. Cada entrada se denomina parche, y describe una acción específica a realizar: reemplazar este archivo, copiar esta imagen en el archivo, etc. Puede enumerar cualquier número de parches.

Puede enumerar cualquier número de parches en el campo Changes, cada uno rodeado por { y }. Consulte la siguiente sección para obtener más información, pero aquí hay un ejemplo rápido:

{
   "Format": "1.11.0",
   "Changes": [
      {
         "Action": "Load",
         "Target": "Animals/Dinosaur",
         "FromFile": "assets/dinosaur.png"
      },

      {
         "Action": "EditImage",
         "Target": "Maps/springobjects",
         "FromFile": "assets/fish-object.png"
      },
   ]
}

(Hay otros campos comoConfigSchema y DynamicTokens para un uso más avanzado; estos se tratan en el archivo readme completo.)

Próximos pasos

¡Has creado un paquete de Content Patcher!

Para obtener más ayuda, consulte...

(Próximamente tendremos un tutorial guiado aquí.)