logo
Comunicación

RMR avanzadas

RMR, llamadas persistentes, respuesta y patrones avanzados de comunicación de Eco.

RMR avanzadas

Las RMR (Red Método Remoto) son el mecanismo de Eco para ejecutar un método en otro extremo de la sesión. Una RMR describe una acción o notificación; no debe utilizarse como sustituto de un estado que necesita mantenerse sincronizado.

RMR básica

Una operación remota se invoca a través del Objeto que contiene el Componente correspondiente.

public class MiUnidad : Componente
{
    public void RecibirDaño(int cantidad)
    {
        vida -= cantidad;
    }
}

La llamada transporta la identidad del objeto, el método remoto y sus parámetros según el protocolo de Eco.

Destinatarios

La selección del destino forma parte de la semántica de la operación y debe hacerse explícitamente:

Todos los jugadores
Todos excepto el emisor
Un jugador concreto
Un conjunto de jugadores
Solo estado persistente

RMR persistente

Una RMR normal representa un evento puntual. Una RMR guardada representa una operación que además queda registrada como parte del estado necesario para reconstruir la sesión.

Esto es útil para:

  • construir objetos o estado inicial;
  • registrar una acción que nuevos jugadores necesitan reconstruir;
  • almacenar una operación en el orden en que debe restaurarse.

No conviene guardar indiscriminadamente todas las operaciones: el historial persistente debe ser pequeño y determinista.

RMR sin eco al cliente

Eco conserva el concepto heredado NoneSaved: una operación puede quedar almacenada para futuras reconstrucciones sin reenviarse como evento inmediato a los clientes actuales.

Esperar confirmación

Una operación dependiente puede necesitar esperar a que una operación previa haya sido procesada. El material upstream denomina WaitForBounceBack a uno de estos patrones. En Eco debe entenderse como coordinación de red y no como un bloqueo del hilo principal.

RMR frente a sincronización

NecesidadMecanismo
Ejecutar una acción una vezRMR
Notificar un eventoRMR
Mantener una propiedad sincronizadaSet / sincronización
Restaurar estado para nuevos jugadoresdatos persistentes / RMR guardada
Enviar una orden a un jugador concretoRMR con destinatario explícito

Errores habituales

No uses una RMR para enviar la posición de una unidad cada frame si lo que realmente necesitas es sincronizar estado. Tampoco asumas que invocar una RMR convierte al emisor en propietario del objeto: la autoridad debe comprobarse según el flujo de la operación.

Relación con TNet

EcoTNet
RMRRFC
RCRRCC
RCLLCR

Las siglas de TNet se conservan aquí únicamente para facilitar la migración.

Referencias

RMR

Referencia normativa de Red Método Remoto.

RCR

Creación remota de objetos.

Destinatarios

Selección de receptores y alcance de una operación.

On this page