Ejemplo de mapa tileado por procesos con scroll

Started by darío, October 08, 2008, 08:56:40 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Lt_Henry: Bueno, si no quieres tener tiles de más, puede añadir 0 tiles extra tanto en x como en y ;D Si hago algo, intento fijarme en todos los detalles que puedo (por eso nunca termino nada :D)

Splinter: pues a mi me sonaba lo que comentaba Momia... pero leyendo el código intuía que algo no cuadraba, por eso la pregunta.

Windgate: tienes tres formas sencillas de asociar durezas. La primera es que cada gráfico es una dureza en si (un bloque, una rampa...). La segunda es mezclar los datos (puedes usar los 4bits menos significativos para el gráfico y los más altos para el tipo de dureza... pero tendrías que hacer una modificación al código, distinto según el motor).
Y la tercera sería cargar dos mapas de tiles: creo que en el segundo motor aun usaba un par de punteros globales para guardar la info, y así lo hacía en FenixLand, carganto uno (el de gráficos) en el array de int y el otro (el de durezas) en el array de bytes (básicamente hice copy/paste de la funcion de carga cambiando el array de destino, cosas de no controlar bien aun el tema de punteros.
Pero eso no es necesario en el motor 3, pues puedes cargar los mapas de forma independiente en sendas variables tipo t_mapa, pero sólo usar una para el scroll (o si te atreves, usar la misma variable rellenando uno de los arrays dinámicos que quedan sin usar).

Lo que me recuerda que he cometido un error en la función que te devuelve el valor de un tile dando unas coordenadas de tile: la búsqueda depente de una variable de tipo tscroll en lugar de tmapa.

Creo que venía el ejemplo de uso del zoom, a ver... Sip, el temp.prg, justo después del control de la cámara con las teclas, usando el + y el - del teclado numérico: basta con usar la función tscroll_cambia_zoom pasándole el identificador del scroll y el porcentaje de zoom. Me hubiese gustado haber usado una simple variable, pero creo recordar que había una serie de cálculos y acciones que debían hacerse al modificar el zoom (si, mirando el código, veo que cambiaba el tamaño del array de procesos entre otras cosas). Esto en el motor 3 debería ser mucho más sencillo (no me lo pidais en isométrica, por caridad ^^U)
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

a lo que puede referirse es que no se refrescaba lo que se estaba viendo en pantalla, pero si el scroll se mueve, se refleja el cambio...

igual eso ahora esta corregido
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

lo que no suguiero es hacerlo constantemente, porque cuando se modifican graficos se hace analisis de los mismos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Sólo para los interesados, deciros que el motor de scroll tileado isométrico ya es funcional, pero aun no está terminado.
Tenía que haberlo terminado el lunes, pero entre una cosa y otra... Si incluso he perdido un día buscando un fallo con las variables locales Z y resulta que he localizado un bug horroroso de todas las versiones de Fenix. Tranquilos, Bennu se ha librado.

No está terminado, aun tengo que probar cómo sigue al proceso target (scroll automático siguiendo a un proceso), añadir un par de funciones para obtener tiles de un mapa o coordenadas de pantalla según coordenadas del scroll, e implementar scroll cíclico en un sólo eje. Esto último creo que lo dejaré para después (a menos que alguien le haga falta), porque creo que el único uso que se le dará sin scroll o cíclico en ambos ejes.

De rendimiento va... bueno, el scroll normal es más sencillo, pero obtengo buenos resultados:
-640x480.
-Tiles de 32x16.
-Mapa de 10x15x2 tiles (la capa de arriba sólo tiene algunos).
-AMD athlon 64x2 4800+

·Fenix 093prev9, scroll no cíclico: 119 fps
·Fenix 093prev9, scroll cíclico: 6 fps
·Bennu r106, scroll no cíclico: 219 fps (creo)
·Bennu r106, scroll cíclico: 101 fps

En nada cuelgo el motor para que lo probeis y lo useis si os gusta, tanto el normal como el isométrico, aunque la documentación, aparte de los comentarios del código, tendrá que esperar.
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)

Windgate

Que sean llamadas sencillitas porfa:

start_scroll ( , , , , , );
scroll [ ].camera = ;

Y a funcionar xD
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

No te preocupes, windgate, será tan sencillo como hasta ahora (como lo visto en los motores v3, quiero decir, en los ejemplos, los prg, se contemplan todos los casos posibles).
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)