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.
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:
| Propiedad | Interfaz | Propósito |
|---|---|---|
engine.Database | IMonsterDatabase | Consultar monstruos, movimientos, objetos y tipos |
engine.Battle | IBattleSystem | Estado y eventos de la batalla |
engine.Player | IPlayerData | Equipo, dinero, nombre y medallas del jugador |
engine.SaveSystem | ISaveSystem | Operaciones de guardado y carga |
engine.Version | string | Cadena 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.