Skip to content

Ejemplo b谩sico de un sistema de Servidor Autoritario (authoritative server) + Cliente en Unity 2D 馃Р

Notifications You must be signed in to change notification settings

angelsalascalvo/basic-authoritative-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

33 Commits

Repository files navigation

Servidor Autoritario + Cliente. Unity 2D

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:

  1. Cliente Env铆o de entradas efectuadas (inputs) al servidor.
  2. Cliente Ejecuci贸n de movimiento en local (estimaci贸n) sobre el personaje principal a partir de las entradas efectuadas.
  3. Servidor Procesamiento de entradas recibidas por parte de los clientes y ejecuci贸n de la f铆sica con el respectivo movimiento de los personajes.
  4. Servidor Env铆o de las posiciones de todos los jugadores a los clientes conectados.
  5. Cliente Correcci贸n en la posici贸n local del jugador principal respecto a la recibida por parte del servidor.
  6. Cliente Interpolaci贸n de movimiento de los jugadores rivales con la posiciones recibidas por parte del servidor.

Simulaciones

Implementados sistemas de simulaci贸n de latencia + perdida de paquetes para poder imitar un entorno real (nodos remotos) en ejecuciones locales.

M煤ltiples clientes

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.

Bugs Conocidos

  • 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

Pila Tecnol贸gica

Unity 2019.4.7

About

Ejemplo b谩sico de un sistema de Servidor Autoritario (authoritative server) + Cliente en Unity 2D 馃Р

Topics

Resources

Stars

Watchers

Forks

Languages