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:
- En la jerarqu\u00eda de su escena, seleccione la capa del tilemap donde desea los encuentros (t\u00edpicamente una capa "Grass" o "TallGrass").
- Cree un nuevo GameObject vac\u00edo como hijo de su cuadr\u00edcula:
Click derecho > Create Empty, n\u00f3mbreloGrassEncounters. - A\u00f1ada el componente EncounterTile a este GameObject.
- 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:
Assets > Create > OpenMon > Wild Encounters Set- N\u00f3mbrelo de forma descriptiva, como
Route1_GrassEncounters. - Abra el ScriptableObject y configure los encuentros:
| Campo | Descripci\u00f3n |
|---|---|
| Monster | El SO MonsterEntry de la especie que puede aparecer |
| Min Level | Nivel m\u00ednimo del monstruo salvaje |
| Max Level | Nivel m\u00e1ximo del monstruo salvaje |
| Probability | Peso del encuentro (mayor = m\u00e1s com\u00fan) |
| Encounter Type | Cu\u00e1ndo puede activarse este encuentro (Walking, Surfing, Fishing, etc.) |
A\u00f1ada m\u00faltiples entradas para crear variedad. Por ejemplo:
| Monstruo | Rango de nivel | Probabilidad |
|---|---|---|
| Flameleon | 3-5 | 40 |
| Leaflet | 3-5 | 40 |
| Sparkit | 4-6 | 20 |
- Asigne este
WildEncountersSetal campo Encounters de su componenteEncounterTile.
Paso 3: Configurar la escena de batalla
MCE utiliza una escena de batalla dedicada que se carga aditivamente cuando comienza una batalla. Necesita:
- 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.
- 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
BattleManagercon 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\u00f3dulo | Prop\u00f3sito |
|---|---|
| BattlersModule | Gestiona las instancias de combatientes en ambos lados |
| HealthModule | Seguimiento de HP, debilitamiento, curaci\u00f3n |
| MovesModule | Ejecuci\u00f3n de movimientos, seguimiento de PP, efectividad de tipos |
| ItemsModule | Uso de objetos en batalla |
| CaptureModule | Mec\u00e1nicas de captura de monstruos salvajes |
| AIModule | Toma de decisiones del enemigo |
| AnimationModule | Animaciones de batalla y efectos visuales |
| AudioModule | M\u00fasica y efectos de sonido de batalla |
| StatusesModule | Condiciones de estado (quemadura, veneno, sue\u00f1o, etc.) |
| BattlerStatsModule | Niveles de estad\u00edsticas y modificaciones |
| BattlerSwitchModule | Cambio entre miembros del equipo |
| RostersModule | Gesti\u00f3n del equipo durante la batalla |
| ScenariosModule | Configuraci\u00f3n del tipo de batalla (salvaje, entrenador, etc.) |
| MegaModule | Activaci\u00f3n de Mega Evoluci\u00f3n |
| CharactersModule | Visualizaci\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
-
Aseg\u00farese de que su escena del mundo tiene:
- Un PlayerCharacter con un roster que contenga al menos un monstruo.
- Un EncounterTile con un
WildEncountersSetconfigurado. - Un BattleLauncher en un GameObject de gesti\u00f3n.
-
Presione Play en el editor.
-
Camine con su personaje hacia la zona de encuentros.
-
Despu\u00e9s de algunos pasos (determinados por la tasa de encuentro), se activar\u00e1 una batalla.
Para probar batallas inmediatamente sin caminar, puede:
- Establecer la tasa de encuentro al 100% en su
EncounterTile. - O usar el componente
BattleLauncherdirectamente 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:
- BattleLauncher recibe un disparador de encuentro del
EncounterTile. - Se crea un objeto
BattleParameterscon los datos del monstruo salvaje. - La escena de batalla se carga aditivamente.
BattleManagerinicializa todos los m\u00f3dulos.BattleStateMachineentra en el estado Introduction (muestra el monstruo salvaje, reproduce su grito).- Se presentan al jugador las opciones de acci\u00f3n: Luchar, Mochila, Monstruo, Huir.
- Las acciones se ejecutan en orden de velocidad.
- El ciclo contin\u00faa hasta que un lado se debilita o el jugador huye/captura.
- Se env\u00edan los
BattleResultParametersde vuelta al mundo (experiencia ganada, objetos usados, monstruo capturado, etc.). - 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:
| Tipo | Descripci\u00f3n |
|---|---|
| Salvaje | Encuentro con un monstruo salvaje individual, se puede capturar |
| Entrenador | Batalla contra un NPC entrenador, no se puede capturar, recompensa dinero al ganar |
| Doble | Formato de batalla dos contra dos |
| Con gui\u00f3n | Batallas 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
| Problema | Soluci\u00f3n |
|---|---|
| La batalla no se activa | Verifique que el EncounterTile tenga un WildEncountersSet v\u00e1lido asignado |
| Pantalla negra despu\u00e9s del encuentro | Verifique que la escena de batalla est\u00e1 en la lista de escenas de Build Settings |
| El monstruo aparece en nivel 0 | Aseg\u00farese de que Min Level y Max Level est\u00e9n configurados en la tabla de encuentros |
| Sin m\u00fasica de batalla | Verifique que BattleManagerAudioModule tenga clips de audio asignados |
| Se cuelga al iniciar la batalla | Ejecute MCE > Tools > Asset Validation para verificar referencias faltantes en la base de datos |
Siguientes pasos
- An\u00e1lisis profundo del Sistema de Batalla -- Aprenda la arquitectura completa de batalla.
- Sistema de Movimientos -- Comprenda el sistema de m\u00e1s de 668 movimientos.
- IA de Batalla -- Configure y personalice la IA enemiga.