Editor por y para BennuGd

Started by DjSonyk, November 25, 2009, 05:22:23 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DjSonyk

#15
Vale ,ya se porque se me rompia.... ¬¬

Faltaba un simple Stop_Scroll... :P

Si funciona perfectamente,jeje guay...

Drumpi

A ver, lo del mapa:

1-usa el código de antes para que el usuario introduzca un número
2-convierte esa string a un número: ancho=atoi(mi_string);
3-usa el código de antes para que el usuario introduzca un número
4-convierte esa string a un número: alto=atoi(mi_string);
5-crea el nuevo mapa con estas dimensiones: new_map(ancho,alto,16);

Es la mejor forma de crear un mapa de tamaño personalizado.
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)

DjSonyk

De nuevo gracias Drumpi, 8 para el salto de carro y 13 para borrar .... jejeje

Drumpi

En todo caso, al revés ^^U
Sé que el 10 y el 13 son los caracteres que usa windows para los finales de linea de los ficheros, eso seguro (pues no me he peleado poco ya con ellos)
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)

DjSonyk

Pues como me funciona ^^ ,aun asi muchas gracias...LLevo atascado toda la tarde con un error por actualizar no le tendre listo hasta que solucione el error ..

DjSonyk

Aqui os dejo unas capturas de unos mini-mapas creados con el editor universal... Como podreis ver vale para todo tipo de juegos solo he puesto 3 ejemplos porque no tengo graficos para mas...
En la captura del RPG ,esta el decorado pintado,y el personaje,los NPCs y las casas como tiles/procesos para guardar los datos donde se deven crear dentro del juego.
En la captura del machacaladrillos esta logicamente en procesos,por motivos obvios..
Y la 3 captura esta todo en tiles para crear el nivel con los datos guardados...
Aun falta para la version 1.0,pero esta noche intentaré dejar una version muy decente ,retoco 4 cosas y la pongo hasta dentro de un rato.

SplinterGU

muy bueno!

che, pregunta... tambien crea mapa de durezas? si no lo hace estaria bueno que lo haga...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DjSonyk

Si Splinter la primera version tendra lo de las durezas ^^,eso venia ya en mi mente desde el primer momento...
Otra idea que tenido cuando he ido a buscar al peque a la guarderia es que de las 5 capas que se podra tener 2 capas de pintura esten reservadas para el segundo plano de scroll,asi se pueden crear las 2 y ver como van quedando ,pero estoy liado con la forma de guardar los datos,el problema es que la tabla o estructura se crea al principio,pero no se puede redimensionar dentro del editor,con las pruebas la tengo el mapa de 1024x1024 pixel y 32x32 "rejillas" para la colocación de los procesos.Osea que poniendo en la rejilla 1,1 una llave,en el juego se pondria la llave en las coordenadas X=32,Y=32,ect...
El problema esta si el usuario quiere por ejemplo que la distancia entre esas llaves en vez de se 32 sea de 16 pixel tendria que transformar la esctructura a 64*64=1024x1024pixels ,pero no consigo como hacerlo ,estoy intentando alguna forma con punteros,y intentado hasta punteros que apuntan a otros punteros ,pero me desvio mas de mi objetivo,redimensionar la estructura.
Ademas tengo pensado una opcion que se llamaria "Metodo Libre"en la que en vez de guardar las coordenadas como rejilla se guardaran como coordenadas exactas y claro dependiendo de los enemigos ,items y demas ,se tendria que guardar una cantidad distinta de datos....
Algun consejo o enfocamiento de por donde tirar no vendria mal ^^

Drumpi

Pues no se el método exacto que usas pero me lo imagino ¿el editor lleva un motor de scroll tileado asociado para poder usar estos mapas de tiles? porque si no es así no entiendo la necesidad de hacer mapas con 5 capas para durezas, objetos y demás. Por ejemplo, en mi caso, yo necesitaría un mapa de tiles, sin gráficos, con dos capas, las demás me sobran.

Por esto mismo tuve que buscarme un método para usar tile por proceso, o si no, deberías usar un "array dinámico" que maneje los gráficos tiles y no usar mapas para dibujar el resultado, a menos que quieras usar un mapa del tamaño de la pantalla y sólo pintes en el los tiles que se ven en ese momento, es como crear un scroll propio sobre un gráfico.
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)

DjSonyk

Jejeje otra vez Drumpi ^^ (lo digo porque eres el que mas contesta :P)me alegra..
Voy a explicarme despacio y relajado porque quiero correr tanto que igual no se explico bien,(siempre he tenido ese problema).

La version 1.0 quiero que contenga:
1- 5 Capas de pintura ,para grabarlas en formato PNG o MAP,su uso para Scroll evidentemente.Si 5 capas son muchas,pero ayer pense que 3 para el plano 1 del scroll y 2 para el plano 2 del scroll.Ademas creara si el usuario quiere un mapa de durezas SOLO con las 3 primeras capas,las del plano 1,¿Muchas?pues si con una se puede pintar por ejemplo la hierva y una vez que tengas el fondo hierva,agua,desierto,ect puedes pintar encima los arboles,puentes,ect pero si usas por ejemplo 100 graficos para crear el mapa puedes hacer que con la capa 1 uses los 33 primeros la segunda los 33 siguientes y asi no tienes que estar pasando 50 graficos para adelate/atras...ademas seguro que mas de uno se inventa formas de usarlo,y seguro que 5 capas son muchas al menos para la pintura...Aun asi siempre puedes crear el nivel como lo hagas siempre,guardarlo en PNG por ejemplo y cargalo en el editor para meter los enemigos,ect...
2- 5 Capas para procesos/datos, que será para ..
A- Crear niveles a base de tiles,guarda la información de la posicion X,Y y Grafico que se deve colocar.
B- Crear los procesos del juego al cargar el nivel,inicio del personaje,posicion de los enemigos,ect...

