Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Problema de temblor de objetos y textura

Iniciado por ZOOSTAGE, Julio 25, 2017, 07:47:21 PM

Tema anterior - Siguiente tema
Cita de: Igor date=1505574276...o como el dice la solucion "futurama method", utilizada en "kerbal space program"(hecho con unity) que consiste en que tu te quedas quieto y lo que se mueve es el mundo a tu alrrededor, jejeje, divertida de pensar, una locura desarrollarla
   


Claro, eso se llama origin shifting, es una solucion valida, no se como se implementa (bien hecho) pero debe haber bibliografia al respecto.Me parece que es algo intrinceco del motor o por lo menos lo conozco asi, vos usas los valores normales pero el motor te hace el trabajo pesado.
 
Cita de: Igor date=1505745696hasta que los "señores" de unity no añadan al motor la posibilidad de "transforms doubles" no hay solucion, solo se puede "fakear", espero que lo añadan, ya que en esta "epoca" en la que hay una tendencia innegable hacia el "open world" tener mas precision de posicion es necesario
   


y eso jamas lo van a hacer, pensa que la memoria que se usa para guardar una posicion se duplica, tenes que pasar matrices mas complejas al gpu, pensa en los moviles, pensa en que hay juegos conocidos comerciales y totalmente aburridos por tener un mundo inmenso sin sentido, es decir para que sacrificar todo si otros lo han logrado con floats y aburrieron bien? para mi si no man sky logro eso listo, ese es el metodo si estas pensando en hacer algo igual de grande y aburrido.
 
 
 
Cita de: Igor date=1505745696incluir una variable asi en los objetos que se muevan(personajes, etc), calcular el movimiento de los personajes con esta clase(no con el transform), usarla como si fuera el transform.position(usando lerp o lo que querais) y luego pasar los valores al transform.position "real" asi (para que el objeto realmentese recoloque)
   


pero el problema es el float podes hacer lo que quieras antes, no servira de nada, incluso vos lo dijiste antes.Es como un problema existencial asi vayas a double y vuelvas.
 
 
 
Cita de: Igor date=1505745696aunque poderse alejar 10.000 unidades del centro podria parecer suficiente(a mi me vale) entiendo que la gente proteste por este problema, porque la solucion de hacer el mundo en partes o en escenas, cuando lo que tu quieres es hacer un open world enorme, en esta "epoca", yo creo que ya no es admisible, seria como resignarte a lo "antiguo", venga, volvamos todos a programar en 8bits, con un ZX spectrum, y guardemos el "programa" en una cinta de casete, y luego la revobinamos con un boligrafo "bic" y se lo enviamos a nuestros conocidos en un sobre postal con un monton de sellos...
   


no volver a programar en 8 bits, pero para que tener mas y mas y usarlo solo por el hecho de usarlo? no me malinterpretes si está la tecnologia mas vale usarla para lo correcto, es que seguro en vez de usarla para corregir los problemas actuales seguro que usa para lograr tener los mismos problemas con el double,esto va a dar lugar a empeorar la calidad de los juegos que ya esta bastante comprometida.un gran problema en los juegos mordernos, la joda es hacer algo enorme que estes al pedo recorriendo kilometros repetidos, por que a mayor cantidad menor calidad, orientado a los "gamers" que tienen que parchear el juego como 10 veces para que sea jugable, es decir no se a vos pero a mi me suena a >$$$ + >aburrimiento + >recursos+ >proceso = epic fail.
 
 
 
 

Cita de: Igor date=1505745696si, ya dije que era un resumen de todo lo que estabais comentando, estube buscando en internet una solucion "real" a este problema pero no parece haberla, solo hay soluciones para "parchearlo",
   
   
      hasta que los "señores" de unity no añadan al motor la posibilidad de "transforms doubles" no hay solucion, solo se puede "fakear", espero que lo añadan, ya que en esta "epoca" en la que hay una tendencia innegable hacia el "open world" tener mas precision de posicion es necesario
   
   
      bueno, aunque ya ha quedado todo explicado, voy a poner otra vez unos ejemplos porque me apetece, y porque me aburro...
   
   
      primera solucion posible, la de hacer una class Vector3Double, yo me la imagino asi(no lo he probado)
   
   
      incluir una variable asi en los objetos que se muevan(personajes, etc), calcular el movimiento de los personajes con esta clase(no con el transform), usarla como si fuera el transform.position(usando lerp o lo que querais) y luego pasar los valores al transform.position "real" asi (para que el objeto realmentese recoloque)
   
   

//suponiendo que nuestra variable Vector3Double se llama "posD"
//despues de haber hecho los calculos del movimiento con "posD"
float px = (float)posD.x;
float py = (float)posD.y;
float pz = (float)posD.z;
transform.position = new Vector3(px, py, pz);
Vector3Double auxPosD = posD;
auxPosD -= new Vector3Double((double)px, (double)py, (double)pz);
transform.translate(auxPosD);

   
       
   
   
      otra solucion seria la de mover todo el mundo, podria ser algo asi
   
   

//pseudocode
positionOffset = camera.position;
camera.position = vector3.zero;
foreach gameobject "obj" in world{
   obj.position -= positionOffset;
}

   
      esto podria ejecutarse todo el rato, o cada cierto tiempo, o cuando la camara se aleje cierta distancia del centroorigen
   
   
      aunque poderse alejar 10.000 unidades del centro podria parecer suficiente(a mi me vale) entiendo que la gente proteste por este problema, porque la solucion de hacer el mundo en partes o en escenas, cuando lo que tu quieres es hacer un open world enorme, en esta "epoca", yo creo que ya no es admisible, seria como resignarte a lo "antiguo", venga, volvamos todos a programar en 8bits, con un ZX spectrum, y guardemos el "programa" en una cinta de casete, y luego la revobinamos con un boligrafo "bic" y se lo enviamos a nuestros conocidos en un sobre postal con un monton de sellos...
   


 
 
