Saltar al contenido principal

Crear monstruos

Esta guía cubre todo lo que necesitas saber para crear y configurar especies de monstruos en MCE. Tratamos a fondo el ScriptableObject MonsterEntry, incluidas las formas, las variantes y la configuración avanzada.

Descripción general de MonsterEntry​

Cada especie de monstruo en MCE se define con un ScriptableObject MonsterEntry. Es la definición de datos de referencia de una especie: contiene las estadísticas base, los tipos, las habilidades, los movimientos aprendibles, los caminos de evolución y los assets visuales.

Un MonsterEntry representa a la especie (p. ej., "Flameleon"), mientras que un MonsterInstance representa a un individuo concreto (p. ej., "el Flameleon de nivel 25 del jugador con estos IV, EV, naturaleza y movimientos concretos").

El Monster Creator Wizard

El asistente recorre los mismos seis pasos que esta guía, en el mismo orden: información básica, estadísticas base, habilidades y movimientos, evolución, arte y una revisión final antes de que se escriba nada en disco. No se crea nada hasta ese último paso, así que puedes abandonar una especie que empezaste por error sin dejar un asset huérfano.

Crear un MonsterEntry​

Con el asistente (recomendado)​

La forma más rápida de crear un monstruo es el asistente: abre el OpenMon Hub (Tools > MCE > OpenMon Hub) → pestaña Art Studio → Monster Creator.

Consulta la guía Primer monstruo para ver un recorrido paso a paso del asistente.

Creación manual​

  1. Haz clic derecho en la ventana Project: Create > MCE > Monster Database > Monster.
  2. Ponle al asset el nombre de tu especie (p. ej., Flameleon).
  3. Selecciónalo y configura todos los campos en el Inspector.

Estructura de MonsterEntry​

Un MonsterEntry es un contenedor a nivel de especie. Los datos reales de estadísticas, tipos y apariencia viven dentro de entradas por forma.

Campos a nivel de especie (MonsterEntry)​

CampoTipoDescripción
DexNumberuintNúmero de dex nacional único
AvailableFormsList<Form>Todas las formas que puede tener esta especie
DataByFormList<DataByFormEntry>Datos de configuración privados por forma (índice 0 = forma base)

Campos por forma (DataByFormEntry)​

Cada forma de la lista privada DataByForm contiene su propia copia completa de lo siguiente; no hay herencia entre formas. La lista se mantiene sincronizada con AvailableForms, y una entrada se lee con monsterEntry[form].

Identidad​

CampoTipoDescripción
CatchRatebyteTasa de captura base (0-255). Más baja = más difícil de capturar
BaseExperienceuintPuntos de experiencia que otorga al ser derrotado
GrowthRateGrowthRateCurva de XP: Fast, MediumFast, MediumSlow, Slow, Erratic, Fluctuating

Tipos​

CampoTipoDescripción
FirstTypeMonsterTypeTipo primario (obligatorio)
SecondTypeMonsterTypeTipo secundario (establécelo en None para un solo tipo)

Estadísticas base​

Se guardan como un diccionario indexado por el enum Stat. Se configuran desde el Inspector.

CampoTipoDescripción
BaseStatsSerializableDictionary<Stat, byte>Diccionario estadística → valor

Rendimiento de EV​

Cuando se derrota a esta especie, ¿qué EV gana el vencedor?

CampoTipoDescripción
EVYieldList<StatByteValuePair>EV otorgados por estadística

Habilidades​

CampoTipoDescripción
AbilitiesList<Ability>Las habilidades normales (el asistente rellena hasta dos)
HiddenAbilitiesList<Ability>Las habilidades ocultas

Género y cría​

CampoTipoDescripción
HasBinaryGenderboolSi existe la distinción macho/hembra
FemaleRatiofloatProbabilidad de ser hembra (0-1)
EggGroupsList<EggGroup>Grupos de compatibilidad de cría
EggCyclesbytePasos para eclosionar (se multiplica por un número base de pasos)

Estructura de DataByFormEntry​

MCE soporta varias formas por especie (p. ej., formas de Alola, formas Mega, variantes estacionales). Cada forma puede sobrescribir cualquiera de los datos de la especie base, o todos.

La lista privada DataByForm de MonsterEntry contiene una entrada por forma:

[Serializable]
public class DataByFormEntry
{
public Form Form; // The form identifier
public MonsterType FirstType; // Type 1
public MonsterType SecondType; // Type 2
public SerializableDictionary<Stat, byte> BaseStats; // Dictionary keyed by Stat enum
public List<Ability> Abilities; // Regular abilities of this form
public List<Ability> HiddenAbilities; // Hidden abilities of this form
public Material Front; // Battle visuals (materials)
public Material Back;
// ... plus male/shiny material overrides, evolutions, breeding data
}

Configurar formas​

  1. Crea un ScriptableObject Form: Create > MCE > Monster Database > Form.
  2. Ponle un nombre descriptivo (p. ej., MegaFlameleon, AlolanDiglett).
  3. Agrégalo a la lista AvailableForms de tu MonsterEntry. Aparece un DataByFormEntry correspondiente en DataByForm.
  4. Rellena esa entrada. Para partir de una forma existente en lugar de desde cero, usa el botón Copy Data From Form To Form del MonsterEntry (aparece cuando la especie tiene más de una forma) y luego cambia solo lo que difiera.
Forma base