DjSonyk

#25
C- Crear una estructura como dureza,me refiero a que leyendo por ejemplo de la celdas 3,1 si contiene un 1 ,entoces no se podria pasar. FILAY[posicionsiguiente].FILAX[posicionsiguiente]==1; // Pared no se puede pasar
D- Mas de uno sacara mas metodos para usarlo... ^^
Esos como los metodos de creación para la version 1.0,el problema que tengo esque nunca me llevado bien con los punteros...
Los datos los quiero que se guarden de la siguiente manera.
1- STRUCT FILAY[dimension_definida_porelusuario] ; FILAX[dimension_definida_porelusuario]; donde la celda FILAY[?].FILAX[?] guarda el codigo del grafico.
2-STRUCT proceso[N];CoordenaY[proceso_actual] ; CoordenadaX[proceso_actual]; que guarada el numero de procesos que si tiene que crear y las coordenadas reales donde se tiene que guardar.
Como adelanto en la version 2.0 tambien guardara las rutas,lo que es lo mismo se podra elejir la posicion de inicio y hasta que posicion tiene que ir para volver,y para los juegos de estratejia se podran poner a cada "TANQUE" una ruta en la que por ejemplo estara haciendo una patrulla por la parte trasera de la base xD

DjSonyk

aun asi ,si posiblemente 5 capas sean muchas,tambien para mas de uno no lo sean ^^.
De todas formas Drumpi va a ser muy configurable y personalizado,podras elegir las capas activadas que deseas,desactivar alguna si no te intera o activarla si te interesa,grabar los datos por separado,los de la/s capa/s que elijas ya se puede hasta poner nombre (gracias a tu ayuda) a los mapas al grabar....
No he puesto la version que tengo porque no quiero que este la gente buscando que tiene que cambiar para dimensionar las capas de datos en el PRG,pues el editor esta para quitar trabajo no para darle,ademas en las ultimas pruebas vi un fallo bastante gordo con BLOCK_COPY,y no es porque funcione mal,todo lo contrario funciona tambien que me pasa el error.... xD
El problema esta que para borrar uso un grafico negro pero claro si lo que quieres es borrarlo realmente con un grafcio transparete no lo borra XD,tengo que mirarlo ahora a ver como se soluciona,lo que si necesito ayuda para lo de redimensionar los datos pues me acostumbrado a hacer las dimensiones siempre antes de ejecutar y en VB  hay una sentencia llamada ReDim que te soluciona el problema y ahora estoy dandolo vueltas y nada....

Drumpi

Para redimensionar un gráfico no existe una función, tienes que crear uno nuevo y copiar el viejo sobre él.
Sin embargo, para borrar creo que map_clear es lo que buscas, que no sólo te lo pone en transparente, puedes hacerlo con cualquier color. O si no, hay otro método si usas procesos o copias de mapas: usar el flag 128 (NO_COLOR_KEY), de esta forma, al copiar el mapa ignorará el color transparente, es decir, copiará TAMBIEN el color cero, como si el mapa origen no tuviera transparencias, pero si que las verás en el mapa destino.

Supongo que hablo más que los demás porque ya tengo experiencia en estas lides, mi editor me llevó más de dos meses de programación, aun con el motor de tiles ya hecho, y se me quedaron muchas cosas en el tintero: animaciones, seleccionar los mapas que queremos ver, pegar bloques de tiles, dibujo en varias capas... incluso tenía algo similar a lo que tu has hecho: definir capas especiales (yo había pensado en una capa de números, que mostrase eso, números, no gráficos, para que el diseñador los interpretase como quisiese (enemigo, item...)). Tengo pensado retomarlo (de hecho, antes de ponerme con el motor de tiles ya estuve con las funciones de manejo del fichero de configuración), pero tengo otras prioridades.
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)

DjSonyk

No no Drumpi, lo que quiero es redimensionar los datas a guardar...
Por ejemplo una vez guarde 100 tiles,otra vez 200,ect,vamos que guarde los datos necesarios que necesite el usuario.
Porque no es lo mismo guardar un mapa por ejemplo de 24 tiles de alto *24 tiles de ancho que guardar uno de 50x50....
el caso es que me hicistes darme cuenta de hacer el array dinamico pero en C lo consigo pero no consigo portarlo a Bennu
y eso es lo que quiero un array multidimensional dinamico que guarde X bytes,segun lo defina el usuario

DjSonyk

Mira el codigo en C lo tengo...

typedef int* Plnt;
Plnt *Matriz;
unsigned int Ancho,Alto;

void main()

int Cnt;
unsigned int CntAncho,CntAlto;
/* Reservo memoria para el array */
Matriz=(Plnt*)malloc(Alto*sizeof(Plnt));

/ * Reservo memoria para cada array */
for (CntAncho=0;CntAncho<Ancho;CntAncho++)
{
Matriz=[CntAncho]=(Plnt)malloc(Ancho*sizeof(int));
}

pero no se portarlo a Bennu,vamos que no se como declararlo he mirado en la wiki lo e dado mil vueltas pero nada de nada una ayudita por favor ^^