Saltar al contenido principal

Configure su primera batalla

Esta gu\u00eda le muestra c\u00f3mo configurar una zona de encuentros, activar una batalla salvaje y comprender el flujo de batalla. Al finalizar, tendr\u00e1 una batalla funcional que podr\u00e1 probar en el editor.

Prerrequisitos

  • MCE est\u00e1 instalado y el asistente de configuraci\u00f3n se ha completado.
  • Tiene al menos un monstruo en su base de datos (los 151 incluidos o uno que haya creado).
  • Tiene una escena con un personaje jugador y un tilemap basado en cuadr\u00edcula.

Paso 1: Crear una zona de encuentros

Las batallas salvajes se activan mediante tiles de encuentro en su tilemap. A continuaci\u00f3n se explica c\u00f3mo configurar uno:

  1. En la jerarqu\u00eda de su escena, seleccione la capa del tilemap donde desea los encuentros (t\u00edpicamente una capa "Grass" o "TallGrass").
  2. Cree un nuevo GameObject vac\u00edo como hijo de su cuadr\u00edcula: Click derecho > Create Empty, n\u00f3mbrelo GrassEncounters.
  3. A\u00f1ada el componente EncounterTile a este GameObject.
  4. Posici\u00f3nelo sobre los tiles donde deben ocurrir los encuentros usando las coordenadas basadas en tiles.

Alternativamente, puede pintar zonas de encuentro directamente en una capa de tilemap dedicada usando los tipos de tiles de encuentro de MCE.

Paso 2: Configurar la tabla de encuentros

El componente EncounterTile referencia un ScriptableObject WildEncountersSet. Cree uno:

  1. Assets > Create > OpenMon > Wild Encounters Set
  2. N\u00f3mbrelo de forma descriptiva, como Route1_GrassEncounters.
  3. Abra el ScriptableObject y configure los encuentros:
CampoDescripci\u00f3n
MonsterEl SO MonsterEntry de la especie que puede aparecer
Min LevelNivel m\u00ednimo del monstruo salvaje
Max LevelNivel m\u00e1ximo del monstruo salvaje
ProbabilityPeso del encuentro (mayor = m\u00e1s com\u00fan)
Encounter TypeCu\u00e1ndo puede activarse este encuentro (Walking, Surfing, Fishing, etc.)

A\u00f1ada m\u00faltiples entradas para crear variedad. Por ejemplo:

MonstruoRango de nivelProbabilidad
Flameleon3-540
Leaflet3-540
Sparkit4-620
  1. Asigne este WildEncountersSet al campo Encounters de su componente EncounterTile.

Paso 3: Configurar la escena de batalla

MCE utiliza una escena de batalla dedicada que se carga aditivamente cuando comienza una batalla. Necesita:

  1. Un componente BattleLauncher en su escena del mundo. T\u00edpicamente se encuentra en un GameObject de gesti\u00f3n persistente. Si us\u00f3 el asistente de configuraci\u00f3n, ya deber\u00eda existir.
  2. Una Escena de Batalla configurada en los ajustes de compilaci\u00f3n. La escena de batalla predeterminada est\u00e1 incluida con MCE.

El BattleLauncher maneja la transici\u00f3n:

  • Oscurece la pantalla.
  • Carga la escena de batalla aditivamente.
  • Instancia el BattleManager con los par\u00e1metros correctos.
  • Regresa al mundo de exploraci\u00f3n cuando la batalla termina.

Componentes del BattleManager

El BattleManager es el coraz\u00f3n del sistema de batalla. En la escena de batalla, encontrar\u00e1 un GameObject con el componente BattleManager, que utiliza una arquitectura modular con estos m\u00f3dulos principales:

M\u00f3duloProp\u00f3sito
BattlersModuleGestiona las instancias de combatientes en ambos lados
HealthModuleSeguimiento de HP, debilitamiento, curaci\u00f3n
MovesModuleEjecuci\u00f3n de movimientos, seguimiento de PP, efectividad de tipos
ItemsModuleUso de objetos en batalla
CaptureModuleMec\u00e1nicas de captura de monstruos salvajes
AIModuleToma de decisiones del enemigo
AnimationModuleAnimaciones de batalla y efectos visuales
AudioModuleM\u00fasica y efectos de sonido de batalla
StatusesModuleCondiciones de estado (quemadura, veneno, sue\u00f1o, etc.)
BattlerStatsModuleNiveles de estad\u00edsticas y modificaciones
BattlerSwitchModuleCambio entre miembros del equipo
RostersModuleGesti\u00f3n del equipo durante la batalla
ScenariosModuleConfiguraci\u00f3n del tipo de batalla (salvaje, entrenador, etc.)
MegaModuleActivaci\u00f3n de Mega Evoluci\u00f3n
CharactersModuleVisualizaci\u00f3n del sprite del entrenador

