logo
Runtime

Cliente

Ciclo de vida de ClienteJuego, conexión, canales, transporte y estado de sesión.

Cliente

ClienteJuego contiene la lógica cliente de Eco: conexión, procesamiento de paquetes, canales, jugador local, transporte y modo servidor local.

Fachada frente a implementación

Desde gameplay normalmente trabajarás con la fachada Eco y componentes de alto nivel. ClienteJuego es el runtime que mantiene el estado y ejecuta las operaciones de red.

Anatomía

Conexión

Gestiona TCP y las etapas del handshake.

Canales

Mantiene los canales activos y las solicitudes de unión pendientes.

Jugador local

Expone identidad, nombre y playerData del participante local.

Transporte

Utiliza TCP como camino principal, UDP cuando está disponible y IConnection para conexiones personalizadas.

Estados de sesión

isTryingToConnect


   isConnected

        ├── isJoiningChannel
        │        │
        │        ▼
        └──── isInChannel

Estos estados no son intercambiables. Estar conectado no implica pertenecer a un canal.

Conexión

Iniciar

cliente.Connect(endpoint);

Esperar el handshake

Connect sólo inicia el proceso. Comprueba isConnected antes de usar operaciones que requieren una sesión confirmada.

Comprobar el estado

if (cliente.isConnected)
{
    // Puede solicitarse una operación dependiente del servidor.
}

Canales

El cliente mantiene una colección de canales y otra de identificadores que todavía se están uniendo.

bool dentro = cliente.IsInChannel(10);
bool pendiente = cliente.IsJoiningChannel(10);
Canal canal = cliente.GetChannel(10);

Puede participar simultáneamente en varios canales:

cliente.JoinChannel(10, "Mundo", true, 100, "");
cliente.JoinChannel(20, "Partida", false, 4, "");

Consulta Canales para entender qué significa esta pertenencia.

Transporte

Es el transporte principal de la sesión y del protocolo fiable.

Es opcional y se utiliza cuando la configuración y la plataforma permiten tráfico de baja latencia.

Permite abstraer la conexión subyacente para integraciones personalizadas que no utilizan directamente el socket estándar.

Procesamiento de paquetes

El cliente recibe datos y los convierte en Paquete y operaciones de runtime.

bytes

Buffer

Paquete

ClienteJuego

Canal / Objeto / Jugador

ClienteJuego mantiene además contadores de paquetes y bytes enviados/recibidos. Su implementación contempla opciones para limitar y perfilar el trabajo realizado por frame.

Tiempo y diagnóstico

El cliente expone información como:

cliente.serverTime;
cliente.serverUptime;
cliente.ping;
cliente.sentPackets;
cliente.receivedPackets;

Estos valores son útiles para diagnóstico, pero no deben utilizarse como fuente única de verdad para reglas de gameplay.

Datos del jugador

El cliente distingue entre datos del objeto y datos del participante:

cliente.playerData;
cliente.SetPlayerData("perfil/nivel", 12);
cliente.SyncPlayerData();

Consulta Sincronizar los datos del jugador.

Servidor local

ClienteJuego puede utilizar un ServidorJuego local sin sockets. Esto conserva el flujo lógico de cliente-servidor, pero no debe utilizarse como única validación de comportamiento de red real.

Guía: Servidor local

Workflow para levantar cliente y servidor dentro del mismo proceso.

Desconexión

cliente.Disconnect();

La desconexión cierra la sesión y permite que el runtime libere sus dependencias de transporte.

No limpies el estado a mano sin entender el runtime

Si tu juego mantiene referencias propias a jugadores, canales u objetos, enlázalas a los callbacks de ciclo de vida de Eco en lugar de asumir que el orden de destrucción de Unity será suficiente.

Correspondencia con TNet

EcoTNetResponsabilidad
ClienteJuegoGameClientRuntime cliente
ProtocoloTcpTcpProtocolTransporte TCP
ProtocoloUdpUdpProtocolTransporte UDP
JugadorPlayerParticipante

Referencias

On this page