PDA

Ver la versión completa : generador de codigo para sprites multiplataforma



ZarkGhost
10/10/2010, 17:04
Bueno, sinceramente no sabia como llamar el titulo, ya que la idea es que no sea solo para la pandora.


Expongo la idea, para que me [propeller] si es mala idea, y para que en caso de que sea buena idea, por si alguien se quiere apuntar(sin prisas de nada, que esto es por amor al arte). Contrastar opiniones para el diseño de algo siempre viene bien.

El caso:

He programado juguecitos con sdl en c y c++, pero siempre me encuentro con la misma barrera, hacer que las animaciones de los sprites queden bonitas es una tarea pesada, si se programa a mano.

Hice un motor de sprites, que simplificaban las cosas para mi ultimo proyecto, pero cuando me toca codificar maquinas de estado que indican como funcionara la física y el cambio de una animación a otra, se vuelve todo muyyyyy pesado. (de hacer)

Idea:

Programar un programa en C modo consola, o java, creo que C seria mejor para este propósito, al que se le pase un documento XML donde se especifican:

los archivos a cargar con las imágenes, tamaño de sprites, orden de animaciones (saltos de sprite a sprite y veces que se repite cada uno en una animación) etc.. y se representen las maquinas de estado, ejemplo, si estoy corriendo, y se pulsa saltar, pasar a estado saltando.
La idea seria que de ese documento, el programa escribiera el código C o C++ que realizara todo esto de la forma mas ordenada posible, dejando hueco para añadir físicas y demás.

Opiniones? Me he vuelto loco? Ya existe?

La idea me pareció buena, desde el punto de vista de que seria independiente de la plataforma, se podría usar en wiz, pandora (si, pueden convivir en este mundo) y donde sea, buen rendimiento desde el punto de vista de que no seria interpretado(aunque hoy en dia vamos sobrados de potencia) y se podría diseñar pensando en cambiar la librería de entrada y salida para cuando las soluciones que vienen con intención de sustituir SDL funcionen en nuestras pequeñas.

A parte de, y lo mas importante, que permitirá definir elementos que saldrán en pantalla animados, fácilmente.

jduranmaster
10/10/2010, 17:22
no te has vuelto loco (creo.:D) Lo primero que necesitas si vas a trabajar con XML sea Java o C++ es definir totalmente el fichero XML que vas a utilizar , y como lo que propones no es moco de pabo, creo que te quedara un XML-TOCHO. Una vez que tengas eso te recomiendo que para el parsing uses la libreria XERCES, que esta tanto en Java como en C++ (como ves al final te va a dar igual un lenguaje u otro a no ser que quieras portar la herramienta para poder usarla en la consola).

la verdad no se si existe algo parecido para juegos. Si alguien ha usado lex y jacc lo comprendera. lex es una herramienta que permite definir una sintiaxis especifica, es decir permite definir unas reglas y jacc es el compilador por el cual se pasan esas reglas y da como resultado una maquina de estado en un fichero .C que se comporta de acuerdo a las normas de definidas en lex.

Creo que tu buscas algo parecido pero para un juego, y no se yo si existe algo asi.

Aiken
10/10/2010, 18:00
Creo que tu buscas algo parecido pero para un juego, y no se yo si existe algo asi.

la idea no es mala, basicamente es un lenguaje (xml) que permita programar sprites (solo las animaciones en principio) a alguien que no sepa programar.



algunos juegos comerciales utilizan un lenguaje de "programacion" script que permite algo parecido, suele usarse para la IA pero supongo que la idea seria para usarlo para definir las animaciones.


Aiken

ZarkGhost
11/10/2010, 21:07
ummm use lex y jacc hace un par de años para la practica de compiladores, creo que lex reconocia tocks, y jacc aplicaba las reglas, y despues tenias que hacer funciones que generaban el codigo y que se llamaban desde jacc.

no seria mala idea, ademas, en algún lado debo tener la practica y tengo bastantes herramientas echas que simplificaba el reconocedor del lenguaje...



