epic-sdk-integrations

Guide for epic-sdk-integrations

Epic: SDK & Integrations

Plugin SDK, MCP server, and external integrations.

Missions Completed

🔌 Plugin SDK

Mission SDK-CORE: Engine Independence (2026-01-17)

Role: Platform Engineer
Developer Experience
  • Plugin Examples: examples/basic_plugin.rs
  • API Documentation: Rustdoc for lib.rs and Plugin trait
  • Lua Type Defs: generate_cats_definitions for IDE support
  • Hot Reloading: notify crate file watching
  • Crates.io: publish-sdk.yml workflow
Safety & Sandboxing
  • Lua Sandbox: Memory limits (32MB/64MB)
  • Version Check: check_sdk_compatibility
  • Integration Tests: tests/integration_tests.rs
Internal Integration
  • Prediction Rollback: client_prediction_system consuming GlobalSDKActionQueue

🤖 MCP Server

Mission T: MCP Server Integration (2026-01-13)

  • MCP Server Setup: TypeScript project
  • Resource Exposure: Items, Quests as MCP resources
  • Tool Exposure: Server status, Player lookup tools

🔗 External Integrations

Mission S: Discord Tooling (2026-01-13)

  • Discord Bot: Slash command service
  • /stats: CCU, RAM/CPU metrics
  • /health: Backend status check
  • Alert Integration: Alertmanager → Discord webhook

Mission AD: Localization (2026-01-15)

  • Infrastructure: Fluent/Gettext key replacement
  • Crowdin/Pontoon: Community translation workflow
  • Dynamic Switching: Runtime language toggle

📊 Analytics Integration

Mission J: Grafana Dashboard (2026-01-12)

  • ClickHouse Connection: Players, Wealth, Suspicion, Hardware

Mission M: Analytics Enhancements (2026-01-13)

  • RabbitMQ Integration: WebSocket analytics
  • PII Anonymization: Hashing at rest

🏗️ Data Pipeline

Mission Z: Data Unification (2026-01-15)

  • Sync Tool: SQL → Client JSON export
  • Migration: NPCs, Shops, Magic, Skills, Prayers verified
  • Validation: npm run export-data script

Mission AJ: Content Pipeline (2026-01-15)

  • Asset Validation: Pre-commit texture/model checks
  • Model Viewer: Standalone GLB inspector
  • Hot Reloading: Dynamic asset reload without restart