Mi próximo trabajo para Gemix..

Discusión en general sobre Gemix.
Post Reply
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Mi próximo trabajo para Gemix..

Post by erkosone »

Buenas a todos, quería comentaros que tras la salida de la nueva beta del lenguaje compartiré un motor para comunicación en red que implemente un buen "Cyclic redundancy check", esto es obligatorio usarlo en juegos que hagan uso de funciones en red.. y como me hace falta... pues eso.. que me he puesto a estudiar el oscuro mundo de la estadistica y le he hechado el ojo a un sencillo "pero eficaz" algoritmo llamado: 'Test Q de Dixon' el cual he podido ya implementar en C++ y funciona muy muy bien, he tenido la gran suerte de contar con la ayuda de un compañero de trabajo que estudió metronometría y tiene muy claros los fundamentos sobre como analizar un bucle de datos ciclicos y como se aplican los algoritmos de rechazo de datos denominados como "incertidumbre" o algo así..

Bueno.. pues la cosa es implementar esto y que sea transparente mediante un sencillo sistema de mensajes para la librería de red en Gemix ;)

Si alguien ha estudiado algo similar y desea sugerir algún otro algoritmo "que no sea demasiado pesado" y que sea dinámico como el Test Q de Dixon pues bienvenido sea :)
User avatar
Nowy
Posts: 599
Joined: Sat Oct 04, 2008 11:14 am
Contact:

Re: Mi próximo trabajo para Gemix..

Post by Nowy »

bueno decir que de 3 palabras no entendia 4 pero que si es algo para red y gemix pues bienvenido :lol:
User avatar
SimulatorOne
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona
Contact:

Re: Mi próximo trabajo para Gemix..

Post by SimulatorOne »

Nower wrote:bueno decir que de 3 palabras no entendia 4 pero que si es algo para red y gemix pues bienvenido :lol:
digo lo mismo.

nos pondras algun ejemplo, o nos explicaras que mejoras tiene?
para que tipo de juegos/aplicaciones net esta pensado?
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Mi próximo trabajo para Gemix..

Post by erkosone »

Bueno es algo así como un discriminador de información, se trata de algo mas o menos como esto:
A:
1 - Almacenar un número determinado de veces contenido de la información.
2 - Calcular la desviación típica que la información está sufriendo cada determinado número de muestras.

B:
1 - Obtener una nueva muestra.
2 - Calcular la desviación que existe entre la muestra y la referencia obtenida anteriormente.

C: Resolver:
1- Si la desviación sobrepasa el umbral denominado "% de confianza" el dato es fiable :y:
2 - Si la desviación no alcanza el umbral de confianza el dato es literalmente "ignorado" :n:

D: Post Solve:
1 - Si el dato es confiable se añade a la pila de datos, introduciendolo en la lista y por ende eliminando la primera muestra que se obtuvo en el paso A.
2 - Si el dato no es confiable se ignora y se vuelve al punto B.


Todo esto por que?
Simple, en una comunicación en red "especialmente por UDP" no hay ningún control de errores, esto quiere decir que un cliente puede estar enviando un número entero como 1024 y realmente no existe la seguridad de que el dato va a llegar a su destino con "integridad", en el 1% de los casos o mas el dato llegará corrupto o no llegará, si, el dato puede perfectamente llegar con un valor como 389 por ejemplo.. y claramente se ve que nada tiene que ver con el contenido original, esto es un serio problema para una aplicación donde por ejemplo se está enviando la posición de un objeto.. ya que el usuario verá el objeto "flasheando" de vez en cuando.

Existen técnicas de predicción para evitar este efecto tan molesto, una es la que voy a implementar yo, un analizador de información dinámico por estadística que es capaz de deducir si un dato es fiable o no, claro.. esto hay que saber usarlo.. no sirve para cualquier cosa, y por supuesto el test Q de Dixon es solo la punta de un izeberg muy grande donde existen complicados mecanismos para obtener predicciónes mucho mejores.
Post Reply

Return to “General”