Al pasar el double a transform.position las coordenadas se redondean a float normal y es lo mismo. Eso solo se puede usar si eres un estudio grande y tienes acceso al core de Unity.
 
Y lo de mover el mundo no es tan fácil, hay que tener en cuenta los objetos que tienen rigidbody y sus físicas para desplazarlos...
 
 
 
Lo más fácil como ya dije, es intentar hacer juegos realistas teniendo en cuenta los límites técnicos.

Cita de: lightbug date=1505759425 a mayor cantidad menor calidad
   
   
       
   


cierto, sobre todo nosotros, los indies.
 
mi mayor intento de "gran" escenario fue una isla de 4000*4000 que se generaba proceduralmente, logre hacer que se generaran "pueblos" unidos por caminos, zonas en ruinas, zonas rocosas, prados y bosques, pero quedaba todo como muy artificial, y muy falto de "interes" por explorarlo, ...quizas tambien fuera por mi escaso "talento artistico", que no tenia una estetica del todo " cool" y eso tambien influye a la hora de jugarlo... pero el caso es que me era muy complicado llenar una isla de 4000*4000 pera que tubiera "interes"...
 
lo que intantaba decir es que si que hay gente por ahi que necesita una solucion, y se me ocurrio poner un poco de codigo por si les servia de orientacion
 
yo, a lo largo de los años he hecho varios intentos de open world.... y creo que voy a pasar de volver a intantarlo, he aprendido la leccion, voy a centrarme en proyectos mas... accesibles.

Cita de: Igor date=1505814067yo, a lo largo de los años he hecho varios intentos de open world.... y creo que voy a pasar de volver a intantarlo, he aprendido la leccion, voy a centrarme en proyectos mas... accesibles.
   


y podes hacerlos tranquilamente, por ejemplo hacelo de 100x100 m2, tecnicamente podes hacer un open world asi (por mas raro/broma que suene, es mas escuche a un diseñador que dijo que era su open world soñado), el concepto del open world es libertad absoluta (dentro de un marco, por supuesto), con un mundo interesante(no grande ni realista) y dinamico a las entradas del jugador (NPCs, dialogos, concecuencias --> el mundo y su contenido cambia, lo mas dificil de hacer), con esto deberian empezar todos los diseñadores. Despues bueno a esos 100x100 hacelos 10 veces mas grandes a los lados solo por motivos de tiempos, para aplazar un poco mas la llegada de un punto a otro y que se sienta bien (denuevo, no real), trata de repartir un poco el contenido o incluso animarse a incluir mas... y listo, ahi tenes un juegazo que ni kilometros y kilometros lograran. A lo que iba era que el nucleo de la idea actual en los juegos comerciales open world es, primero,  hacer los mundos lo mas grandes posibles y despues darse cuenta que no hay contenido o que es repetitivo y no interesante. Esta perfecto que sean grandes pero si van a ser aburridos a la vista, gameplay y motivacion (en primer lugar dar una buena razon para explorarlo) personalmente no me va, como dijiste que te paso a vos con el tema de "la falta de interes de explorarlo".

Cita de: lightbug date=1505824186hacelo de 100x100 m2, tecnicamente podes hacer un open world asi (por mas raro/broma que suene, es mas escuche a un diseñador que dijo que era su open world soñado), el concepto del open world es libertad absoluta (dentro de un marco, por supuesto), con un mundo interesante(no grande ni realista) y dinamico a las entradas del jugador (NPCs, dialogos, concecuencias --> el mundo y su contenido cambia, lo mas dificil de hacer), con esto deberian empezar todos los diseñadores. Despues bueno a esos 100x100 hacelos 10 veces mas grandes a los lados solo por motivos de tiempos, para aplazar un poco mas la llegada de un punto a otro y que se sienta bien (denuevo, no real), trata de repartir un poco el contenido o incluso animarse a incluir mas... y listo, ahi tenes un juegazo que ni kilometros y kilometros lograran.
   


esta claro, hay que empezar con un escenario pequeño, intantar hacer que las mecanicas sean divertidas y interesantes, en esa pequeñas escala, y que no te aburran rapido.... y luego, si el resultado funciona, se puede hacer mas grande, o incluir mas contenido, escenas o lo que sea.
 
pero nose por que hoy en dia, en las grandes productoras, hay una gran tendencia hacia lo grande... y esto origina que pensemos que tenemos que hacer a lo grande, cuando lo que importa es lo ir hacia lo divertido.
 
que tiene el super mario bros 3, que hace que sea uno de los mas jugados y que sigua jugandose hoy en dia, quien no se ha bajado un emulador para jugar al mario en el PC, no tiene graficos nextgen, los escenarios son pequeños(99 segunos para pasarte el nivel?), y desde luego la cantidad de acciones e interacciones diferentes que puede realizar nuestro personaje por el mundo no es mucha, tiene unas mecanicas muy simples.
 
pero es muy jugable, muy divertido, y a la vez es un "reto", un desafio a tu habilidad... 
 
eso! eso es tambien muy importante, yo creo que junto con divertido son las dos cosas que hacen que el juego sea "bueno", por encima de los graficos, o la tecnologia

Etiquetas: