ClienteJuego
Runtime interno del cliente de Eco para conexiones, canales, paquetes y estado de sesión.
ClienteJuego
ClienteJuego es la implementación interna de la sesión cliente. La mayoría del gameplay debe utilizar Eco, pero esta clase es fundamental para integrar sistemas avanzados, depurar el runtime y trabajar con transportes personalizados.
Estado de sesión
| Miembro | Significado |
|---|---|
isConnected | Conexión establecida |
isTryingToConnect | Intentando conectar |
isJoiningChannel | Existe una entrada pendiente |
isInChannel | Pertenece al contexto consultado |
stage | Etapa interna del cliente |
playerID | ID local |
playerName | Nombre actual |
playerData | Nodo de datos del jugador |
Conectado y dentro de un canal son estados diferentes.
Canales
cliente.IsInChannel(idCanal);
cliente.IsJoiningChannel(idCanal);
cliente.GetChannel(idCanal);
cliente.JoinChannel(...);
cliente.LeaveChannel(idCanal);La colección channels representa los canales activos del cliente. El modelo permite varios canales simultáneos.
Transporte
cliente.protocol;
cliente.custom;
cliente.canUseUDP;
cliente.listeningPort;
cliente.tcpEndPoint;
cliente.ping;custom permite sustituir la conexión mediante IConnection sin cambiar el modelo lógico de canales y objetos.
Métricas
cliente.sentPackets;
cliente.sentBytes;
cliente.receivedPackets;
cliente.receivedBytes;
cliente.serverTime;
cliente.serverUptime;Estas propiedades son útiles para instrumentación y para comprobar si un problema está en gameplay, procesamiento o transporte.
Cola de paquetes
El cliente recibe datos del transporte y los procesa durante su ciclo de actualización. El procesamiento distribuido evita que una ráfaga de paquetes bloquee indefinidamente el frame.
Socket / IConnection
↓
Buffer
↓
Cola de entrada
↓
ProcesarPaquetes
↓
DespachoPaquetes personalizados
cliente.packetHandlers[(byte)miPaquete] = OnPacket;El handler debe respetar el formato binario definido por quien genera el paquete.
Relación con Eco
Gameplay
↓
Eco
↓
ClienteJuego
├── Transporte
├── Canales
├── Jugador
├── Paquetes
└── ObjetosNo expongas ClienteJuego innecesariamente
Encapsula el acceso directo dentro de sistemas de infraestructura. El gameplay normal debe permanecer sobre la fachada de Eco para evitar acoplamiento al runtime.
Código fuente
ClienteJuego.cs
Implementación actual del runtime cliente.
Eco
Fachada recomendada para gameplay.
