Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Creacion de archivos de datos (bases de datos) para juegos

Iniciado por Macrojd, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Macrojd

                                Tengo la necesidad de programar unos juegos en c para DOS (Djgpp). El problema con el que me encuentro es que no tengo herramientas para la construccion de bases de datos como ocurre en Borland Builder (windows), por ejemplo. No sé si construir un archivo con estructura propia o utilizar archivos dbf o algo así. En cualquiera de los dos casos no sabría cómo implementarlo. Me gustaría saber con qué tipo de archivos trabajan ustedes para almacenar los datos y listas necesarias en sus juegos y si conocen algún formato práctico que pueda utilizar desde DOS.

(por supuesto que la programación en DOS no es algo habitual para mí, ni tampoco la programación de juegos, aunque pretendo que esta última comience a ser mi actividad principal).
                               

drakons2

                                Normalmente se usan ficheros planos, pero tambien depende mucho del tipo de juego, tambien podrias usar BD DBase                                

Emotion

                                fff... pero yo creo que es mejor fichero plano, claro que el fichero DBase estara siempre mejor organizado, pero claro, una llamada a un driver ODBC o al gestor no lo veo yo muy util para programar juegos, pero claro, yo no he experimentado mucho con esto, solo con ficheros hechos por mi, asi que lo de la BD no se como iria...                                
G3: Get the Power!

mICrO

                               
Citar
El 2002-05-10 03:44, Macrojd escribió:
Tengo la necesidad de programar unos juegos en c para DOS (Djgpp). El problema con el que me encuentro es que no tengo herramientas para la construccion de bases de datos como ocurre en Borland Builder (windows), por ejemplo. No sé si construir un archivo con estructura propia o utilizar archivos dbf o algo así. En cualquiera de los dos casos no sabría cómo implementarlo. Me gustaría saber con qué tipo de archivos trabajan ustedes para almacenar los datos y listas necesarias en sus juegos y si conocen algún formato práctico que pueda utilizar desde DOS.

(por supuesto que la programación en DOS no es algo habitual para mí, ni tampoco la programación de juegos, aunque pretendo que esta última comience a ser mi actividad principal).


Yo personalmente uso XML para todo lo referente a datos en un juego.

El xml es pontente y flexible y anula los fallos al cambiar de version del fichero, ya que no tienes porque "joder" la estructura original.

Es un concepto tan simple, que a veces, asusta.

Piensa algo asi

uno.xml

y luego en nua nueva version

dos.xml

Facil y sencillo.

Luego para leer esta info en el juego puedes usar muchas tecnicas, basicamente usar un parser DOM que convierte esa estructura en un arbol de nodos de texto.

Añades un dtd para validar los datos, y asi tendras hasta parsing por si hay errores al escribirlo.

El limite tu imaginacion.

Nota : El ejemplo ha sido escrito sin mas, seguro que hay mejores maneras de reflejar los datos de una pantalla que esa ;-P

[ Este Mensaje fue editado por: mICrO el 2002-05-10 13:01 ]

[ Este Mensaje fue editado por: mICrO el 2002-05-10 13:04 ]

[ Este Mensaje fue editado por: mICrO el 2002-05-10 13:07 ]                                
ICrO : log off

karotida

                                No creo que la mejor solución pase por utilizar un fichero de base de datos. Y digo esto porque si, por ejemplo decides utilizar Access 2000 (vamos un .mdb), y el usuario final tiene un win95 con Access97, no tendrá los últimos drivers, con lo que tendrás que obligarle (y a su vez deberás suministrarle) a instalarlos (el mdac_typ.exe de microsoft en el caso mencionado).

Creo que utilizar ficheros de texto plano que puedes leer desde tu programa sin problemas, es la mejor solución.

El XML como comentan más arriba es un fichero de texto plano, por lo que puede ser una buena opción. Además está organizado de forma jerárquica. Eso sí, si utilizas algún parser no creado por tí (como el MSXML de microsoft) para su lectura, también tendrás que asegurarte que lo tiene instalado el usuario ( o en su defecto incluirlo en tu instalación). Por ejemplo el explorer 5 no lleva la última versión de este parser ( la 4 si no me equivoco), por lo que si utilizas la última a instalar tocan. De todas formas hacerte tu propio parser de XML no es más complicado que hacerte uno para un formato propio, de esto no creo que te libres si usas texto plano.                                

