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

Quote from: Drumpi on June 08, 2010, 01:13:56 AM
Puedes representarlos con números o con un FPG que defina el usuario.
¿Como piensas que lo tenia hecho?¿Porque crees que esta las opciones de cargar los ficheros? ;D
Quote from: Drumpi on June 08, 2010, 01:13:56 AM
A nivel de formatos, puedes crear bloques personalizables. Por ejemplo, en mi TMF tengo un bloque para las animaciones. El primer INT indica el tamaño que tiene, por lo que si vale 0 es que no existe, y si vale 40, significa que los próximos 40 bytes incluyen info acerca de animaciones, pero si el motor que sea no los usa, puede saltarse esos 40bytes sin problemas.
De igual manera, puedes definir un bloque de datos personales, y que sea el usuario el encargado de leer dicha información.
Eso es lo que quiero evitar,tener que el usuario tenga que crear una rutina de carga compleja,para evitar errores a la hora de crear los niveles con datos inecesarios.Para mi seria muy facil crear una estrucuta con mil campos y que el usuario usará los que necesitará,pero si de esos mil solo necesita 7,se estaria guardando mas datos de los devidos,y la lectura acarreria al menos 3 lineas mas,aun asi aunque fuera lo de menos,la carga de los niveles se veria afectada considerablemente puesto que en un nivel puedes tener cientos o miles de procesos ,Items,Powers,Enemigos,Plataformas y demas...eso si le añadimos la lectura de los datos desechados de el resto de los campos .... una barbaridad...otra opcion que estoy pensando es crear varios plugins,y segun la necesidad de cada 1 los activara antes de la ejecucción ,el incombeniente esta en que tendria que hacerlo directamente desde el PRG ....

DjSonyk

Aqui os dejo las primeras 2 estructuras ,aunque abra mas ,seguramente...
[code language="bennu"]
STRUCT    FilaY1[249]   // Estructura de datos tipo Tiles
   FilaX1[249];     // Filas * Columnas = Id ,  devuelve el valor que contenga FilaY1 [?].FilaX1[?]   
END;

STRUCT Proce[499]     // Estructura de datos tipo creacion simple de un proceso
         INT FilaY;       // Guarda la coordenada Y del proceso a crear
         INT FilaX;      // Guarda la coordenada X del proceso a crear
         INT Ids;        // Gurada el Identificador del proceso a crear , Ejemplo 1=Inicio de nivel,2=Enemigo tipo 1,ect
END;
[/code]

Drumpi

No no, si yo digo tener dos FPGs distintos: uno para los tiles y otro para la representación de los tiles especiales.

Lo que no sabía es que el editor incorporase rutinas de carga de los ficheros generados en los juegos que programa el usuario.
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

Quizás me vaya un poco del hilo, pero:

¿Por qué no definir esas STRUCT como TYPE para tener disponible ese tipo de dato y poder declarar variables de ese tipo en adelante?

Recientemente tuve un problema con un cliente/servidor por haber usado STRUCT en lugar de TYPE, soy partidario de usar TYPE siempre, la existencia del tipo de dato no es una sobrecarga significativa.

Es normal usar "subconjuntos" de los lenguajes, yo siempre uso TYPE y nunca STRUCT, quizás vuestras opiniones me cambien de idea, adelante 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

DjSonyk

Respondiendo a tu pregunta Wind,da igual que de momento este en Struct o como Type,lo mas facil para la gente que tiene menos experiencia le viene mejor en struct asi pueden asignar los datos que van a guardar facilmente,aun asi desaparecera para manejarlo con memoria virtual,y asi podemos introducir los datos directamente en el editor sin que tener que tocar los prg,es temporal,ademas en el juego los datos los podras cargar como quieras...
A lo que he venido ya esta acabado la opciones de crear automaticamente el mapa de durezas...aqui teneis unos ejemplos.



Se podrá crear un mapa de durezas del 100% ,75%,50% y 25% del tamaño del original,con SIZE me encontrado con algunos problemillas,asi que para poder crear correctamente el mapa de durezas se tendrá que tener los graficos y con las dimensiones especificas para crearlo correctamente...
Limpio el codigo y unos bugs para traeros la siguiente beta. ^^



