Ownership y transferencia
Propiedad de objetos, autoridad, IDs de red y transferencia entre canales en Eco.
Ownership y transferencia
Un Objeto no es sólo un GameObject que todos pueden ver. Tiene identidad de red, canal y un propietario. Estas tres piezas permiten decidir quién puede originar determinadas operaciones y cómo se conserva la entidad cuando cambia su contexto.
Identidad del objeto
Eco asigna un identificador de red al objeto y lo registra dentro de su canal. En el código de bajo nivel el identificador puede empaquetarse junto con el identificador de la RFC para realizar despachos eficientes.
Canal + ID de Objeto
│
├── Buscar Objeto
├── Resolver RFC
└── Aplicar datos / eventosNo confíes en GetInstanceID() de Unity como identidad de red. Ese identificador sólo representa la instancia local del motor.
Propietario
Un Objeto puede consultar su propietario y si pertenece al jugador local.
if (ero.esMio)
{
// Entrada local autorizada para el objeto.
}El nombre concreto de la propiedad debe consultarse en la API de Eco de tu versión; conceptualmente, la propiedad representa la relación objeto → Jugador propietario.
Autoridad no es lo mismo que visibilidad
Todos los jugadores de un canal pueden recibir un objeto y sus eventos. Eso no significa que todos deban tener permiso para decidir su estado.
Un patrón seguro es:
Cliente propietario
│
├── solicita acción
▼
Servidor / autoridad
│
├── valida
├── cambia estado
└── comunica resultadoUna RFC recibida correctamente no convierte sus parámetros en datos confiables. La validación de reglas de juego debe permanecer en la autoridad real.
Transferencia entre canales
Eco conserva la capacidad heredada de TNet de transferir un objeto a otro canal. Durante el proceso la representación local puede quedar temporalmente en estado de transferencia y el objeto puede recibir un nuevo identificador en el canal destino.
Objeto #100 · Canal 10
│
│ transferir
▼
Canal 20
│
└── Objeto registrado con identidad válida en destinoEl cambio de canal no debe tratarse como un simple cambio de channelID local. El servidor coordina la operación para que los clientes de origen y destino reciban la transición correcta.
Jerarquías de objetos
Un objeto puede tener relación jerárquica con otros objetos de red. Al transferir una jerarquía, los clientes que entren posteriormente en el canal destino no necesariamente reconstruirán automáticamente todas las relaciones que dependían de la jerarquía anterior.
Cuando la jerarquía sea relevante para gameplay, conviene sincronizar explícitamente la relación padre-hijo o una ruta equivalente después de la transferencia.
Eliminación
Objeto.DestroySelf() representa una destrucción de red, no sólo un Destroy(gameObject) local. El servidor elimina el objeto de su estado y los clientes reciben la orden correspondiente.
ero.DestroySelf();Existe también una variante retardada para casos donde necesitas dejar tiempo para completar otras operaciones.
No uses Destroy() para entidades de red
Destruir directamente el GameObject puede dejar a otros participantes con una representación fantasma. Para entidades registradas utiliza el ciclo de destrucción de Objeto.
Relación con TNet
DeepWiki identifica esta misma separación en TNet mediante TNObject, owner, ownerID, uid, parent y transferencia entre canales. Eco conserva el concepto porque forma parte del modelo de red, pero los tipos y nombres públicos son los de Eco.
Objetos
Modelo completo de las entidades de red.
Varios canales
Ejemplo práctico de varios canales simultáneos.
