2. Actualidad de los juegos Web y móviles
2.3. Características importantes en los juegos Web y móviles
2.3.3. Requisitos no funcionales
La latencia es un problema derivado de las redes de comunicación que afecta la calidad de la experiencia de juego en un entorno multijugador, los cuales deben ser diseñados para superar la perdida de paquetes [30]. La latencia hace referencia al tiempo que tarda un paquete en viajar a través de la red para llevar información entre un cliente y un
servidor; este puede ser ocasionado por tres razones: Procesamiento en el servidor (mayor en horas pico por múltiples clientes), procesamiento en el cliente y retardo en la red [30]. En un entorno móvil el retardo en la red es el principal generador de latencia, el cual se incrementa en los procesos de cambio de celda [30]. En una red congestionada la latencia puede llegar a ser incluso de un segundo, por lo cual el diseño de juegos multijugador se torna en un reto [21].
Tabla 1. Latencia para diferentes tecnologías móviles [21]
Tasa de descarga máxima
Tasa de descarga
Promedio Tasa de subida Latencia GPRS 115 kbps 30-40 kbps 14,4 kbps 800-1000 ms EDGE 473 kbps 100-130 kbps 80 kbps 300-600 ms UMTS/WCDMA 2 Mbps 220-320 kbps 64 kbps 200-250 ms HSDPA 14 Mbps 550-1100 kbps 384 kbps 100-150 ms WLAN 54 Mbps 27-30 Mbps 27-30 Mbps 60-400 ms
Tabla 2. Máxima latencia aceptable para diferentes tipos de juegos [21]
Latencia Aceptable (ms)
Latencia máxima soportada en móviles para una buena experiencia
de juego (ms) Juegos de estrategia por turnos
(TBS, Turned Based Strategy) 1000-4000 - Juegos de estrategia en tiempo real
(RTS, Real Time Strategy) 450 900
Juegos de disparo en primera persona
(FPS, First Person Shooter) 40 200-320
A pesar de que el problema de latencia provenga de un nivel físico, existen ciertas técnicas compensatorias que permiten ayudar a solucionar este problema desde un nivel superior [76], escondiendo el efecto negativo de la latencia en el juego [30]:
Dead Reckoning: Consiste en predecir la posición de los objetos en pantalla basándose en vectores que describen el movimiento (posición, velocidad, aceleración), los cuales son actualizados constantemente. Esto permite a los clientes mantener la fluidez del juego incluso si los paquetes tardan en llegar, aunque representa una carga adicional de procesamiento en los clientes lo cual puede ser algo contraproducente en el caso de los dispositivos móviles.
Control de latencia por servidor: Una forma más apropiada de controlar los efectos negativos de la latencia sin sobrecargar al dispositivo móvil con procesamiento es establecer un sistema adaptativo de actualización del servidor. Esto significa que el tiempo en el cual el servidor realiza una nueva actualización del juego (la cual es transmitida a los clientes) se adapta para permitir que la información enviada por los diferentes clientes alcance a llegar al servidor antes de realizar la próxima
actualización. Esto permite dar manejo a latencias heterogéneas, lo cual es un fenómeno muy común en los dispositivos móviles, ya que cada dispositivo se conecta a la red a través de unas condiciones diferentes que dependen de su ubicación y su movilidad.
P20. Latencia. Es necesario establecer protocolos de comunicación livianos que
permitan la transmisión efectiva de información y que no incrementen la latencia.
Sincronización de datos
Una de las mayores preocupaciones al momento de crear juegos multijugador es la sincronización del estado del juego. Este es el problema de mantener la misma información del estado del juego para las instancias de cada jugador y generar el efecto de que pertenecen al mismo juego. Existen dos métodos principales para mantener la sincronización del estado del juego [83].
Sincronización de estado: Implica que cada jugador le envié el estado de su juego a los demás, por ejemplo, en un juego de disparo a asteroides cada jugador debe enviar la posición, dirección y velocidad de su nave. Este método es altamente robusto dado que no hay posibilidad de que la información se pierda, pero, pueden haber problemas cuando se trata de juegos más grandes como los juegos de rol, en donde la cantidad de información manejada es mucho más grande.
Sincronización de entrada: En la cual cada jugador envía a los demás sus eventos, por ejemplo, en un juego de carreras los eventos son cuando el jugador acelera, gira o frena. Esta solución no requiere que se envíen grandes cantidades de información, pero es propenso a que los estados difieran en caso de que haya retardo en la red, ocasionando que el evento sea procesado por los demás jugadores de manera tardía. Solución Hibrida: Consiste en una combinación de las dos anteriores, por ejemplo, es
posible emplear la sincronización de entrada para aspectos que no son críticos en el tiempo como la conversación entre jugadores y emplear la sincronización de estado para aspectos aleatorios como las posiciones de autos en una carretera.
P21. Sincronización. En un juego multijugador es importante determinar la
manera más apropiada para sincronizar la información del juego.
Procesamiento contextualizado
En los juegos multijugador para que los jugadores tengan la sensación de que se encuentran en el mismo juego, cada jugador debe mantener una copia del estado del mundo virtual. Cuando un jugador realiza una acción, afecta al mundo virtual y todos los jugadores afectados por esta acción deben ser actualizados. La forma más sencilla de realizar esto es enviar el mensaje a todos los jugadores, pero la cantidad de información a enviar aumenta exponencialmente a medida que aumentan la cantidad de jugadores [84]. Este problema se presenta fundamentalmente en los MMORPGs, dado que a un jugador no le interesa una pelea que tiene lugar a gran distancia de su posición actual. Una forma de abordar este problema se llama “Interest Management” y consiste en enviar la
información únicamente a los objetos involucrados en la acción. Existen dos esquemas básicos de “Interest Management” [85]:
Regiones: El mundo virtual es divido en regiones de tamaño estático, por tanto los receptores de los mensajes son únicamente los presentes en esa región. Algo sumamente importante a tener en cuenta es el tamaño de las regiones, dado que deben tener el tamaño suficiente para asegurarse que los objetos tengan con quien compartir los mensajes.
Auras: Cada objeto está asociado a un aura que define el área del mundo virtual sobre la cual ejerce influencia. Un aura puede ser modelada simplemente como una esfera en cuyo centro se encuentra el objeto, por lo cual no es necesario dividir el mundo virtual en regiones, pero en cambio es necesario que todos los objetos intercambien la información de sus posiciones a fin de determinar cuáles auras han colisionado.
P22. Procesamiento contextualizado. Es importante garantizar que
únicamente se transmitan mensajes entre los objetos directamente relacionados a una acción.
Categorización de información para transmisión
Los mensajes intercambiados en un juego pueden clasificarse según dos parámetros: cuán rápido debe viajar (urgencia), y cuan confiable debe ser su transmisión (relevancia) [86]. La información generada en el juego debe clasificarse para establecer los grados de prioridad y en la medida de lo posible debe buscarse la forma de garantizar que los mensajes más importantes viajen primero con el objetivo de evitar que el juego sufra problemas por retardo de mensajes [86].
P23. Categorización de mensajes. Es importante clasificar los mensajes a
enviar entre los diferentes nodos con el objetivo de transmitir primordialmente aquellos cuya información es crítica para el desarrollo del juego.
Seguridad
Si bien la seguridad no es uno de los aspectos más importantes de los juegos, es un factor que debe tenerse en cuenta en los juegos en línea, debido a que estos, además de ser juegos, son grandes negocios [87]. Los bienes virtuales tienen un valor sentimental para el jugador que los posee, pero además, en algunos casos también pueden representar un valor monetario, teniendo en cuenta que los juegos finalmente cobran dinero real para permitir el acceso o la obtención de dichos bienes [88].
P24. Seguridad. Es importante proveer un nivel de seguridad a la comunicación
con el objetivo de que otras personas no puedan interpretar la información que viaja.