Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Drumpi on October 27, 2011, 06:36:01 PM

Title: Prueba con motor de tiles
Post by: Drumpi on October 27, 2011, 06:36:01 PM
Hola a todos:

¿Sabeis ese punto en que no encuentras el fallo por más que lo buscas, y llegas a pensar que es cosa de tu máquina? Pues en ese punto estoy.
En mis (pocos) ratos libres, le estoy dando un vistazo a mi nuevo motor de scroll tileado, a ver si consigo que el Echo gane velocidad en las negritas, y he conseguido resolver muchos errores, pero hay algunos que me tienen mosqueado.

Uno de ellos es que, cuando llevas mucho rato, en lugar de tiles cuadrados de color rojo y azul (o algún número que se escapa por ahí, pero que está bien) me salen enormes rectángulos de colores morados y verdosos con figuras aleatorias... Bueno, parece que siguen algún tipo de patrón fractal, pero no es lo que debe salir.

El otro es que al salir, con la tecla ESC, en ocasiones me sale el mensaje "Deteniendo 3.3" y se cuelga antes de "Deteniendo 3.4" (es un FREE lo que falla).

El caso es que me gustaría que me confirmaseis que a vosotros también os pasa para no volverme loco ;D Sólo comprobarlo, si alguien quiere perder el tiempo en intentar dar soluciones, yo le estaría muy agradecido, pero no me hago responsable de las neuronas perdidas en el proceso (lo que se llega a complicar el código porque los módulos no son simétricos respecto al 0, y por trabajar con dos mapas cíclicos). ;D

Ah, sí, hay otro error que hace que se cuelgue. Creo haberlo localizado al cambiar de tile tanto horizontalmente como verticalmente, pero aun lo tengo que mirar. No le hagais caso (salvo que esteis con ganas de arreglar código).

Gracias por adelantado.
Title: Re: Prueba con motor de tiles
Post by: laghengar on October 27, 2011, 11:15:48 PM
no te falta por meter en ese zip el mapa.h?
Title: Re: Prueba con motor de tiles
Post by: gecko on October 27, 2011, 11:23:13 PM
venia a decir lo mismo. No compila.
Title: Re: Prueba con motor de tiles
Post by: KeoH on October 27, 2011, 11:26:46 PM
sip, falta el tmapa.h xD
Title: Re: Prueba con motor de tiles
Post by: Drumpi on October 29, 2011, 01:57:07 AM
Ups!!!

Pues nada, flash login para subirlo de nuevo (en el primer mensaje, lo he actualizado), y ahora a ver si puedo dejar de pensar en ello y dormir de una vez :P
Title: Re: Prueba con motor de tiles
Post by: laghengar on October 29, 2011, 07:21:43 PM
Bien, mis pruebas con esto.

en la primera ejecución estuve trasteando con él, me dí cuenta que solo me hacía caso al presionar las teclas, o esa fué mi sensación, y de que no entiendo como funciona la zona de la derecha, y al salir se me cuelga antes del 3.4.

La segunda ejecución tal cual lo abro, lo cierro, ningún problema.

La tercera ejecución lo abro, muevo un poco las flechas, lo cierro, y ningún problema.

Bueno, en las siguientes ejecuciones el problema del principio y que comentas tú parece que sale de forma aleatoria. Hay veces termina bien, y hay otros que no, me he fijado de que cada vez que aparecen los recuadros verdes y tal el programa sufre un retardo. Y me da la impresión de que cada vez que tiene un retardo, da el error al salir.

Me he fijado que siempre está la misma imagen de filas y columnas, recuadros rojos, trianglos rojos, azules y negros, y algunas flechas.

actualización: Parece ser que si cierras el programa sin tocar nada, siempre cierra bien.
Title: Re: Prueba con motor de tiles
Post by: Fede on October 29, 2011, 08:44:36 PM
 Corroboro que el crack es pseudo aleatorio. Y que más o menos me hace lo mismo que ha laghergar.


Ahora bien, si en la línea 652 del documento 'graph_tsroll.inc' aumento la cantidad de memoria asiganada a '[ts_struct].ts_screen_tiles' en 21, ya no se me cuelga. Con 20 sí.


La línea quedaría asi:


         [ts_struct].ts_screen_tiles=alloc(([ts_struct].ts_max_screen_tiles+21)*(sizeof(int)));

Seguro que esto es un parche, pero a ver si te sirve de pista.
Title: Re: Prueba con motor de tiles
Post by: laghengar on October 30, 2011, 11:22:57 AM
Quote from: Fede on October 29, 2011, 08:44:36 PM
Corroboro que el crack es pseudo aleatorio. Y que más o menos me hace lo mismo que ha laghergar.


Ahora bien, si en la línea 652 del documento 'graph_tsroll.inc' aumento la cantidad de memoria asiganada a '[ts_struct].ts_screen_tiles' en 21, ya no se me cuelga. Con 20 sí.


La línea quedaría asi:


         [ts_struct].ts_screen_tiles=alloc(([ts_struct].ts_max_screen_tiles+21)*(sizeof(int)));

Seguro que esto es un parche, pero a ver si te sirve de pista.

Cierto, al copiar lo que has hecho tú, ya no se me bloquea y además no aparecen los recuadros extraños. Y si pongo 20, aunque no aparezcan los recuadros extraños tiene esas partes con retardo y se bloquea al salir.
Title: Re: Prueba con motor de tiles
Post by: Drumpi on October 31, 2011, 07:54:27 PM
Y tan buena pista: 20 es un valor MUY significativo en la prueba (el número de columnas que se dibujan) y he podido rastrear la fuente del error. Había comprobado que no me salía de la memoria reservada, pero en cuanto me has dicho eso, he analizado la fila y la columna  respecto al total y he encontrado el fallo: un miserable y puñetero signo mal (un > en lugar de >=).

Muchísimas gracias a los dos. Reparto de Karmas.

Y menos mal, porque pensaba que mi ordenador se me había rebelado y se negaba a funcionar :D :D :D
Pero aun no está terminado: de vez en cuando se le va la pinza y pinta otra parte del mapa, sobre todo alternando movimiento horizontal y vertical (se ve que aun no he "sincronizado" ambos movimientos, debe haber alguna variable que se está modificando de mala manera).

Laghengar: el cuadrado de la derecha es el mapa sobre el que voy dibujando los tiles, luego uso ese mapa sobre un scroll de Bennu, que he puesto como cíclico horizontal y verticalmente. Os subo la versión arreglada, con un mapa más claro, para que entendais el funcionamiento (explicarlo sería un poco largo).
Lo bueno de este sistema es que se beneficia del motor de Bennu, que sólo dibuja una fila o columna de tiles, que usa la memoria del mapa del tamaño algo más grande que la pantalla, y que el puntero ese que daba problemas actúa como los dirty-rects, reduciendo aun más los tiles a dibujar.