Sistema de tipos
El sistema de tipos es la columna vertebral de la estrategia de batalla en cualquier juego de captura de monstruos. MCE incluye una tabla de efectividad de tipos totalmente configurable, soporte de doble tipo y herramientas de editor para personalizar los enfrentamientos entre tipos.
Descripción general
Cada monstruo tiene uno o dos tipos. Cada movimiento tiene exactamente un tipo. Cuando un movimiento golpea a un objetivo, el juego calcula un multiplicador de efectividad de tipo a partir del tipo del movimiento frente al tipo (o tipos) del objetivo.

La tabla son datos, no código: el editor de arriba escribe los mismos assets que lee en tiempo de ejecución la fórmula de batalla. Eso es lo que convierte una cuadrícula de 18 tipos en un punto de partida y no en una regla: puedes añadir un tipo, quitar otro o reescribir una celda, y no hace falta recompilar nada.
Los multiplicadores por defecto son:
| Resultado | Multiplicador | Mensaje |
|---|---|---|
| Súper efectivo | 2,0x | "It's super effective!" |
| Poco efectivo | 0,5x | "It's not very effective..." |
| Inmune | 0,0x | "It doesn't affect [target]..." |
| Neutral | 1,0x | (sin mensaje) |
En los monstruos de doble tipo, los multiplicadores se acumulan de forma multiplicativa. Un movimiento de Fuego contra un monstruo Planta/Hielo inflige 2,0 x 2,0 = 4,0x de daño.
Tabla de tipos por defecto
El demo trae 18 tipos que coinciden con el género estándar de captura de monstruos (más un tipo Typeless):
Normal, Fire, Water, Grass, Electric, Ice, Fighting, Poison, Ground, Flying, Psychic, Bug, Rock, Ghost, Dragon, Dark, Steel, Fairy
Estos 18 tipos son solo un punto de partida. Los tipos son assets MonsterType normales, así que puedes agregarlos, quitarlos o renombrarlos. Algunos juegos usan menos tipos (las primeras generaciones usaban 15), y algunos juegos originales crean tablas de tipos totalmente personalizadas.
Tabla de efectividad de tipos
La tabla se guarda en los propios tipos: cada asset MonsterType tiene un diccionario AttackMultipliers (tipo defensor → multiplicador) para los movimientos de ese tipo. El método IMonsterDatabase.GetTypeEffectiveness() devuelve el multiplicador en tiempo de ejecución:
float multiplier = database.GetTypeEffectiveness(attackingType, defendingType);
Enfrentamientos clave que conviene recordar:
| Tipo atacante | Fuerte contra (2x) | Débil contra (0,5x) | Inmune (0x) |
|---|---|---|---|
| Fire | Grass, Ice, Bug, Steel | Fire, Water, Rock, Dragon | -- |
| Water | Fire, Rock, Ground | Water, Grass, Dragon | -- |
| Grass | Water, Rock, Ground | Fire, Grass, Poison, Flying, Bug, Dragon, Steel | -- |
| Electric | Water, Flying | Electric, Grass, Dragon | Ground |
| Ground | Fire, Electric, Poison, Rock, Steel | Grass, Bug | Flying |
| Ghost | Psychic, Ghost | Dark | Normal |
| Normal | -- | Rock, Steel | Ghost |
La tabla completa se puede ver y editar en el Type Chart Editor. Un par que falte en el diccionario de un tipo cuenta como neutral (1,0x).
Dobles tipos
Cuando un monstruo tiene dos tipos, ambos se comprueban al recibir daño:
Final Multiplier = Effectiveness(move_type vs type1) * Effectiveness(move_type vs type2)
Esto crea varios escenarios interesantes:
| Tipo del movimiento | Tipos del objetivo | Cálculo | Resultado |
|---|---|---|---|
| Ice | Dragon / Flying | 2,0 x 2,0 | 4,0x (doblemente súper efectivo) |
| Electric | Water / Ground | 2,0 x 0,0 | 0,0x (inmune, Ground lo absorbe) |
| Fighting | Normal / Ghost | 1,0 x 0,0 | 0,0x (inmune, Ghost lo absorbe) |
| Water | Fire / Rock | 2,0 x 2,0 | 4,0x (doblemente súper efectivo) |
STAB (bonificación por mismo tipo)
Cuando un monstruo usa un movimiento que coincide con uno de sus propios tipos, el movimiento recibe una bonificación STAB de 1,5x (DamageMath.StabMultiplier). La bonificación se multiplica con la efectividad de tipo y los demás factores del daño:
Final Damage = Base Damage * STAB * Type Effectiveness
Por ejemplo, un monstruo de tipo Water que usa un movimiento Water contra un objetivo Fire:
Base * 1.5 (STAB) * 2.0 (super effective) = 3.0x total
Usar el Type Chart Editor
El Type Chart Editor es una herramienta de cuadrícula interactiva para ver y modificar los enfrentamientos entre tipos:
Abre el OpenMon Hub (Tools > MCE > OpenMon Hub) → pestaña Database → Type Chart Editor
En el editor:
- Modo de vista: la cuadrícula muestra la tabla de tipos NxN completa; la barra de título indica cuántos tipos lista. Las filas son los tipos atacantes, las columnas son los tipos defensores, y el color de cada tipo marca su fila y su columna.
- Código de colores: verde = súper efectivo (2x), rojo = poco efectivo (0,5x), gris oscuro = sin efecto (0x), gris claro = neutral (1x).
- Modo de edición: haz clic en cualquier celda para recorrer los valores: neutral → 2 → 0,5 → 0 → neutral. Cada cambio se puede deshacer con el Undo de Unity.
- Refresh: recarga la lista de tipos del proyecto (también se recarga cuando la ventana recibe el foco).
- Save All: marca todos los tipos como modificados y guarda los assets en disco.
La cuadrícula lista los assets MonsterType que tienen Index activado. Para agregar o quitar un tipo, crea o elimina el asset (abajo): el editor no tiene botones propios para agregar ni quitar.
Modificar la tabla de tipos afecta a todas las batallas de tu juego. Pruébalo a fondo después de cualquier cambio. Agregar o quitar tipos requiere actualizar las asignaciones de monstruos y movimientos.
Crear tipos personalizados
Si estás creando un juego original, quizá quieras una tabla de tipos personalizada:
- Crea un asset
MonsterType:Assets > Create > MCE > Monster Database > Type, o New Monster Type en la pestaña Database del Hub. Ponle un nombre (p. ej.,Cosmic,Sound,Digital), establece su color e icono, y deja Index activado para que aparezca en la tabla. - Abre el Type Chart Editor y pulsa Refresh: el nuevo tipo aparece como una fila y una columna.
- Establece los valores de efectividad para cada interacción con los tipos existentes.
- Crea monstruos y movimientos que usen tu nuevo tipo.
Consejos de diseño para tipos personalizados
- Equilibra ofensiva y defensivamente. Un tipo debería tener aproximadamente las mismas fortalezas que debilidades.
- Evita demasiadas inmunidades. Las inmunidades son poderosas y pueden crear un juego frustrante si se abusa de ellas.
- Mantén manejable el número total. Entre 15 y 20 tipos es el punto ideal. Más de 25 resulta difícil de memorizar para los jugadores.
- Crea contrajuego interesante. Los mejores enfrentamientos entre tipos generan decisiones de riesgo/recompensa, no victorias automáticas.
Consultar tipos desde el código
Interfaz del SDK (ediciones Indie, Pro, Source y Studio)
using System.Linq;
using OpenMon.MCE.SDK;
IReadOnlyList<MonsterType> allTypes = engine.Database.GetAllTypes();
var fire = allTypes.FirstOrDefault(type => type.name == "Fire");
var grass = allTypes.FirstOrDefault(type => type.name == "Grass");
float effectiveness = engine.Database.GetTypeEffectiveness(fire, grass);
// Returns 2.0 when both types exist in the database
Acceso directo (ediciones Source y Studio)
Con acceso al código fuente, también puedes trabajar con la tabla de tipos directamente mediante las clases de MonsterDatabase y modificar los valores de efectividad en tiempo de ejecución para condiciones de batalla especiales.
Buenas prácticas
- Usa el Type Chart Editor para las modificaciones: registra pasos de deshacer y guarda los assets de tipo por ti.
- Documenta tus tipos personalizados si creas un juego original. Los jugadores necesitan aprender los enfrentamientos.
- Prueba los casos límite con dobles tipos. Las debilidades 4x y las dobles inmunidades pueden sorprender a los jugadores.
- Ten en cuenta la distribución de movimientos al equilibrar los tipos. Un tipo que es defensivamente fuerte pero no tiene buenos movimientos disponibles es, en la práctica, débil.