logo
Funciones avanzadas

Transportes personalizados

Cómo extender Eco mediante IConnection sin acoplar el gameplay al transporte físico.

Transportes personalizados

Eco separa la API de alto nivel de la conexión física mediante IConnection. Esta abstracción es una de las ideas de TNet que conviene conservar porque permite sustituir TCP/UDP o integrar plataformas externas sin reescribir Eco, Objeto y Componente.

Idea general

Gameplay

Eco / Objeto / Componente

Paquete / Buffer

IConnection

Steam Networking / transporte propio / integración externa

El gameplay no debería saber si un paquete ha viajado por una implementación concreta.

Activación

Eco expone ProtocoloPersonalizado para instalar una implementación de IConnection.

Eco.ProtocoloPersonalizado = miConexion;

La conexión personalizada debe respetar el contrato de Eco y devolver el comportamiento esperado por el cliente. Una implementación incorrecta puede parecer funcional en conexión inicial y fallar posteriormente con canales, paquetes o cierres.

Cuándo utilizarlo

Un transporte personalizado tiene sentido cuando:

  • una plataforma exige una API propia de networking;
  • Steam Networking debe sustituir el socket tradicional;
  • necesitas un relay o servicio externo;
  • quieres integrar una capa de transporte corporativa o de consola;
  • necesitas controlar cómo se crean y consumen los endpoints.

Para un juego estándar LAN/WAN no conviene introducir esta capa sin necesidad.

Qué no debe cambiar

Aunque cambies el transporte, estas abstracciones deben seguir funcionando igual:

Canal
Jugador
Objeto
Componente
RFC
Objetivo
Nodo
Paquete

Si el gameplay necesita conocer detalles de IConnection, probablemente la abstracción está filtrándose demasiado arriba.

Steam

La integración con Steam es un caso particular de transporte/plataforma. Steam puede aportar identidad, matchmaking o comunicación, pero no conviene mezclar automáticamente esos conceptos con el modelo de Canal de Eco.

Un diseño limpio separa:

Steam
├── identidad de plataforma
├── descubrimiento / sesión
└── transporte si se utiliza

Eco
├── Jugador
├── Canal
├── Objeto
├── RFC
└── estado sincronizado

Diagnóstico

Cuando una implementación personalizada conecta pero no funciona correctamente, comprueba en este orden:

Conectividad

Verifica que la conexión alcanza el estado conectado de Eco.

Paquetes

Verifica que un Buffer enviado vuelve al receptor sin truncado ni modificación.

Orden

Comprueba que la conexión conserva las garantías esperadas por la parte fiable del protocolo.

Cierre

Prueba desconexión manual, pérdida de enlace, cambio de escena y cierre de aplicación.

El transporte no debe reinventar Eco

IConnection está pensado para sustituir la capa física de comunicación, no para crear un segundo sistema de canales, objetos o RPC paralelo.

Steam y conexiones

Integración específica con Steam y plataformas externas.

Arquitectura

Dónde encaja IConnection dentro del sistema.

On this page