Semana 4. Aframe
Nos adentramos en la cuarta semana del blog. Los retos indicados son:
Seguir trabajando con las físicas, concretamente con la gravedad, el rozamiento y la malla de colisión.
Estudiar el código fuente de A-frame en red, ya que pueden darse problemas debido a las físicas.
Fisicas
Entre los objetivos encontramos la modificación de los siguiente parámetros:
- Gravedad
- Rozamiento - Resistencia
Nota: Los vídeos subidos tienen dos navegadores abiertos, el de la izquierda tiene los valores por defecto, mientras que el de la derecha tiene los valores modificados.
- Malla de colisión
No encuentro en la documentación el concepto de malla de colisión.
Lectura código fuente A-frame networked
Las físicas han de ser implementadas correctamente, aunque aún se encuentra en fase de experimentación existen dos opciones.
- Usar WebRTC y un servidor Documentación
- Usar un servidor multiusuario en tiempo real. Documentación
Pruebas realizadas
Tras la realización de diversas pruebas he llegado a la siguiente conclusión. Al utilizar físicas la sincronización es incorrecta, es decir, la posición no es la misma en ambos navegadores. Anteriormente he utilizado animaciones, cuya posición si que se modifica correctamente. ¿Es este el problema dado por las físicas? A continuación indicaré las ideas que me han llevado a esta conclusión, ya que creo que no había captado el problema.
Semana 3. Físicas
Semana 4. Físicas
-
Introducción, a través del teclado, de una variable. Una vez uno de los usuarios ha modificado su valor inicial, ya no será posible cambiarlo de nuevo. e4.html
-
Introducción, a través del teclado, de dos variables. Una vez uno de los usuarios modifica uno de los elementos, ya solo es posible modificar el restante. e5.html
-
Introducción, a través del teclado, de dos variables. Buscaba que no se modificarán hasta que ambas sean diferentes al color inical, pero si almacenamos esta información como variable al otro usuario no le llega. Por tanto, no es valido introducir en variables, sino que se ha de modificar.
-
El problema anterior me lleva a pensar en la implementación de un botón que inserte las físicas cuando sea pulsado, pero nos encontramos ante el siguiente problema: La escena NO puede modificarse -> ‘this.scene = null’
-
El problema anterior me lleva a pensar en la implementación de un suelo que impida el paso del elemento (las físicas ya han sido determinadas). En este ejemplo el usuario puede modificar la masa, ya que se ha intentado modificar la gravedad, pero no localizo ante que tipo de variable me encuentro. Una vez se haga click en la esfera el suelo desaparecerá y lo lógico es que la acción en ambos navegadores sea simultanea, pero no es así. Por tanto, ¿es este el problema al que dan lugar las físicas? Considero que no tiene sentido, ya que la posición debería variar. Nota: En la semana anterior se logró obtener una esfera en ambos navegadores con movimientos que parecian sincronizados, pero he comprobado que también se dan problemas e8.html
Documentación dada por José María
Conclusiones:
- Problema
Cuando agrego un objeto sincronizado con cuerpo dinámico, el servidor no lo sincroniza, por lo que solo el creador del objeto puede moverlo.
- Respuesta
De forma predeterminada, los componentes de posición y rotación en la entidad raíz están sincronizados. Para sincronizar otros componentes y componentes de entidades secundarias, debe definir un esquema por plantilla”. ¿No necesita simplemente un esquema personalizado que incluya un cuerpo dinámico?
- Mi propio pensamiento
He logrado sincronizar otros componentes, como puede ser la masa de un objeto, pero es la posición la que no se sincroniza correctamente, ya que en cada navegador actúa de una forma u otra. Se ha de tener en cuenta que las físicas (manteniendo todo del mismo modo) en cada iteración varía el resultado.
- Coincide con el enlace anterior
Simplificación
Nota: Antes de leer la siguiente simplicación se ha de tener en cuenta que se había pensado antes de llegar a la conclusión anterior.
Conexión obligada de dos usuarios para poder iniciar el juego, pero también es necesaria la introducción de una serie de parámetros antes de comenzar. Una vez los parámetros son introducidos únicamente funcionan en uno de los HTML y el otro simplemente visualizada
¿Cómo lograr que uno sea maestro y otro esclavo?
- Menú inicial con dos botones
Nota: Uno de ellos nos permitirá ser ‘cliente’ y el otro ‘servidor’ Nota: Ambos navegadores son clientes. ¿Puedo lograr que uno de ellos actue como navegador?
-
Cliente y servidor han de observar el mismo contenido
-
Aleatoridad a la hora de determinar quien será el servidor y el cliente
Nota: Se ha de pulsa ‘Enter’
- Menú con los parámetros necesarios para llevar a cabo el juego
Duda
¿Se trata de un juego basado en que cada usuario mueve su propio coche o en el que los usuarios introducen sus propios parámetros y una vez se envían se inicia?