Echo v1.4: road to season two

Started by Drumpi, June 12, 2016, 11:30:54 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Futu-block


Drumpi

La luna sigue en el mismo sitio desde que se lanzó la primera beta del juego... bueno, creo que la pasé a un fondo en lugar de dibujar un círculo en el gráfico de fondo por aquello de unificarlo todo (añadir fondos de scroll y eso).
Pero sigue pensando, lo de las Z iba muy bien encaminado :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

no llegue a ese nivel, pero lo unico con Z que se me ocurre es el pasto y el Echo entre el mismo y las columnas... la verdad que ni idea.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block

ese nivel es el primero, señor Amato Yoshi, y es verdad, es el pasto...
creo

Drumpi

#139
Vais bien, a ver si más gente se anima a participar :D Si no encontrais la solución, el viernes os lo digo.
Pero andais muy cerca, Splinter ya se lo huele cual trampa de queso :D

PD: Mira que lo puse fácil: la captura es la hice a los 10 segundos de juego, así que si no conoceis la localización de la imagen es que ni habeis ejecutado el juego siquiera :D :D :'(
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

jaja... si que jugue al juego... pero cada vez mas viejo, y el aleman no perdona...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

pues ya me parecia! las cavernas tienen fondo... no se ve el cielo por detras...

ya que estamos podrias poner nubes por detras y algunas por delante... o al azar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block


Drumpi

¡¡Dindindindin!! Splinter ya lo ha visto. Es la primera beta donde los mapas del scroll tileado tienen DOS capas: la que ya conoceis por delante, y una nueva por detrás :D
Falta medir el rendimiento en la Wiz, a ver si se nota o no el efecto, pero según las últimas pruebas (las de no conseguir ni un solo frame extra con diferentes motores), no debería suponer un gran costo computacional (no debería llegar ni al 0'5%, porque hablamos de una capa mayoritariamente vacía... de momento).

Mira que llevo todo el año siendo pesao con esto. Todo el tema de mejorar el rendimiento era porque quería meter las dos capas de una vez :D

Respecto a tu sugerencia, Splinter... Ya el primer nivel tiene nubes por detrás, usando tres scrolles nada menos, y la niebla por delante, que no es aleatoria, pero consume ella sola más del 10% de la memoria del juego y que hace que se arrastre en Wiz. Y cada nivel tiene una imágen diferente: paredes de ladrillos, infinitas salas con numerosos arcos, el futuro en ruinas tras la bruma... Mi favorito es el fondo del nivel subterráneo, es el más pequeño y no precisamente el más complejo de todos, pero ese contraste de colores, y cómo vamos pasando de una oscura cueva del desierto a un lago subterráneo de cristalinas aguas antes de llegar a... Tendreis que esperar a que se estrene la segunda temporada, no voy a hacer spoilers :D Pero los dos "niveles" que se vieron en la 1.3.2 fueron un pequeño adelanto de los tres que va a tener esta versión (y seguramente los amplíe). Van a estar relacionados entre sí y... si me da tiempo, lo mismo meto el nivel que no llegó a entrar a tiempo en la primera temporada :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

se me ocurre preguntar, es necesario que sean 2 capas? no puede ser 1 sola, total la parte donde no puede pasar (la capa que ahora es la de adelante) no permite pasar por ella, con lo que daria la sensacion de ser 2 capas... (creo, lo estoy pensando asi en el aire)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Eso era así, pero llevaba tiemppo queriendo que hubiera cosas por detrás, no sólo los murs por los que no se puede pasar.
Por ejemplo, quería hacer que Echo se viera transparente cuando atravesase paredes, y ahora puedo: en la capa de detrás el muro sólido, y ahora en la de delante el mismo tile pero en transparente.
Además, podré poner pinchos y agua en la actual fase 3-2, y hacer efectos en todo el primer nivel para tener zonas a cubierto y al aire libre. Ya lo verás :)

