logo
Ejemplos

RFC

Ejemplo mínimo de una función remota y de la separación entre acción y estado.

RFC

Una RFC permite ejecutar un método de un Componente asociado a un Objeto de red desde otra instancia de la sesión.

Declarar la función

public class Puerta : Componente
{
    [RMR]
    void Abrir()
    {
        animator.SetBool("Abierta", true);
    }
}

El atributo registra el método para que Eco pueda identificarlo y ejecutarlo cuando llegue el mensaje.

Enviar

El método se invoca sobre el Objeto o mediante las ayudas disponibles desde Componente.

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

Para incluir datos:

ero.Send("RecibirDaño", Objetivo.Otros, 25);

Elegir destinatarios

// Todos, incluido el emisor
ero.Send("MostrarEfecto", Objetivo.Todos);

// Todos excepto el emisor
ero.Send("MostrarEfecto", Objetivo.Otros);

// Todos excepto el emisor, guardado para jugadores posteriores
ero.Send("EstadoActualizado", Objetivo.OtrosPersistente);

Consulta Objetivo para la tabla completa.

RFC frente a estado

Una RFC debe representar una acción o evento:

"Atacar"
"Abrir"
"MostrarExplosión"

El estado debe representarse como datos:

vida = 75
puertaAbierta = true
munición = 12

Diseña alrededor del resultado

Una buena prueba es preguntar qué debe conocer un jugador que entre cinco segundos después. Si la respuesta es “el resultado actual”, necesitas estado persistente; si es “la acción que acaba de ocurrir”, normalmente necesitas una RFC.

Persistencia

El modelo de Eco permite RFC guardadas en el servidor. Una RFC persistente no es simplemente un mensaje con true: pasa a formar parte del estado que puede reconstruirse posteriormente.

Errores habituales

Método no encontrado

Comprueba que el método está en un componente asociado al Objeto y que el atributo RMR/RFC utilizado pertenece a la API actual de Eco.

Parámetros incompatibles

Los parámetros deben ser serializables y coincidir con lo que espera la función receptora.

Ejecutar lógica de servidor en el cliente

Una RFC ejecuta código en la instancia receptora. No la confundas con una validación server-authoritative.

Fuente

Ejemplo RFC

El repositorio contiene los ejemplos heredados de RFC y sus escenas.

RFC avanzadas

Persistencia, callbacks y patrones avanzados.

On this page