logo
Guías

Primer objeto

Primer objeto

Esta guía muestra el paso siguiente después de conectar el cliente: trabajar con una entidad que tenga identidad de red y comportamiento asociado.

Modelo mental

En Eco, Objeto representa la identidad de red y Componente implementa el comportamiento asociado. No son conceptos intercambiables.

Crear la entidad

Un objeto puede corresponder a un GameObject de Unity que tenga un Objeto y uno o varios Componente.

GameObject
├── Objeto
├── Componente
└── otros componentes de Unity

El objeto necesita un identificador de red válido para participar en la comunicación con el servidor.

Añadir un componente de red

El patrón habitual es derivar de Componente:

public class MiUnidad : Componente
{
    // Comportamiento de red de la unidad.
}

El componente se asocia al Objeto de su jerarquía y puede utilizarlo como contexto de red.

Leer y modificar estado

Para datos de estado utiliza las operaciones de Objeto o sus accesos de conveniencia desde Componente:

Set("vida", 100);
int vida = Get<int>("vida");

El valor se modifica localmente y Eco determina cómo debe propagarse según la autoridad del objeto y el estado de la conexión.

Comprobar propiedad

Antes de permitir determinadas operaciones, comprueba la propiedad del objeto:

if (ero.isMine)
{
    Set("vida", 100);
}

Ser capaz de observar un objeto no implica ser su propietario.

Enviar una acción

Cuando lo que necesitas comunicar es una acción puntual, utiliza el mecanismo de RFC disponible en el objeto:

ero.Send("Atacar", Objetivo.Otros);

La acción no debe confundirse con el estado. Si vida representa un valor persistente de la entidad, es preferible sincronizar ese dato en lugar de enviar continuamente llamadas que representen su valor.

Destruir el objeto

El ciclo de vida de red y el ciclo de vida de Unity están relacionados, pero no son idénticos. Utiliza la API de Eco para solicitar la destrucción de un objeto de red en lugar de asumir que Destroy(gameObject) informa automáticamente al servidor.

Gameplay

Destrucción de red

Servidor

Notificación a participantes

Probarlo dentro de un canal

El objeto debe existir en el contexto de un canal válido. Una prueba mínima debería ser:

Cliente conectado

Canal activo

Objeto registrado

Componente activo

Estado / RFC

Si alguno de estos estados falta, el comportamiento observado puede ser local aunque todavía no exista una entidad de red utilizable.

Errores frecuentes

Crear un Componente sin un Objeto válido

El componente puede resolver o crear un objeto local en determinados casos, pero eso no significa que exista automáticamente una identidad registrada en el servidor.

Utilizar RPC para todo

Una acción y un estado son problemas diferentes. Utiliza RFC para acciones puntuales y los mecanismos de datos/sincronización para estado.

Ignorar el ownership

Si varios clientes modifican el mismo estado sin una autoridad clara, el resultado será difícil de razonar y sincronizar.

Siguiente paso

Continúa con Sincronización para definir autoridad, frecuencia y persistencia del estado.

Referencias

Objetos

Identidad, ownership y ciclo de vida de Objeto.

Comunicación

RFC, estado y destinatarios.

Eco en GitHub

Código fuente de la implementación actual.

On this page