mICrO

                               
Citar
El 2002-05-10 17:33, karotida escribió:
No creo que la mejor solución pase por utilizar un fichero de base de datos. Y digo esto porque si, por ejemplo decides utilizar Access 2000 (vamos un .mdb), y el usuario final tiene un win95 con Access97, no tendrá los últimos drivers, con lo que tendrás que obligarle (y a su vez deberás suministrarle) a instalarlos (el mdac_typ.exe de microsoft en el caso mencionado).

Creo que utilizar ficheros de texto plano que puedes leer desde tu programa sin problemas, es la mejor solución.

El XML como comentan más arriba es un fichero de texto plano, por lo que puede ser una buena opción. Además está organizado de forma jerárquica. Eso sí, si utilizas algún parser no creado por tí (como el MSXML de microsoft) para su lectura, también tendrás que asegurarte que lo tiene instalado el usuario ( o en su defecto incluirlo en tu instalación). Por ejemplo el explorer 5 no lleva la última versión de este parser ( la 4 si no me equivoco), por lo que si utilizas la última a instalar tocan. De todas formas hacerte tu propio parser de XML no es más complicado que hacerte uno para un formato propio, de esto no creo que te libres si usas texto plano.

Hay un parser llamado tinyxml es gratuito y esta en java pero ha sido portado a c++, con  fuentes incluidos, te vale bien para que lo utilices o bien para tu hacerte tu propio parser.

La version de c++
http://sourceforge.net/projects/tinyxml/


[ Este Mensaje fue editado por: mICrO el 2002-05-10 17:53 ]                                
ICrO : log off

undol

                                Leiendo un poco todas las respuestas me surje una "duda".
Teneis algun inconveniente con los ficheros binarios?
Los ficheros binarios se pueden leer y estructurar de forma correcta y en el caso de guardar cierta información son mucho mas interesantes que los ficheros en formato texto !

Bueno nada mas, un comentario como otro !

Saludos
                               
aludos --{Undol}--

Macrojd

                                Gracias por sus respuestas.
Estoy empezando a usar archivos de texto pero no me gusta hacerlo por dos cuestiones: primero no los considero seguros (me da la impresion de que en cualquier momento se pueden arruinar) y segundo pueden ser modificados por un usuario sin muchos conocimientos.
Sobre XML estoy un poco perdido. Desconozco este formato y lo único que pude encontrar es que se asemeja al HTML. Si alguien conoce algún curso o documento que me pueda ayudar se lo agradezco (ingles o español). Aunque voy a tratar de generar mis archivos con una estructura propia.
Me interesa lo del formato binario, pero apenas estoy comenzando asi que no estoy seguro de como manejarlo ¿podrían darme algunos ejemplos en c?

Gracias.
Un saludo.
JD                                

Loover

                                Sin duda lo mejor es usar ficheros binarios. Ya que el acceso es mucho más rapido que a uno de texto y como bien dices, el usuario no podrá cambiarlos.
Voy a explicarte en lineas generales como cargar  datos desde un archivo binario:



bool Read(char *archivo)

{

       // Abrimos el fichero

FILE* fp;

fp = fopen(archivo, "rb" );

       // Si no existe el fichero salimos

if (!fp)

{

 return false;

}



       // Vamos leyendo los datos. Debemos conocer su tipo

       // El dato 1 es de tipo long

       long Dato1;

fread (&Dato1, sizeof(Dato1), 1, fp);

// En Dato1 se ha cargado el dato del fichero



       // Hacemos lo mismo con los demás datos

       long Dato2;

fread (&Dato2, sizeof(Dato2), 1, fp);



       ...

       ...



Pues así de fácil es :sonriendo:




                               
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Loover

                                Mierda.
¿Como colocais el código con fondo blanco y comentarios verdes? He usado el "", "" y me ha salido la chapuza de arriba.                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

NeLo

                                Loover
http://www.stratos-ad.com/forums/viewtopic...ic=49&forum=7&7                                
Drowning deep in my sea of loathing






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.