Windgate

Ok, viéndolo así, sabiendo que es "única" quizás sea mejor idea la STRUCT

Por cierto y sintiendo desviar el tema, ¿Andas dentro del proyecto de videojuego BennuGD? Que personas para diseño/progrmación de niveles y todo lo asociado faltan y tú eres de los GROSOS...
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

DjSonyk

#66
Buenas...
Se acabo estar poniendo un "Objeto" y borrarlo hasta tenerle en la posición que mas nos agrade ,con el nuevo sistema de "InfoObjeto" sera la vida mas facil. ^^
Con InfoObjeto ademas de poder modificar su variables,nos dara la información necesaria que necesitemos,tambien se usará para poder borrar un "Objeto".En el apartado Datos, lo podremos usar para cualquier cosa que se le ocurra a nuestra imaginación,como por ejemplo meter mas coordenadas para crear una patrulla, una plataforma movil,flags para los niveles de dificultad en los que aparecerá o no el "Objeto" en cuestión , vamos posibilidades casi infinitas....
Edit: Tambien podeis obserbar 3 botones junto a la capa 1,se usarán para poder hacer espejados y trasnparencias a los graficos.
Lo mejor : Si usais la opción de mapa de durezas,los efectos se veran reflejados en ellos tambien...



Wind sigo muy de cerca el proyecto,pero no me apuntado porque,en que tengo poco tiempo y lo que tengo lo estoy gastando en el editor,y algo menos con el proyecto "RemaKe de Army Moves"...Aun asi,sabeis que podeis contar conmigo para lo que sea,me animo con todo menos con los graficos... :P
Saludillos...

Windgate

Se ve genial... ¿Para edición de niveles qué tal vendría este editor? Eso habría que comentarlo con Drumpi que es el que más controla, y alguno más por ahí estaba a vueltas con los motores tileados, a los que les vendría de lujo un editor gráfico.

Te dí un karmita :D
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

DjSonyk

Como ya dije en su dia será "casi" universal,vamos que se puede usar para todo,lo quieres en tiles,pues nada activas las capas que necesites en "datos" y lo creas y ya esta,lo guardas y luego lo usas en tu juego, lo que haces es por ejemplo en vez de guardar los niveles a mano ...
Nivel
  • = 1,1,1,1,1,
                  1,0,0,0,1,
                  1,1,1,1,1;
    En vez de estar creandolo asi, lo que haces es crearlo en el editor y guardarlo,luego cuando tengas que crearlo en el juego ,es solo leerlo desde el archivo guardado...Eso si ,la forma de cargar/crear los nivels dentro del juego es responsabilidad del programador en cuestion,lo unico que hace el editor,es guardar un identificador y unas coordenadas,ya sean X e Y ,como FilaxColumna,esto ultimo es mas para crear los juegos de motor de tiles,pantallas de arkanoid,ect.
    Y recuerdo que puedes usar las 5 capas,para crear de 1 a 5 archivos de datos distintos...Logicamente si el juego va tener un motor de tiles ,no usas pintura,solo datos asi que puedes montar por ejemplo un juego con 4 capas para el escenario y otra mas para los Item,salidas y demas...

Windgate

¿Y cómo gestiona las "capas"?

Quiero decir, en un determinado tile puede estar:

- El escenario visible
- La dureza asociada, que pueden ser varias para un mismo tile
- El item/enemigo/cosa

Y quizás un detonador de suceso no visible

Como editor para Arkanoid o juegos sencillos con una capa puede valer, pero lo que necesitamos ahora es un editor de scrolls tileados. A ver si estoy preguntando a lo tonto y Drumpi ya tiene preparado algo gráfico para eso, pero es que me pica la curiosidad :P
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

DjSonyk

 :o