le tengo que dar vueltas sobre el papel :) gracias por refrescar memoria :)

efegea
11/10/2010, 21:11
Pero no entiendo, ¿porqué crear un generador de código c/c++? ¿porqué no escribir código c/c++ en forma de librería que interprete el XML y ya está?

jduranmaster
11/10/2010, 22:10
le tengo que dar vueltas sobre el papel :) gracias por refrescar memoria :)


de todas formas creo que seria mas simple trabajar usando Xerces para manejar XML.

Nathrezim
11/10/2010, 23:27
Si lo vais a portar a consolas portátiles estaría bien que mirarais tinyXML, es bastante más ligera que Xerces.

ZarkGhost
16/10/2010, 20:55
por que no interpretar, umm la respuesta que me doy es que al generar el código se te permite la libertad de editarlo y añadir características que tu quieras. Al solamente interpretar, limitas los posibles resultados a no ser que tu interprete sea muy elaborado, niveles a los que creo que es mas sencillo generar el código, que después de todo, sera muy repetitivo... quizás me haya encabezonado con la idea :) nu se.., y si genera codigo, seria valido para todas las plataformas, hoy y mañana, sin recompilar ningún interprete

jduranmaster
16/10/2010, 20:57
entonces vas a ponerte a hacerlo o que?

ZarkGhost
20/11/2010, 14:11
bueno, decir que estoy en ello.
Efegea te doy la razón :P en parte interpretara un bin, el cual es generado, y también generara un poco de código, a modo de constantes para que sea mas simple manejarlo.
Primero voy a hacer un ejemplo simple a mano, de lo que debería dar el generador, esto ya lo tengo sobre papel en plan clases y demas, y mas o menos la mitad implementado y funcionando.
Al final la idea final es esta:
Generador en java, ya que es multiplataforma y me permite gestionar facilmente parses.
El generador creara una librería(basicamente añadir a la libreria las contantes) y un fichero bin con los datos para cada animación.

El cuando lo acabare, sera inversamente proporcional al tiempo que le dedique al StarCraft2 :P y en breves Gran Turimo 4...

jduranmaster
20/11/2010, 20:24
lo importante es que lo estes haciendo.:D

ZarkGhost
27/01/2011, 20:55
Bueno. Ya tengo una primera versión

Reconozco que esta lleno de bugs, seguro :P Aunque parece que funciona ya aparecerán.
Por hacer:

Limpiar código.
Comentarlo! :P
Me acabo de dar cuenta que no cuento bien cuando debo dejar de pintar el sprite :P ajustarlo!
De momento... generar transiciones de animación a animación, es mas sencillo que hacerlo codeando o escribiendo cadenas con los fotogramas, pero aun es muy limitado, ya que funciona como una maquina automata finita, permitiendo poca cosa... Ademas, es difícil añadir animaciones como que al correr, derrape al cambiar de sentido, por ello habria que implementar un sistema mejor, con una pila, o algo :)

No es gran cosa, si a alguien le interesa seguiré publicando mejoras, si no, ahorro el tiempo :P Y si a alguien le gusta la idea y quisiera colaborar, siempre se podría abrir el código :)

Link: benja.lolam.es/generadorBSS.7z

Incluyo un .exe con un ejemplo compilado, también incluyo el .bss del ejemplo (son los archivos salvados del editor de sprites)

Un saludo :)

tSuKiYoMi
27/01/2011, 22:04
gracias, probare el .exe puesto que no tengo pandora.

ZarkGhost
27/01/2011, 22:59
en teoría esto no es para la pandora, pero lo puse aqui porque no tengo ni wiz ni na... :P y si espero una pandora.

Intento que sea una forma de generar sprites fácilmente, utiliza sdl, aunque todo seria portarlo a opengl u otras librerías. por lo que se podría compilar para cualquier plataforma que acepte sdl.

tSuKiYoMi
27/01/2011, 23:13
Yo pensaba que ya habias recibido tu Pandora. Cuando la tengas ya tienes trabajo hecho para tu primer porgrama para la consola.