Tengo un juego en línea multijugador que estoy creando, usa node.js y la comunicación entre el servidor y el cliente es la siguiente:
Al principio, todos los modelos necesarios se envían desde el servidor al cliente cuando el cliente lo solicita. A partir de ese momento, el servidor envía a todos los clientes conectados todos los datos de posición 60 veces por segundo. A partir de ahora, lo único que el cliente envía al servidor son las entradas del teclado, aparte de que hay un chat que funciona bien cuando tanto el cliente como el servidor están bien, pero ese es otro problema.
El servidor gestiona toda la física y el cliente gestiona todo el renderizado.
El problema es que, además del hecho de que, en primer lugar, ni siquiera funciona si la velocidad de envío del servidor es de 60 por segundo, sino solo en la inicialización del cliente, ya que cuando el cliente termina de unirse, puede pasar de 1 o 5 o 10 vuelve a 60, es que cuando funciona, y la pestaña del navegador se desenfoca, todos los cálculos y la recepción del servidor se detienen. No sé por qué, pero causa un problema cuando la página vuelve a enfocarse, ya que cuando la página vuelve a enfocarse, el juego procesa todo lo que sucedió a una velocidad rápida mientras el cliente estaba fuera. Esto causa problemas, ya que puede tomar un tiempo antes de que esté listo para usarse nuevamente, y cualquier entrada tiene un efecto magnificado y se coloca al final del rebobinado.
Intenté hacer que dejara de mostrarse mientras la pantalla estaba apagada, pero eso no funcionó. No sé cómo solucionar el problema, además de hacer que el servidor verifique a todos y cada uno de los jugadores para ver si está activo o no antes de enviar los archivos individualmente, lo que no parece ser una buena solución. Preferiría poder seguir usando el método "io.emit".