No necesita configurar estos individualmente. El BattleManager conecta todo autom\u00e1ticamente mediante inyecci\u00f3n de dependencias de Zenject.

Paso 4: Configurar el BattleStateMachine

El BattleStateMachine controla el flujo de la batalla:

Inicio -> Introducci\u00f3n -> Selecci\u00f3n de turno -> Ejecuci\u00f3n de acciones ->
-> Verificar debilitados -> Reemplazar debilitados -> Fin de turno ->
-> [volver a Selecci\u00f3n de turno o] -> Fin de batalla -> Resultados

La m\u00e1quina de estados viene preconfigurada en el prefab de la escena de batalla. Cada estado maneja las transiciones autom\u00e1ticamente bas\u00e1ndose en las condiciones de la batalla.

Paso 5: Probar la batalla

  1. Aseg\u00farese de que su escena del mundo tiene:

    • Un PlayerCharacter con un roster que contenga al menos un monstruo.
    • Un EncounterTile con un WildEncountersSet configurado.
    • Un BattleLauncher en un GameObject de gesti\u00f3n.
  2. Presione Play en el editor.

  3. Camine con su personaje hacia la zona de encuentros.

  4. Despu\u00e9s de algunos pasos (determinados por la tasa de encuentro), se activar\u00e1 una batalla.

Prueba r\u00e1pida

Para probar batallas inmediatamente sin caminar, puede:

  1. Establecer la tasa de encuentro al 100% en su EncounterTile.
  2. O usar el componente BattleLauncher directamente y llamar a su m\u00e9todo de lanzamiento desde un script de prueba.

Comprender el flujo de batalla

Cuando comienza una batalla, esto es lo que ocurre internamente:

  1. BattleLauncher recibe un disparador de encuentro del EncounterTile.
  2. Se crea un objeto BattleParameters con los datos del monstruo salvaje.
  3. La escena de batalla se carga aditivamente.
  4. BattleManager inicializa todos los m\u00f3dulos.
  5. BattleStateMachine entra en el estado Introduction (muestra el monstruo salvaje, reproduce su grito).
  6. Se presentan al jugador las opciones de acci\u00f3n: Luchar, Mochila, Monstruo, Huir.
  7. Las acciones se ejecutan en orden de velocidad.
  8. El ciclo contin\u00faa hasta que un lado se debilita o el jugador huye/captura.
  9. Se env\u00edan los BattleResultParameters de vuelta al mundo (experiencia ganada, objetos usados, monstruo capturado, etc.).
  10. La escena de batalla se descarga y el mundo de exploraci\u00f3n se reanuda.

Tipos de batalla

MCE soporta varios tipos de batalla de serie:

TipoDescripci\u00f3n
SalvajeEncuentro con un monstruo salvaje individual, se puede capturar
EntrenadorBatalla contra un NPC entrenador, no se puede capturar, recompensa dinero al ganar
DobleFormato de batalla dos contra dos
Con gui\u00f3nBatallas de historia con condiciones especiales

El tipo de batalla se determina por el enum BattleType pasado en BattleParameters.

Escuchar eventos de batalla (usuarios DLL)

Si est\u00e1 usando los niveles Lite, Basic o Pro (sin c\u00f3digo fuente), a\u00fan puede responder a eventos de batalla a trav\u00e9s del SDK:

using OpenMon.MCE.SDK;

public class MyBattleTracker : MonoBehaviour
{
[Inject] private IBattleSystem battleSystem;

private void OnEnable()
{
battleSystem.OnBattleStarted += HandleBattleStarted;
battleSystem.OnBattleEnded += HandleBattleEnded;
}

private void OnDisable()
{
battleSystem.OnBattleStarted -= HandleBattleStarted;
battleSystem.OnBattleEnded -= HandleBattleEnded;
}

private void HandleBattleStarted()
{
Debug.Log("A battle has started!");
}

private void HandleBattleEnded(bool playerWon)
{
Debug.Log($"Battle ended. Player won: {playerWon}");
}
}

Consulte la Gu\u00eda de la API P\u00fablica para m\u00e1s informaci\u00f3n sobre c\u00f3mo extender MCE sin c\u00f3digo fuente.

Soluci\u00f3n de problemas

ProblemaSoluci\u00f3n
La batalla no se activaVerifique que el EncounterTile tenga un WildEncountersSet v\u00e1lido asignado
Pantalla negra despu\u00e9s del encuentroVerifique que la escena de batalla est\u00e1 en la lista de escenas de Build Settings
El monstruo aparece en nivel 0Aseg\u00farese de que Min Level y Max Level est\u00e9n configurados en la tabla de encuentros
Sin m\u00fasica de batallaVerifique que BattleManagerAudioModule tenga clips de audio asignados
Se cuelga al iniciar la batallaEjecute MCE > Tools > Asset Validation para verificar referencias faltantes en la base de datos

Siguientes pasos