Motor de tiles "Puzzle"

Started by Yawin, May 23, 2012, 03:26:42 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Hola a todos. Hace un año me puse a hacer un motor de tiles. Y bueno, tenía muy abandonado el tema, pero lo acabo de retomar... pues no se, porque sí. Lo pongo en recursos, porque no deja de ser un recurso que lo pongo para que lo uséis si queréis.


Link de descarga: http://pensarescompartir.com/Puzzle.rar




Documentación de Puzzle


Presentación
Puzzle es un motor de tiles desarrollado por Yawin para BennuGD. Este motor nació de la dificultad de crear mapas amplios y grandes para los videojuegos. Está pensado especialmente para juegos de estrategia, aunque puede ser empleado para cualquier otro tipo.
Este motor es todavía muy joven por lo que es evidente que tiene varios bugs e inflexibilidades. Por un lado, este motor fuerza a que el tamaño del mapa sea de 999x999 chunks. Así mismo, no consigo que se muestre el gráfico del personaje por encima de los pix (más adelante explico lo que son).
El último bug detectado hasta la fecha es que el motor falla al sobrepasar los límites del mapa.

Librerías requeridas
• mod_file
• mod_video
• mod_scroll
• mod_key
• mod_map
• mod_rand
• mod_screen
• mod_proc
• mod_dir

Globales
• int mapa[999][999]: Array que contiene los datos del mapa;
• int gtil: Id del fichero que contiene las texturas.
• bool log: Controla si se quiere que el motor genera logs o no. Si no se quieren logs, poner en false.


Funciones
void iniciar_motor(string mapita, int inic_x, int inic_y, string tilpath, bool fullscreen, int color);
Inicia el motor de tiles, asignando una resolución, un modo de pantalla, unas texturas, un mapa y unas coordenadas iniciales de la cámara.
   Argumentos:
     • string mapita: Este es el path del mapa a cargar.
     • int inic_x: La posición x inicial de la cámara.
     • int inic_y: La posición y inicial de la cámara.
     • string tilpath: El path del fpg con las texturas del mapa (si no se le pasa ningún path, genera un mapa).
     • bool fullscreen: Si se quiere a pantalla completa o en ventana.
     • int color: Modo de colores.


void cargar_tile(string tilpath)
Carga las texturas recibidas por argumentos. Si hay alguna textura cargada, descarga la primera para cargar la recibida.
   Argumentos:
     • string tilpath: El path del fpg a cargar.

void generamapa()
Esta función genera un mapa nuevo que carga en la array principal.

void camara_coords(int eq, int iy)
Sitúa el centro de la cámara en las coordenadas indicadas dentro del mapa. Si se especifican coordenadas fuera del mapa, la cámara no se mueve.
   Argumentos:
     • int eq: Coordenada x a la que se quiere desplazar la cámara.
     • int iy: Coordenada y a la que se quiere desplazar la cámara.

set_modo(int color, bool fullscreen)
Asigna el modo de color seleccionado y activa/desactiva el modo pantalla completa.
   Argumentos:
     • int color: El modo de color (8,16 o 32).
     • bool fullscreen: Si se quiere pantalla completa o ventana.

void savemap(string path)
Guarda el mapa en el fichero indicado (emplea el modo "2", por lo que sobrescribe cualquier información anterior).
   Argumentos:
     • string path: El nombre (sin extensión) del archivo donde guardar el mapa.

void loadmap(string path)
Carga el mapa del fichero indicado.
   Argumentos:
     • string path: El nombre (sin extensión) del archivo del cual cargar el mapa.

Procesos
camara(int x, int y);
Controla el movimiento del scroll, así como la llamada a los tiles.
   Argumentos:
     • int x: Posición x con la que se inicia.
     • int y: Posición y con la que se inicia.

pix(int x, int y, int i, int j)
Controla los gráficos de la pantalla. Hay un Pix por cada tile en pantalla (25x25). Durante toda la ejecución calcula cuál es el chunk a mostrar.
   Argumentos:
     • int x: Su posición x en la pantalla.
     • int y: Su posición y en la pantalla.
     • int i: La distancia x a la que está del punto "0,0" del gráfico que tiene que salir por pantalla.
     • int j: La distancia y a la que está del punto "0,0" del gráfico que tiene que salir por pantalla.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

KeoH

Mmmm interesante .. habrá que echarle un vistazo en cuanto tenga un rato xD gracias por el aporte :)

Yawin

Todavía está muy verde. Pero si le caboas algo te agradeceré que lo postees.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end