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 / UDPServidorJuego 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
└── DatosLa 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 jugadorServidor 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.
