Saltar al contenido principal

Resumen de la API del SDK

El SDK de MCE ofrece una superficie de API pública limpia y estable para interactuar con el motor desde el código de tu juego. Todas las interfaces del SDK están en el namespace OpenMon.MCE.SDK. La API pública del SDK se incluye en las ediciones Indie, Pro, Source y Studio; la edición Starter mantiene la API cerrada.

sdk overview

Si no está en una de estas cuatro interfaces, no forma parte del contrato del SDK.

Principios de diseño​

  • Basado en interfaces: todas las API públicas se exponen como interfaces, no como clases concretas. Esto permite que la implementación evolucione sin romper tu código.
  • Orientado a la lectura: la mayoría de los métodos del SDK son consultas de solo lectura. Las modificaciones ocurren a través de los sistemas internos del motor (CommandGraph, Inspector, etc.).
  • Dirigido por eventos: los cambios de estado importantes se comunican mediante eventos de C#.
  • Inyectado con Zenject: accede a las interfaces del SDK con el atributo [Inject].

Punto de entrada​

El punto de entrada principal es IMonsterCaptureEngine:

[Inject] private IMonsterCaptureEngine engine;

Desde esta interfaz accedes a todos los subsistemas:

PropiedadInterfazPropósito
engine.DatabaseIMonsterDatabaseConsultar monstruos, movimientos, objetos y tipos
engine.BattleIBattleSystemEstado y eventos de la batalla
engine.PlayerIPlayerDataEquipo, dinero, nombre y medallas del jugador
engine.SaveSystemISaveSystemOperaciones de guardado y carga
engine.VersionstringCadena de versión del motor

Ejemplo rápido​

using OpenMon.MCE.SDK;
using Zenject;

public class GameDashboard : MonoBehaviour
{
[Inject] private IMonsterCaptureEngine engine;

private void Start()
{
// Query database
var allMonsters = engine.Database.GetAllMonsters();
Debug.Log($"Database has {allMonsters.Count} monster species");

// Check player state
Debug.Log($"Player: {engine.Player.PlayerName}");
Debug.Log($"Team size: {engine.Player.PlayerRoster.RosterSize}");
Debug.Log($"Money: {engine.Player.Money}");
Debug.Log($"Badges: {engine.Player.BadgeCount}");

// Listen to battle events
engine.Battle.OnBattleStarted += () => Debug.Log("Battle!");
engine.Battle.OnBattleEnded += (won) => Debug.Log($"Won: {won}");

// Save/load
if (engine.SaveSystem.HasSaveData(0))
Debug.Log("Save slot 0 has data");
}
}

Las interfaces de base de datos y de jugador leen el estado vivo del motor. Las interfaces de batalla y de guardado (engine.Battle, engine.SaveSystem) son fachadas que dependen de ganchos del motor que todavía no están conectados: lee las notas de IBattleSystem e ISaveSystem antes de confiar en sus eventos.

Consulta las páginas individuales de la API para ver la documentación detallada de cada interfaz.