IConnection
Abstracción de transporte para conectar Eco con sockets o servicios de red personalizados.
IConnection
IConnection separa el modelo de red de Eco de la implementación física de la conexión. Esta abstracción permite que el runtime utilice el transporte TCP/UDP habitual o una integración externa compatible.
Eco
↓
ClienteJuego
↓
IConnection
├── TCP / sockets
├── Steam Networking
└── transporte personalizadoCuándo utilizarla
No necesitas implementar IConnection para un juego normal. Es apropiado cuando:
- la plataforma ofrece su propio transporte;
- necesitas reemplazar sockets por una API externa;
- estás creando una integración específica de servidor;
- quieres mantener el protocolo de Eco y cambiar sólo el canal físico de transporte.
Mantén separado el protocolo
Una conexión personalizada debe transportar los datos de Eco; no debería duplicar Canal, Objeto, ownership o sincronización. Esas responsabilidades siguen perteneciendo al runtime de Eco.
Responsabilidades
Una implementación de conexión debe encargarse de aspectos como:
Conectar
Desconectar
Enviar bytes
Recibir bytes
Estado de conexión
Dirección / identidad del peerEl cliente sigue interpretando los bytes mediante Paquete y Buffer.
Steam Networking
La arquitectura permite integrar Steam Networking como transporte alternativo. El juego conserva el mismo modelo de canales, jugadores y objetos, mientras IConnection sustituye la ruta de sockets.
Gameplay
↓
Eco
↓
ClienteJuego
↓
IConnection
↓
Steam NetworkingEsto resulta especialmente útil cuando una plataforma proporciona NAT traversal, identidad o routing propio.
Error habitual
No mezcles una implementación de IConnection con lógica de gameplay:
Incorrecto
IConnection
├── conectar
├── enviar bytes
└── crear enemigosLa separación correcta es:
IConnection
└── transporte
Eco / ClienteJuego
└── protocolo y sesión
Objeto / Componente
└── gameplayDiagnóstico
Cuando una conexión personalizada falla, comprueba por capas:
- conexión física establecida;
- bytes enviados y recibidos;
- handshake
RequestID/ResponseID; - creación de
ClienteJuego; - entrada en canales;
- procesamiento normal de paquetes.
Si el handshake no funciona, todavía no tiene sentido investigar objetos o RFC.
Referencias
Transportes personalizados
Integración de una conexión distinta del transporte estándar.
Steam y conexiones
Caso de uso de una plataforma externa.
ClienteJuego
Consumidor principal de la abstracción de conexión.