La primera forma de AvailableForms es la forma base (GetFirstAvailableForm()). No agregues formas shiny a la lista: una versión shiny se deriva de la forma base mediante el campo ShinyVersion del Form.

Formas y variantes​

MCE soporta varios patrones comunes de formas:

PatrónImplementación
MegaevoluciónUn Form marcado como forma de combate (IsCombatForm, CombatFormType = Mega) con su propio DataByFormEntry (estadísticas aumentadas, sprite especial). El diccionario MegaEvolutions de la forma base asocia el Item necesario con el Form Mega; BattleManagerMegaModule de la batalla realiza el cambio.
Variantes regionalesUn Form con su propio DataByFormEntry (tipos, estadísticas y sprites distintos). Una entrada de encuentro elige qué forma aparece mediante su Form Calculator (SingleFormEncounter siempre devuelve una forma).
Diferencias de géneroUna entrada de forma con HasBinaryGender activado, FemaleRatio y las variantes masculinas de los materiales e iconos (FrontMale, BackMale, IconMale, ...).
Formas solo de batallaFormas de combate (CombatFormType Mega, Max u Other). Se excluyen cuando el motor elige una forma aleatoria para un regalo o un oponente de la Torre.

Cualquier otra cosa (las formas estacionales, por ejemplo) es simplemente un Form adicional; tu propio grafo o script decide cuándo un monstruo la adopta.

Cadenas de evolución​

Cada entrada por forma (DataByFormEntry) tiene una lista Evolutions de entradas EvolutionData. La mayoría de los tipos integrados derivan de TargetSpeciesAndFormEvolutionData, que lleva el destino de la evolución:

[Serializable]
public abstract class TargetSpeciesAndFormEvolutionData : EvolutionData
{
[SerializeField] protected MonsterEntry TargetSpecies; // What it evolves into
[SerializeField] protected Form TargetForm; // Form it evolves into
[SerializeField] protected bool KeepShinyIfItIs; // Preserve shininess
// Trigger conditions are defined by the concrete class
}

Los tipos de evolución son clases [Serializable] normales serializadas de forma polimórfica mediante [SerializeReference]: no son assets ScriptableObject independientes. Eliges el tipo de evolución adecuado en el Inspector (p. ej., EvolveByLevel) y configuras sus parámetros (p. ej., TargetLevel = 16).

Consulta la Guía de evolución para ver los 37 tipos soportados.

Sprites y materiales​

Cada monstruo necesita assets visuales. Las caras de batalla son Materials (el modelo de batalla de MCE dibuja los sprites mediante un shader de flipbook); los iconos y los fotogramas del mundo son referencias normales a Sprite de Unity:

AssetCampoPropósitoNotas
FrontFront (Material)Batalla (vista del oponente)Pixel art, con filtro de punto
BackBack (Material)Batalla (vista del jugador)Pixel art, con filtro de punto
IconIcon (Sprite)Menús, PC, equipoIcono pequeño, normalmente 32x32
OverworldWorldIdleSprite*, WorldWalkingSprite* (Sprites)Sistema de seguidoresUn conjunto por dirección
Variantes shinyFrontShiny, BackShiny, IconShiny, ...Todo lo anteriorVersiones con otro color

Ajustes de importación para pixel art​

Para todos los sprites de monstruos, usa estos ajustes de importación:

  1. Texture Type: Sprite (2D and UI)
  2. Sprite Mode: Single (o Multiple si usas una hoja de sprites)
  3. Pixels Per Unit: que coincida con el tamaño de tile de tu juego (normalmente 16 o 32)
  4. Filter Mode: Point (no filter)
  5. Compression: None
  6. Max Size: mantenlo en la resolución real
Modo de filtro

Usar cualquier modo de filtro distinto de Point hará que el pixel art se vea borroso. Es el problema visual más común al configurar los sprites de los monstruos.

Probar tu monstruo​

Después de crear un MonsterEntry:

  1. Database Browser: abre el OpenMon Hub → pestaña Database → Database Browser y busca tu monstruo por nombre o número de dex.
  2. Validate Database: abre el OpenMon Hub → pestaña Database → Validate Database para comprobar si faltan referencias.
  3. Dex en el juego: inicia el juego y revisa la MonsterDex para ver la entrada de tu monstruo.
  4. Encuentro salvaje: agrega el monstruo a un WildEncountersSet y encuéntralo en el campo.

Creación por lotes​

Para crear muchos monstruos a la vez, tienes varias opciones:

  • Essentials Importer (ediciones Indie, Pro, Source y Studio): importa especies directamente desde los datos PBS de Pokemon Essentials.
  • Creación mediante scripts (ediciones Source y Studio): escribe scripts de editor que creen SOs MonsterEntry de forma programática.

Buenas prácticas​

  1. Usa el asistente para monstruos individuales. Valida tu entrada y detecta los errores comunes.
  2. Mantén únicos los números de dex. Los duplicados causarán fallos de búsqueda.
  3. Establece rangos de estadísticas razonables. Usa las pautas de BST de Primer monstruo.
  4. Asigna siempre sprites. Los sprites que falten se verán rosas/magenta en la batalla y en los menús.
  5. Prueba las cadenas de evolución de principio a fin. Asegúrate de que cada especie de la cadena exista en la base de datos.
  6. Usa las formas con moderación. Cada forma añade sobrecarga de memoria por los assets de sprites.