Objetos
Identidad, ownership, datos, componentes y ciclo de vida de los objetos de red de Eco.
Objetos
Un Objeto es la identidad de red asociada a un GameObject. Es la pieza que permite localizar una entidad dentro de un canal, conocer su propietario, recibir RFC y mantener datos sincronizados.
Objeto ≠ GameObject
El GameObject pertenece a Unity. Objeto aporta la identidad y el estado que hacen posible que esa entidad exista en la red.
Anatomía de un objeto
Identidad
id, channelID y uid permiten localizar el objeto dentro del contexto de red.
Ownership
owner, ownerID e isMine determinan quién tiene la autoridad lógica sobre el objeto.
Estado
Nodo, Set y Get permiten mantener datos asociados a la entidad.
Componentes
Los Componente implementan el comportamiento de gameplay conectado al objeto.
Identidad
Los objetos utilizan dos espacios principales de IDs:
| Tipo | Rango | Uso |
|---|---|---|
| Estático | 1–32767 | Objetos presentes desde la escena |
| Dinámico | 32768–16777215 | Objetos creados durante la ejecución |
Su identificador completo incorpora también el canal:
uid = (channelID << 32) | idEsto evita confundir objetos de diferentes canales que compartan el mismo id local.
Ciclo de vida
Prefab / escena
↓
Objeto creado
↓
Registro en Eco
↓
Operativo
↓
Transferencia / cambios de estado
↓
DestrucciónhasBeenRegistered indica que la creación terminó y se asignó el identificador correspondiente. hasBeenDestroyed indica que el objeto ya ha entrado en el proceso de destrucción.
Ownership
if (objeto.isMine)
{
// El jugador local es el propietario.
}
int propietario = objeto.ownerID;
Jugador jugador = objeto.owner;La propiedad no equivale a visibilidad:
Objeto
├── Propietario → Jugador A
└── Visible para → A, B, CConsulta Transferir la propiedad para el workflow completo.
Objetos estáticos
Eco no permite cambiar el propietario de un objeto estático de la misma forma que el de un objeto dinámico. Diseña las entidades que necesitarán ownership transferible como objetos dinámicos.
Datos del objeto
objeto.Set("vida", 100);
int vida = objeto.Get<int>("vida");Set actualiza el dato local inmediatamente. Cuando se solicita sincronización, Eco comprueba si el objeto puede enviar, quién es el propietario y si la operación debe atravesar una cola temporal.
Set()
│
├── Actualiza estado local
│
└── ¿Puede enviar?
│
├── Sí → sincronización
│
└── No → cola pendienteConsulta Sincronizar una entidad para ver este patrón en un workflow real.
Componentes
Un Componente busca el Objeto en su jerarquía de Unity y ofrece métodos de conveniencia para comunicación, datos, instanciación y destrucción.
GameObject
├── Objeto
├── Componente de movimiento
├── Componente de combate
└── Componente de inventarioEl código de gameplay debería vivir normalmente en componentes, mientras que Objeto concentra la identidad de red.
Capacidad de envío
PuedeEnviar no significa simplemente “hay conexión”. El objeto debe tener un ID válido, no estar destruido, pertenecer a un canal utilizable y no estar en una transición de entrada al canal.
Esto resulta especialmente importante durante:
- entrada a canales;
- cambios de escena;
- creación dinámica;
- transferencia entre canales;
- destrucción.
Destrucción y transferencia
onDestroy y onTransfer permiten observar eventos del ciclo de vida de red:
objeto.onDestroy += () =>
{
// Preparar la lógica local antes de la destrucción de red.
};
objeto.onTransfer += (nuevoCanal, nuevoID) =>
{
// Actualizar referencias dependientes del contexto.
};Consulta Instanciar y destruir objetos y Transferir un objeto entre canales.
Qué no debe hacer un objeto
Mantén las responsabilidades separadas
Objeto no debería convertirse en tu sistema de gameplay. Utilízalo como identidad, ownership, estado y puerta de entrada a la comunicación; coloca reglas de gameplay en Componente.
Correspondencia con TNet
| Eco | TNet | Función |
|---|---|---|
Objeto | TNObject | Identidad y estado de red |
Componente | TNBehaviour | Comportamiento asociado |
owner | owner | Jugador propietario |
ownerID | ownerID | Identificador del propietario |
isMine | isMine | Propiedad local |
uid | uid | Contexto completo de identidad |
