logo
ReferenciaAPI

Canal

Referencia de un ámbito compartido de red, sus jugadores, objetos, RFC y persistencia.

Canal

Canal representa un ámbito lógico de estado compartido. Un mismo cliente puede pertenecer a varios canales y un canal puede contener jugadores, objetos dinámicos, datos y operaciones persistentes.

Identidad y estado

MiembroPropósito
idIdentidad del canal
levelNivel asociado
passwordProtección de entrada
isPersistentMantener el canal aunque quede vacío
isClosedBloquear nuevas entradas
isLockedEstado de bloqueo del canal
playerLimitLímite de jugadores
jugadoresParticipantes actuales
hostAnfitrión actual
rfcsRFC guardadas
createdObjetos dinámicos persistentes
destroyedObjetos dinámicos destruidos

Entrada

Un canal abierto y con plazas disponibles puede aceptar nuevos jugadores.

if (canal.isOpen)
{
    // El canal puede aceptar una entrada.
}

El hecho de que un canal exista no implica que un cliente concreto ya haya terminado de entrar en él.

Objetos dinámicos

Eco separa los objetos estáticos de escena de los objetos creados durante el runtime. Los dinámicos necesitan IDs libres dentro del canal y pueden entrar en created cuando se persisten.

Canal
├── Objetos de escena
└── Objetos dinámicos
    ├── creados
    └── destruidos

Jugadores y ownership

Cuando un jugador abandona un canal, los objetos que posee pueden seguir destinos diferentes según su configuración: destrucción, transferencia o persistencia.

Por eso la salida de un jugador debe tratarse como una operación sobre el estado del canal, no sólo sobre la conexión.

RFC persistentes

rfcs conserva operaciones necesarias para reconstruir estado del canal. El orden es importante: si una RFC guardada se modifica, Eco puede reubicarla para mantener la secuencia de reconstrucción correcta.

Transferencia

La transferencia de un objeto dinámico entre canales cambia su contexto y puede asignarle otro ID. El protocolo debe aceptar durante la transición referencias que todavía utilicen el identificador antiguo.

Sólo objetos dinámicos

Los objetos estáticos de escena no utilizan el mismo mecanismo de transferencia.

Sleep y Wake

Los canales vacíos pueden pasar a un estado de reposo:

Canal activo
    ↓ último jugador abandona
Sleep()

Estado descargado / serializado
    ↓ siguiente entrada
Wake()

Canal activo

Esto reduce memoria a costa de trabajo adicional cuando el canal vuelve a utilizarse.

API relacionada

Canales

Uso de canales desde cliente y gameplay.

Persistencia

Conservación del estado del canal y sus objetos.

Canal.cs

Implementación actual.

On this page