Sí es cierto que actualmente, salvo por el tema del agua, el juego funciona bien con una sola capa, por lo que si Wiz se resiente demasiado con dos, no me costaría nada configurar el juego para que cargue el mapa de 1 o de 2 capas, total, el motor es exactamente el mismo :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Bueno, pues como pensaba, los peores temores se han confirmado: a Wiz le sientan mal los mapas de tiles de dos capas.
En general n hay una caida de rendimiento en condiciones normales, pero cuando llega el momento de cambiar de tile, la pausa ha aumentado al doble, incluso diría que a más.

El código se hizo intentando mantener un gasto razonable de CPU, manteniendo el uso de memoria al mínimo. Actualmente la cantidad de procesos tile que se crean y se destruyen es mínima, ya que gracias a una lista enlazada, se pueden ir reciclando (el que desaparece, antes de ser eliminado, espera a ver si necesita que le asignen uno nuevo). Sólo hay procesos tile dentro de la zona de pantalla (y 3 filas/columnas extra, para que no se vean cómo aparecen de improviso).

Pero sí es cierto que hay una parte que es costosa computacionalmente: obtener el número de tile. Actualmente uso una función, que comprueba si la posición solicitada está dentro del mapa, y según el tipo de dato, consulta un puntero a un array según el tipo de dato usado. Para calcular la posición, se realizan dos multiplicaciones y una suma: (capa * nTilesCapa) + (fila *nnTilesFila) + columna. La pega es que se llama a esta función por cada posible tile en pantalla, y creo que es la parte que más hace que se resienta todo: crear y eliminar la función ya lleva un tiempo de cómputo.
La idea que he tenido es suprimir dicha función, y usar índices para cada eje, de modo que pueda usar bucles para recorrer directamente los arrays dinámicos. En un principio descarté la idea porque era un riesgo el andar recorriendo punteros sin un control de errores, pero se va a hacer en un proceso de uso interno donde, supuestamente, no se va a tocar nada, así que creo que merece la pena intentarlo.

La cuestión es ¿Cuándo? ^^U

O también puedo probar con el motor de scroll sobre gráfico :D Las funciones draw no son precisamente rápidas, pero lo mismo aquí sí lo son, y mejoran el rendimiento al pasar de una media de 80 procesos tiles a 2 imágenes en srcoll, pintando filas o columnas de 16 pixels cada vez.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

He intentado hacer lo que dije en el anterior mensaje, de recorrer el array manualmente, pero... ha sido un fracaso. Es cierto que apenas he hecho el esfuerzo, pero estoy de vacaciones y necesitaba descansar, así que cuando ha empezado a darme errores por punteros díscolos y he visto que tras 10 minutos de intentos no conseguía avanzar más, lo he dejado para otro momento, así que por ahora, Wiz tendrá que conformarse con mapas de una sola capa.
También he intentado arreglar los pájaros qe atraviesan suelos, pero pasa lo mismo: tenía una idea de por dónde podría provenir el problema, pero me equivocaba, y por tanto, me he vuelto a quedar atascado. Necesito reproducir las condiciones exactas del error y no guiarme a ojo, y eso lleva más tiempo del que estaba dispuesto a dedicarle hoy, así que de nuevo, se queda para otro momento.

Y ya me quedé sin fuerzas para empezar a desarrollar nuevos niveles, así que me puse un rato con Blender y otro con la consola, que llevaba tiempo sin cogerla. Mañana tengo que volver al trabajo, donde me han negado el día de vacaciones, y enfrentarme a un programa obsoleto, a ver si lo hago funcionar con una librería moderna o bien tengo que downgradear unos ficheros, volviéndolos a crear desde cero :S
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

envidio y odio ese chollo de trabajo mierda que tienes

Drumpi

Créeme si te digo que el editor de mapas de tiles, con todo lo complejo que es, con todas las capas, variables, funciones, clases, etc, etc que lleva, es más fácil de hacer que este mostrenco en VB6... Y eso que sólo estoy tocando menos del 10% del código. Si llego a tener que mantenerlo entero... lo habría pasado a VB.net y habría borrado el 70% del código, sin exagerar :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)