Las misión de las capas en el editor es p tener separado los graficos que quieres usar para dibujar un mapa ,por ejemplo el mapa de un scroll, y los graficos que quieres usar como "Objetos"/"Tiles", vamos,que para según prepares las capas el editor dibujará sobre un mapa virtual que luego lo puedes grabar en formato .PNG o .MAP,o lo guardará en una estructura, el tipo de mapa mas basico es el llamado ahora mismo "2D Easy" , una estructura que solo guarda la posicición X,posición Y, y la ID del grafico,la ID del grafico sera la posición del archivo FPG,que se haya cargado en el editor,si te fijas en el pantallazo de arriba,el elfo tiene una ID de 1,eso quiere decir que esta guardado en el FPG en la posción 1,esa ID es la que ya dentro del juego puede usarse para la creacion del personaje.
Ejemplo : [code language="bennu"]Load("nivel1.dat1",miestructura) ;
IF ( miestrucutra.id==1 ) crearpersonaje(miestructura.x, miestructura.y); END
IF ( miestrucutra.id==2 ) item(miestructura.x, miestructura.y);  END
...[/code]
Con esto tan simple, podras crear a tu personaje en cualquier posición en cualquier nivel,sin tener que estar mirando manualmente en que coordenadas tiene que aparecer en cada nivel,aqui pinchas donde quieras que valla aparecer y listo.
Ahora mismo estoy terminando poder cargar una plantilla,o un mapa ya creado ,logicamente en PNG o MAP,para usarlo de fondo...

DjSonyk

Lo de la plantilla es algo asi....


Como puedes obserbar,el fondo esta hecho con el paint ,pero se puede hacer a mano y luego scanearlo, se puede tener un boceto hecho a mano y luego cargarlo en el editor y rellenarlo con los graficos que usemos en el juego,en este caso hemos puesto la casa con unas sombras y su hierva un poco de agua ,y parte del camino,no tengo graficos para el ejemplo asi que esta un poco chapuceras ,el motivo es para que se viera lo que pretendo...

Drumpi

Yo hice en su día un editor (gráfico) de mapas de tiles, pero claro, está hecho con Fenix y una versión muy primitiva del motor 2, por lo que es demasiado lento como para ser algo usable en mapas de tamaños "grandes" (un mapa del tamaño de las primeras pantallas del Echo es lo más que se puede hacer a 2400MHz, para poder ver las durezas por debajo).
Este editor podría ser una gran alternativa, desde luego, no creo que cueste nada adaptar cualquier motor (el mío incluido) a la carga de este formato de ficheros (añadir un proceso en mi caso).

También puedo ponerme a adaptar mi editor a tiempos más modernos, pero eso va a llevar un tiempo, así que si tenemos algo para ir haciendo el juego a la voz de ya, bienvenido sea.
PD: mi editor lo tendré que adaptar tarde o temprano, forma un pilar muy importante en el desarrollo de mis proyectos.
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

Me dejais plerpejo... No se si no me explico bien o no me entendeis... No hay que adaptar nada,en tal caso renombrar la estension del fichero que crea el editor o cambiar el nombre del fichero que se va a cargar con Load(),dentro del juego, sabiendo el numero de parametros que tiene que tener la Structura o Type sobra,si al crear el mapa de tiles en el editor ,dentro del juego como cargueis el archivo depende de cada 1...
[code language="bennu"]
STRUCT Proce[499]    /* Asi esta en el editor*/ TYPE _MiNivel; // Nada impide que lo podais crear asi en vuestro
     INT FilaY;                                             INT Y;       // proyecto....
     INT FilaX;                                             INT X;
     INT Ids;                                               INT Grafico;
END;                                                    END
[/code]
Lo que quiero decir es que Load(),solo carga datos, independientemente de como fueran guardados,Struct,Arrays,ect....Solo hay que saber el tamaño del archivo para que no genere ningun error.Drumpi espero que te guste el editor asi no tienes que modificar el tuyo y es trabajo que te ahorras...

Drumpi

Hombre, cualquier motor de tiles hay que adaptarlo para que cargue tus mapas de tiles, porque hasta donde yo se, no sigue ningún estandar conocido ;D
Hombre, pero si tu editor es bueno, por supuesto que lo usaré, no te quepa duda ;) Pero me conozco, y más tarde o más temprano, tendré mis propias necesidades o querré trabajar a mi manera, y me haré el mío :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)