Story Transcript
Tipos de Arquitecturas usadas en MMOG Marco A. Arias Figueroa IIC2523 – Sistemas Distribuídos
Basado en paper A Survey on MMOG System Architectures
Que son los MMOG • Mul6 Massive Online Games • Juegos en donde muchas personas juegan simultáneamente conectadas a red. • Se simula un mundo completo: ▫ Cambios que realiza una persona, lo ven las demás ▫ Se debe mantener consistencia ▫ Se manejan muchos datos ▫ Ocurren eventos en 6empo real
Mercado de los MMOG
Problemas a tratar • ¿Cómo manejamos la consistencia? • ¿Qué arquitectura u6lizamos para los datos?, ¿centralizada, descentralizada? • ¿Cómo mantenemos el estado del juego? • ¿Cómo se realizan los updates? • ¿Cómo mantener la persistencia? • ¿Cómo lograr que el gameplay sea lo más fluido posible?
Tags principales • Aumentan los datos a guardar ▫ Necesario guardarlo en la persona correcta
• Aumenta la cantidad de jugadores ▫ Jugadores no quieren tener delays ni lags
• Consistencia en el juego ▫ Lo que ocurre con un jugador cambia los datos del entorno y a los demás jugadores
Tres arquitecturas 1. Arquitectura centralizada 2. Arquitectura descentralizada 3. Arquitectura híbrida
1.-‐ Centralizada • Nodo central al que se conecta el resto de los nodos • Unidad lógica simple central • Se puede controlar bien la detección de fallas del sistema • En MMOG, un computador hereda todas las características del mundo ▫ Si este computador se cae, todo el mundo se caerá
2.-‐ Descentralizada • No se depende de un nodo central • Múltiples unidades lógicas independientes, con igual funcionalidad • Existen los Supernodos: ▫ Transmiten los datos a los nodos restantes del sistema
• En MMOG, los supernodos son computadores que sirven de host del mundo ▫ También puede ser un cliente
3.-‐ Híbrida • Combina elementos de arquitecturas centralizadas y descentralizadas • Arquitecturas multicapa con una unidad lógica central. ▫ Unidad lógica central se comunica con los supernodos ▫ Supernodos se conectan al resto de nodos
Diferencia de híbrida con centralizada y descentralizada • Centralizada: ▫ Importantes funciones, como update del sistema y seguimiento de datos, son responsabilidad de los supernodos. ▫ No sólo un nodo central, sino una unidad lógica
• Descentralizada: ▫ Hay un punto central de fallo Por ejemplo si la unidad central es una DB y los supernodos se conectan a ella.
Ejemplos de las 3 arquitecturas
Núcleos fundamentales en los MMOG 1. Mensajería 2. Manejo de recursos 3. Persistencia de los datos 4. Administración del estado
1.-‐ Mensajería • Traspaso de mensajes entre nodos de la red • En MMOG, el tiempo de traspaso de mensajes es esencial • El orden de llegada de los datos debe ser consistente • Dos aspectos fundamentales: ▫ Entrega de datos ▫ Orden de los datos
1.-‐ Mensajería • Entrega de datos: ▫ En centralizados, como WoW, existen problemas en la comunicación cliente-‐servidor cuando hay mucha actividad de los usuarios a la vez ▫ Problema bien recurrente en arquitecturas centralizadas
• Orden de los datos: ▫ Problema poco recurrente en centralizadas ▫ Problema muy común en arquitecturas descentralizadas e híbridas, debido a la variedad de fuentes
2.-‐ Manejo de recursos • Muchos datos a repartir • Cómo los servidores controlan la carga de datos acumulada en varios clientes • Dos aspectos fundamentales: ▫ Aprovisionamiento de los recursos ▫ Asignación de los recursos
2.-‐ Manejo de recursos • Aprovisionamiento de los recursos: ▫ Descentralizadas escalan dinámicamente los datos acorde a la demanda No todos los datos a la vez
▫ Solución de centralizadas poco escalable
• Asignación de recursos: ▫ Cada jugador necesita tener conocimiento de los demás Provoca problemas de latencia
▫ Cómo asignamos recursos para que un jugador no se comunique con todos los demás
3.-‐ Persistencia de los datos • Cada usuario cambia su estado en cada juego • Se requiere mantener la persistencia de los datos a los cambios y cuando el jugador hace log off • Dos aspectos fundamentales: ▫ Datos estáticos ▫ Datos dinámicos
3.-‐ Persistencia de los datos • Datos estáticos ▫ Datos que no son in\luenciados por el jugador desde dentro del juego. (Ej password, username, etc) ▫ Deben ser guardados en lugares especial y ser accesible sólo con permisos ▫ Problemas con diferentes versiones Jugadores deben actualizar para no perder consistencia de versiones
3.-‐ Persistencia de los datos • Datos dinámicos ▫ Datos que son in\luenciados desde dentro del juego. Las acciones del jugador hacen que estos datos varíen (ej los stats)
▫ Diferentes datos dinámicos Cambios de posición, de NPC, interacción con el ambiente e interacción entre jugadores
▫ Cambios de posición deben enviarse a todos los clientes cercanos ▫ Problemas de sincronización de datos que se deben manejar
4.-‐ Administración del estado • El estado del juego debe ser el mismo para todos ▫ Estado del juego manejado muy precisamente da problemas de lentitud ▫ Sólo una parte del juego se intercambia entre jugadores
• Pueden existir cheats que di\icultan el juego • Dos aspectos fundamentales: ▫ Particionamiento de los datos ▫ Prevención de cheats
4.-‐ Administración del estado • Particionamiento de los datos: ▫ Hacer updates a subpartes del juego y no al juego completo Mucha cantidad de recursos usada
▫ Partición simple: No requiere mucha herramienta computacional No reduce el trá\ico de red de manera óptima
▫ Partición compleja Requiere una fuerte herramienta computacional Reduce el trá\ico de red signi\icativamente
4.-‐ Administración del estado • Prevención de cheats ▫ Diferentes cheats que molestan la interacción en el juego Cambio de respuesta en el juego Alterando la programación del mundo (ejemplo cruzar paredes) Cambios de protocolo, alterar el orden de mensajes para tener ventaja
▫ No pueden ser siempre solucionados por el tipo de arquitectura
Como enfrentar estos problemas
1a.-‐ Entrega de mensajes • Descentralizada: ▫ Descentralizado sin mensajes ACK, sino timestamp para ver la diferencia entre ellos ▫ Se baja el delay, pero muchos mensajes deben llegar para saber que se perdió uno
• Híbrida: ▫ El mundo es dividido en diferentes áreas, y existen updates locales ▫ Cada supernodo se encarga de su área local ▫ Se centralizan en AOI (área de interés)
1b.-‐ Orden de los datos • Descentralizada: ▫ Cada player envía su update a otro, por lo cual sólo viene de 1 fuente Orden local
▫ No hay control del game state y provoca cheating
• Híbrida: ▫ Orden es un problema menor, dada la jerarquía La jerarquía determina el orden de los mensajes
▫ Sólo hay con\lictos entre los supernodos
2a.-‐ Aprovisionamiento de los recursos • WoW utiliza diferentes servidores en que cada uno aprovisiona diferentes recursos ▫ Solución muy cara
• Se propone un modelo que ve cuantos recursos son utilizados y predice futuros requerimientos ▫ Se propone un framework en desarrollo
• Solución descentralizada es limitada en cómo cada cliente aporta al estado del juego ▫ Se ha propuesto un server dedicado en cada usuario, capaz de asumir una función particular
2b.-‐ Asignación de recursos • Centralizado usa sólo un servidor para un mundo ▫ EVE Online permite hasta 1200 jugadores ▫ Quake II usa un sistema central que monitorea y asigna recursos según lo necesario
• En descentralizada es di\ícil tener nodos cliente que administren los recursos ▫ Se han propuesto estrategias P2P para la asignación de recursos.
• En sistemas híbridos usan servidores distribuídos con los recursos del sistema.
3a.-‐ Datos está6cos • En centralizadas es preferible no mandar muchos datos ▫ Guardar datos en los clientes reduce la cantidad de datos que deben ser enviados
• Se ha propuesto sistemas P2P para MMOG centralizados que separan los datos estáticos del \lujo de datos normal ▫ Método adoptado en WoW
3b.-‐ Datos dinámicos • Solución centralizada: Estructura de datos de 2 capas ▫ Primera capa con todos los objetos ▫ Segunda capa con objetos mutables
• Guardar la posición es un desa\ío en un MMOG ▫ Se propone una solución donde sólo se envía el update si se cruza un umbral de distancia
• En descentralizada el foco es mantener la consistencia de las posiciones ▫ No se puede mantener un centro de datos
4a.-‐ Par6cionamiento de los datos • Una solución bien usada son los shards ▫ Un jugador se conecta a un shard e interactúa con la gente que está dentro de él. Tiene un límite de capacidad
• Otra estrategia es dividir el mundo en diferentes zonas ▫ Aplicable a las 3 arquitecturas ▫ Problema cuando hay muchos jugadores en el mismo lugar
Prevención de cheats • En descentralizadas se usa el Lockstep protocol ▫ El juego se divide en frames, donde cada frame es una acción por jugador
• Otra solución es dividir el mundo en subáreas ▫ En cada subárea se le asigna a un nodo responsable
• Solución en híbridos es mantener un game state en un nodo central ▫ Cada cliente se asocia a una zona regional
Conclusiones • MMOG tiene múltiples desa\íos que deben ser resueltos • Los 4 dominios concentran los aspectos fundamentales de los MMOG • Una misma arquitectura tiene muchas ventajas y desventajas dependiendo de la situación • Dependiendo del juego, se debe adaptar a cada fase de él un enfoque diferente
¿Preguntas?