logo
Funciones avanzadas

Servidor interno

Arquitectura interna del servidor de Eco, ciclo de vida, canales, jugadores y persistencia.

Servidor interno

Servidor y ServidorJuego forman el lado servidor del runtime de Eco. El primero integra el servidor con Unity; el segundo contiene la lógica de juego y gestión de clientes, canales y estado.

Capas

Eco

 └── Servidor

       └── ServidorJuego
             ├── Jugadores
             ├── Canales
             ├── Objetos
             ├── Datos
             ├── Persistencia
             └── Protocolos TCP / UDP

ServidorJuego puede funcionar como servidor local o como núcleo independiente dentro de un proceso servidor.

Flujo de una conexión

Aceptar la conexión

El protocolo TCP establece la conexión inicial y crea el contexto del cliente.

Verificar al jugador

Se negocian versión, identidad y datos iniciales antes de entrar en la lógica normal de juego.

Crear o recuperar la participación

El servidor representa al cliente como Jugador y gestiona su pertenencia a Canal.

Procesar paquetes

Las solicitudes se convierten en operaciones de canal, objetos, datos, RFC, archivos o control del servidor.

Canales y autoridad

El servidor mantiene los canales como unidades lógicas aisladas. Cada canal tiene sus propios jugadores, objetos y datos.

Servidor
├── Canal 100
│   ├── Jugadores
│   ├── Objetos
│   └── Datos

└── Canal 200
    ├── Jugadores
    ├── Objetos
    └── Datos

La conexión de un jugador puede participar en varios canales, por lo que el servidor no debe modelar un jugador como perteneciente exclusivamente a una única sala.

Persistencia

El servidor puede guardar estado de canales, objetos persistentes, datos de jugadores y operaciones remotas guardadas. Esto explica por qué Eco no trata la red y la persistencia como dos sistemas completamente separados.

Persistencia por capas

No todo lo que existe en memoria debe guardarse. La persistencia depende de si el canal, objeto, dato o RFC ha sido marcado para conservarse.

Modo de baja memoria

El material de TNet documenta un modo de bajo consumo de memoria que descarga datos de canales vacíos para reducir el footprint del servidor. En Eco debe considerarse una característica dependiente de la implementación actual del servidor antes de habilitarse en producción.

La idea es:

Último jugador abandona

Canal sin participantes

Guardar estado

Liberar memoria de la representación activa

Recargar cuando vuelva un jugador

Servidor local

El servidor interno también puede ejecutarse dentro del mismo proceso de Unity. Esto permite conectar un ClienteJuego contra el servidor local sin depender de sockets externos.

Servidor local

Workflow práctico para pruebas locales.

Código fuente

ServidorJuego.cs

Implementación principal del servidor de juego.

Servidor.cs

Integración del servidor con el runtime de Unity.

On this page