Ejemplo de funcionamiento b谩sico de movimiento de personajes para un videojuego multijugador online 2D con un servidor autoritario (Authoritative Server), los m煤ltiples clientes env铆an sus entradas al servidor, este las procesa ejecutando su propia f铆sica y devuelve la posici贸n de los diferentes jugadores a los clientes conectados. Toda esta comunicaci贸n se realiza a trav茅s de una comunicaci贸n UDP por socket.
La sincronizaci贸n entre cliente y servidor se realiza a trav茅s un sistema de ticks. Con un tickrate de 50, en cada iteraci贸n se act煤a del siguiente modo:
Cliente
Env铆o de entradas efectuadas (inputs) al servidor.Cliente
Ejecuci贸n de movimiento en local (estimaci贸n) sobre el personaje principal a partir de las entradas efectuadas.Servidor
Procesamiento de entradas recibidas por parte de los clientes y ejecuci贸n de la f铆sica con el respectivo movimiento de los personajes.Servidor
Env铆o de las posiciones de todos los jugadores a los clientes conectados.Cliente
Correcci贸n en la posici贸n local del jugador principal respecto a la recibida por parte del servidor.Cliente
Interpolaci贸n de movimiento de los jugadores rivales con la posiciones recibidas por parte del servidor.
Implementados sistemas de simulaci贸n de latencia + perdida de paquetes para poder imitar un entorno real (nodos remotos) en ejecuciones locales.
Emplear la extensi贸n ParrelSync para la creaci贸n de proyectos clones de unity a partir de enlaces simb贸licos con los que poder simular la conexi贸n de m煤ltiples clientes sin necesidad de duplicar el proyecto completo.
- Interpolaci贸n de jugadores rivales (en cliente) entrecortada / con interrupciones ante la perdida de datagramas en la comunicaci贸n.
- Correcciones bruscas e inmediatas en la posici贸n del personaje principal
- Excepci贸n sin controlar ante la desconexi贸n de los nodos
Unity 2019.4.7