SoloCodigo

Programación Específica => Programación de Videojuegos => Java 3D => Mensaje iniciado por: midbifroid en Jueves 1 de Agosto de 2013, 20:40

Título: ServerSide - Colisiones - Plataformas irregulares.
Publicado por: midbifroid en Jueves 1 de Agosto de 2013, 20:40
ServerSide o "Del lado del servidor".

El cliente es capaz, usando el VirtualUniverse, de controlar las colisiones o detectarlas, asi como sus puntos. Aunque no me pregunten como, que aun no he llegado ahi. Pero si hablo de ello es porque necesito saber antes algunos conceptos de funcionamiento para hacer antes otras cosas.

Bien, el objetivo del servidor es no usar esl VirtualUniverse en absoluto, graficos cero, nada de render, solo comprobar y difundir informacion entre los clientes.

Ya he leido por ahi que un disparo de arma en ServerSide se hace mas o menos de la siguiente manera, conceptualmente:
1º) El cliente se encarga de mandar el disparo al servidor, ya que el cliente si puede comprobar con exactitud el disparo.
2º) Esto no quiere decir que el disparo sea abierto a chetos (trucos). El servidor comprueba no exactamente el disparo, sino una probabilidad o porcentaje del mismo, segun distancia, zona, punto de mira (angulos de rotacion), LAG sobretodo, etc, y el reso se "fia" del cliente.
3º) Seria una cosa muy descabellada que el servidor andara controlando la exactitud de los puntos de mira de todos sus jugadores al milimetro, ya que entre el LAG y otros factores, crearia una inexactitud tremenda.

Dicho esto, solo me queda una cosa por saber.

¿Como va el servidor a controlar si yo estoy sobre una roca irregular, para no traspasarla?

Si, ya se ya se, mi cliente no es tonto y el solo es consciente de que no debe atravesar la roca; ¡tiene un motor grafico con deteccion de colisiones!.

Pero ¿Que pasa si el servidor no se fía del cliente, por el tema de los trucos?

Hacer un mapa virtual (unicamente logico y de clases no graficas no es problema). El problema es que si la clase del objeto Roca la hacemos tan compleja para detectar puntos (sin Universo, solo una clase creada por ti), ¡pues vaya, para eso ya utilice el 3D señor!, el rendimeinto seria el mismo.

Dicho esto, tenemos rendimiento VS esfuerzo de hacer una clase.

Mi pregunta final y mas importante es la siguiente:
¿Puedo utilizar un BranchGroup "standalone" o huerfano, sin VirtualUniverse?

La intencion es que el servidor use BranchGroups (tambien dentro de BranchGroups) para hacer sus calculos solamente. Sin añadirlos a un VirtualUniverse. ¿Es esto posible? ¿Funcionarian por si solos los branch groups solo con que esten todos unidos a un unico Branch Grande (root) ?

Si no es asi, necesito otra forma de detectar colisiones de objetos irregulares por el lado del servidor, haber si alguien sabe algo.

Aun no puedo probar esto porque ando algo lejos, por eso os lo pregunto, pero ahi esta la idea.

:gracias:
Título: Re:ServerSide - Colisiones - Plataformas irregulares.
Publicado por: midbifroid en Jueves 15 de Agosto de 2013, 22:56
Bueno me he enterado de que efectivamente se pueden usar los Locale, Branch y Transform Groups, sin usar universe ni canvas3d, osea, huerfanos. La pega es que todas las coordenadas parten del centro. Pero es una buena manera de usar colisiones de parte del servidor.