Hermanos Juramentados de la Espada Negra
Un bug majo de colisiones
7-4-2019 10:19
Por Verion
Hace ya unos días -demasiados días en realidad- introduje la particular mecánica de colisiones que impera en el movimiento de Ollvaror Caves, el videojuego 2D multiplayer de Espada Negra. Hoy os traigo una segunda parte con un poco de código, que se que os gusta ver, en relación con un pequeño bug bastante feo que venía ocurriendo y que era fácil de reproducir.

Hay que entender que aunque Ollvaror Caves fuerza las colisiones en circunstancias normales (leer artículo anterior), no lo hace en algunas especiales, como cuando el personaje tiene el perk “Move like shadow”. No obstante a veces se producen situaciones en las que uno o más personajes pasan a compartir accidentalmente la misma posición, ¿y qué se hace entonces? Pues se les permite mover para que no se queden parados permanentemente, hasta que se separen, y después siguen con las normas habituales.

Esto funcionaba perfectamente entre jugadores, pero cuando lo hacen los personajes manejados por el juego, se podía dar una situación bastante fea en la que se pusieran a andar ocupando el mismo lugar, y en realidad podía producirse con relativa facilidad. Vamos a ver un ejemplo.


En este tipo de bugs suele costar encontrar la línea (o líneas) en las que se produce la situación. Quizá no lo sería en un código muy bien estructurado y comentado que siga normas y métricas… pero este no es un código así, de manera que normalmente puedo estarme bastante tiempo, que no fue el caso. La línea fue muy evidente, y es la primera del siguiente conjunto.


Como se ve, el programa no va a tener en cuenta a un personaje para determinar las colisiones si está colisionando con nosotros, así que tuve que cambiar esa línea por un nuevo y lamentable método.


Lo que hace este método es lo siguiente:


Lo que traducido a un lenguaje “blog” significa que, si estamos compartiendo espacio con otro personaje solo podremos movernos a la derecha si estamos más a la derecha, y a la izquierda si estamos más a la izquierda. Dicho de otra forma, solo podemos alejarnos de él.

Como esto es una ley física del juego, tiene que afectar tanto a personajes de los jugadores como a los manejados por la inteligencia, y eso significa que podemos recrear la situación anterior y ver el resultado.


Y esto fue todo, en cosa de diez minutos. Bueno, en realidad no, porque se despertó un nuevo bug de animaciones porque los personajes parados reproducían la animación de caminar, ¡y solucionarlo despertó otro! Repararlos llevó una jornada completa, pero ya son un problema del pasado, y cualquier recuerdo sobre sus causas desapareció gracias a la amnesia del programador.


Entradas similares:
Re: Un bug majo de colisiones
12-4-2019 03:31
El último bloque de código es un duplicado del anterior si no veo mal. ¿Nos pegas el bueno?

Re: Un bug majo de colisiones
13-4-2019 08:43
Por Verion
Tienes razón, ya está arreglado.