miércoles, 17 de diciembre de 2014

El bug "cabra montesa"

No sé si habrá muchos autores dispuestos a subir un vídeo de un bug de su juego, de esos gordos y extendidos a lo largo del juego y que se puede cargar todo. Más cuando todavía no tienes claro del todo como solucionarlo, aunque la solución mostrada en el vídeo parece funcionar en principio.





El error sucede por el uso de terrenos. Intento usar uno para hacer el escenario exterior, con montañas que limiten el camino a seguir, incluso en un principio pretendí que los precipicios fueran parte del terreno muy hondos, pero no funcionó. Para esto hay que entender cómo funciona un terreno. Es como un campo de alturas. Es decir un plano, y cada punto del plano tiene una altura marcada. Así que es imposible tener una pared completamente plana en vertical, siempre va a haber un poco de pendiente. Ya que para hacer una pared completamente vertical necesitaríamos que un punto tuviera al menos 2 alturas distintas. La del mínimo y la del máximo. Y eso no se puede hacer en un terreno, incluso podríamos entrar en un debate matemático sobre si eso haría que el terreno dejase de ser una función. Da igual, el caso es que tu puedes hacer que un punto el terreno tenga altura 0, y en el de al lado tenga altura 3000, pero eso significa que todos los puntos intermedios en un sistema continuo existen, y por Bolzano y esas cosas al final si nuestro héroe se esfuerza al tener desnivel, a base de saltos, puede ir escalando. Y en el caso de abismo, puedes ir cayendo poco a poco por la pared y no te acabas de dar la hostia nunca.




En el caso de los abismos opté por no poner terreno, que cayeras al vacío de verdad. Se nota que por donde pisas es como un plano y que se acaba ahí, pero bueno, es un mundo imaginario. El problema lo tengo con el bug de la cabra montesa y que el jugador pueda escalar las montañas que suponen el límite de la pantalla e ir más allá. No hay nada que pueda generar más bugs que un jugador andando por donde se supone que no puede andar. Y además no es un bug difícil de detectar, en pruebas a puerta cerrada algún amigo ya se ha puesto a hacer de cabra por ahí.



Bug cabra


Hay una solución que me está tentando, y es hacer la parte externa con geometría también, es decir, pasar de los terrenos, y crear, igual que haría con el interior, paredes, suelos, etc, pero en el exterior. El problema es sobre todo para texturarlo, y para colocar árboles. Los terrenos son scripts que facilitan muchas cosas con el editor, y entre ellas están colocar texturas unas encima de otras, y poner arbustos y árboles y que se comporten como impostores (imágenes 2d que miran siempre a cámara) cuando están lejos y pasen a modelos 3d cuando estás cerca. Así que hacer un terreno relativamente complejo desde modelado e importarlo completo en Unity puede ser mucho trabajo...



¿Y el rendimiento? Si lleva muchos árboles o texturas relativamente complejas irá mucho peor como modelo que como terreno. Pero yo he usado 3 hierbajos y ningún árbol y estoy pensando en usar unos árboles algo especiales, así que lo mismo en mi caso compensa. Me lo tengo que pensar.



Por ahora tengo otra solución, la que se muestra en el vídeo, poner un plano transparente por la pared para que el jugador choque contra él y no pueda escalar. El plano al ser completamente plano y no tener pendiente hace imposible la escalada y arregla el problema. Aunque también es un poco coñazo ir colocando planos por todo el escenario y comprobar que no quedan huecos por los que escalar. 

Pared transparente

No hay comentarios :

Publicar un comentario