Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Dexteram

#1
Scripting / Problemas sincronizando con Networking
Agosto 11, 2019, 10:22:27 PM
Buenas a todos.
 
Me he lanzado a hacer un juego de proyecto fin de carrera y me he metido (creo que ha sido una mala idea dios...) a trastear un poco con el tema de multjugador. Me he atascado bastante y estoy bastante desesperado. Agradezco de antemano cualquier ayuda sobre el tema. Es posible que haya cosas que estén mal planteadas, he intentado hacerlo lo menos complicado posible.
 
El proyecto trata de un juego de minigolf, que tiene por una parte modo solitario, y por otra multijugador. Lo único que quiero hacer es a nivel de LAN. Hasta ahora he conseguido esto. El problema ha venido cuando he empezado con el tema de delimitar la acción de los jugadores para que solo manejen su propia pelota.
 
Adjunto una imagen de cómo tengo estructurado el prefab para el multijugador. Lo explico un poco por encima. Es la primera vez que hago un poco más grande de lo que suele ser hacerte una escena y cacharrear con ella. Dentro del gameobject ConjuntoMultijugador tengo otro gameobject vacío llamado jugador que tiene varias partes, la pelota que tiene un rigidbody, el pivoteAyudaVisual que sirve para mostrar una barra de potencia (también adjunto imagen), pivoteCamara sirve para manejar la cámara la cual se maneja de forma orbital con el ratón, RayCastUltimaPos lo utilizo para tener siempre debajo de la pelota un raycast y mediante tags ir guardando la posición de la pelota para que cuando se salga, vuelva a la ultima posición, y por en medio de algunos gameobjects he puesto algún script a modo de enlace para que se muevan a la vez que la pelota y de esa forma la barra de potencia siempre parta del la pelota etc. El otro gameobject que tengo al mismo nivel que jugador contiene cosas para el HUD. No se si estará bien planteado pero en un principio la idea es que cada uno tenga y vea su propio HUD.
 
Lo que he visto hasta el momento del tema de networking un poco en resumen, es que cada prefab tiene que tener su propio network identity. Con la propiedad isLocalPlayer sacada del network identity puedo limitar las acciones de los jugadores para que cuando estén en LAN cada uno mueva su pelota. Aquí he presupuesto que con un network identity basta ya que luego desde cualquier objeto si lo llamas es suficiente para usar la propiedad isLocalPlayer. El problema que tengo desde hace ya un tiempo y que estoy muy desesperado es que no se sincronizan los jugadores, es decir, estando en la partida, si un jugador se mueve, el resto de jugadores no lo ve. Las pelotas del resto de juadores están en el escenario pero a ojos de otro jugador no se mueven. Estuve investigando y por lo que he visto, con el componente Network Transformer debería bastar. El problema es que no se muy bien donde ponerlo y me ha surgido otra duda. Si el network transform sirve para sincronizar pero el objeto está compuesto de varias partes y además una de ellas con rigidbody, tengo que usar un network transform en cada parte? Estuve haciendo pruebas y cuando asocio un network transform a un gameobject, automáticamente se crea un network identity sobre ese objeto y esto hace que me salte el warning de que hay demasiados network identity. Es un warning pero entiendo que si me sale es porque no se debe tener más de uno. Estoy ya desesperado y es horrible hacer pruebas en este punto porque cuando juego con los network transform, al intentar quitarlos muchas veces no sé por qué se me cierra Unity por un error sin explicación alguna. Ni me he molestado en rellenar el parte de errores porque en 3 ocasiones anteriores en errores similares sin explicación lo único que me han dicho es que no han podido reproducir el error. Sé que dentro del network transform hay una opción para especificar una sincronización según sea 2D, 3D, con rigidbody, etc. La pelota tiene rigidbody pero el Network Transform está en ConjuntoMultijugador. No sé muy bien hacia donde tirar. Es lo único que me falta para poder dar por cerrado esto y no sé muy bien cómo manejar esto ya. Muchas gracias de antemano por cualquier cosa que me pueda ayudar.
 
Un saludo.
 
 
#2
Buenas. Como comentaba en mi presentación me ha surgido un problema en mi comienzo retomando mi interés por todo esto. Antes de tener que dejarlo usaba unity 4. A día de hoy tengo 3dmax 2018 y el Unity actualizado a la última versión. He probado a hacer un árbol muy sencillo con unos pocos objetos en 3d max y he probado a exportarlo para meterlo en un proyecto de Unity. Lo exporto en .fbx porque recuerdo leer que es el formato más amigable, y por ser una prueba no toco ninguna opción y dejo todo tal cual está predefinido.
 

 
Cuando lo importo a Unity me pasa lo que puede verse a la izquierda de la imagen, que echando un breve vistazo ocurre que todos los objetos por separado como que se les resetea la rotación del eje X, además de que aun teniendo las hojas del árbol rotadas sobre el eje Y de forma aleatoria, también se quedan como si se hubieran perdido la rotación del modelado 3dmax y hubieran quedado con una predefinida. Lo de la derecha es lo que queda cuando roto los subobjetos 90 grados en el eje X en vez de rotar el propio asset que engloba a los demás objetos. He probado a exportarlo varias veces y nada. He importado como .3dmax y pese a tener las medidas en metros me sale bien el árbol pero de dimensiones enoooormes. He visto que todavía no se por qué tenía puesto el Unity 4 y he probado a importar en esa versión el árbol y en esa versión me lo importa perfectamente. No se ya muy bien qué hacer y no encuentro en ningún sitio a nadie que le haya pasado esto ni me parece medio normal que pasen estas cosas sin haber tocado nada de nada. Si hay alguna forma de arreglar esto me vendría genial porque aunque estas cosas se pueden arreglar es un engorro tremendo estar recolocando todo otra vez.
 
Un saludo.
#3
General (Antiguo) / Presentación
Junio 28, 2018, 12:57:30 AM
Buenas a todos. Hace bastante tiempo  que tenía cierto interés en temas de desarrollo de videojuegos y por falta de tiempo tuve que dejar de lado lo poco que estuve viendo. Ahora me gustaría retomarlo, o bueno mejor dicho empezar de nuevo porque he perdido toda la poca soltura que tenía con Unity. Recordaba que había encontrado este foro de casualidad hace un tiempo y creo que por donde mejor puedo empezar teniendo en cuenta el tiempo que ha pasado desde que empecé a trastear con esto, y que haciendo pruebas ayer no he sido capaz de exportar un triste árbol cutre desde 3d max y me huelo que ese va a ser mi primer post de ayuda después de esta presentación.
 
Un saludo y gracias por adelantado por la futura ayuda que me pueda llegar a partir de hoy!