Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Bases De Datos Y Videojuegos

Iniciado por DraKKaR, 26 de Enero de 2004, 01:55:34 PM

« anterior - próximo »

DraKKaR

 Hola. Tengo en mente un proyectillo. Para realizarlo necesito que el "juego" se comunique con un servidor remoto que funcionará en una máquina linux. Este servidor estará conectado a una base de datos de la que sacará toda la información que le servirá al juego-cliente.
El problema de todo esto es que no se que sistema de base de datos usar.
Lo ideal sería tener la base de datos en un fichero mdb de Access y cargarlo desde un programa hecho en python desde el que se harían las consultas.
Esto es lo ideal, pero si es necesario (o mas sencillo) se podria prescindir del Access por otro formato. Y se podría cambiar python por java, C++ o cualquier otro lenguaje.

No estoy muy metido en esto de las bases de datos y no se por donde tirar.

¿Podeis señalarme el camino hacia el que ir?

Gracias.

Jond

 Hola DraKKaR,

por fin en lugar de preguntar puede responder.  (ole)

Porque en tema de programación de videojuegos
ando todavia muy verde, pero en base de datos,
llevo trabajando bastentes años.

Vamos alla.  B)

Si lo que se trata es que el juego sea a traves
de internet, y no te estas refiriendo a un juego
en una red local, te hace falta una base de datos
ligerita, tanto en velocidad como en que envie poca
cantidad de información, vamos que responda lo que
necesites sin muchas florituras.

La gente que programa en web suelen utilizar mysql.

Yo votaria porque utilizaras ese servidor, y luego mediante
sus objetos odbc, es muy sencillo acceder a ella, desde lenguajes
como Java, o C++, y si lo implementas en c#, algo que no te aconsejo
lo puedes hacer a traves de oledb.

Tambien puedes acceder por oledb a traves de c++.

Diferencias, entre oledb y odbc, a nivel de programación.

En el tema de VC++, es mucho mas sencillo de programar
las clases de oledb, la encapsulación es mayor y por lo
tanto las clases estan mas completas.

Y nada si te gusta la idea como decias de Access, pues
al igual puedes usar oledb, y odbc, pero no te aconsejo
que utlices Access si se trata de multiples usuarios,
tiende mucho a bloquearse.

Información de MySql en MySql web page

Bueno, espero no haberte liado mas de la cuenta,
y que te sirva la información.

BeRSeRKeR

 Sí, puede ser una buena idea utilizar mySQL. Aquí puedes encontrar las librerías  del API para C y C++, aquí tienes el manual para C++ y aquí la referencia para C.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

 Por cierto, si te decides por mySQL, para crear las tablas y demás, si no quieres liarte con sentencias SQL, puedes utilizar un front-end. El que yo utilizo es el MySQL-Front (aunque creo que sólo está para Windows).

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

DraKKaR

 Gracias, por vuestras respuestas, quiero matizar algunas cosas, porque me habeis comentado una serie de cosas y creo que me faltan conocimientos sobre el tema para acabar de entenderlas ;)


Citar
Si lo que se trata es que el juego sea a traves
de internet, y no te estas refiriendo a un juego
en una red local, te hace falta una base de datos
ligerita, tanto en velocidad como en que envie poca
cantidad de información, vamos que responda lo que
necesites sin muchas florituras.

Jond, las consultas y la información resultante de estas no viajarán a traves de internet. El servidor y la base de datos estarán en la misma máquina, de forma que se harán las consultas de forma local. Despues el servidor del juego ya se comunicará con el juego y le enviará lo que crea conveniente de eso.

Por lo demás, está bien lo que me decís de usar mySQL y C++, ya que C++ lo controlo bastante. Pero tengo todavia algunas dudas (estoy muy verde XD).
A ver si me aclaro, vamos por pasos. Lo ideal sería esto:
1- Desde una máquina Windows creo una base de datos con el Access.
2- Guardo esa base de datos como un fichero base.mdb.
3- LLevo ese fichero (base.mdb) a una máquina Linux donde está el programa que debe hacer consultas a la base de datos.
4- El programa en C++ abre el fichero base.mdb y hace consultas sin más. Sin encesidad de tener instalado ningun sistema de base de datos en el sistema.


Eso sería lo ideal, y no se si es posible. Por lo que he leido parece que para hacer eso hay que exportar la base de datos desde Access como obdc. De forma que el fichero exportado como obdc sera el que lea directamente el programa en C++.

Corregidme estos pasos si me equivoco.

TheWind

 Si tu aplicacion no va a realizar modificaciones en la estructura de la bbdd, lo mejor y con diferencia es que uses una bbdd empotrada como SQLLite, para muchas cosas es hasta 10 veces mas rapida que las demas -incluida mysql- y desde luego, de access huye como alma que lleva el demonio no solo pq tienede a bloquearse, sino pq se corrompe con suma facilidad y tiene una tendencia a perder registros de forma aleatoria que no es muy adecuada.

Ademas en una maquina linux liarse a leer un mdb no es posible: no hay ningun driver odbc en linux que lea archivos mdb en local pero si puedes acceder a el a traves de un puente odbc en una maquina windows... un poco lioso y muy lento: los updates e insert en la bbdd seran lentisimos.

En cualquier caso, puedes usar mysql y access: usando el odbc de mysql para que en lugar de crear un mdb, se conecte contra un server mysql y trabaje sobre el.


DraKKaR

 Pues la aplicación no va a realizar ninguna modificación sobre la base de datos, únicamente va a hacer consultas. Parece ke lo ke tengo ke hacer es usar el SQLLite ese. Lo miraré para ver como esta. De todas formas solo veo complicaciones en todo esto, me estoy preguntando sobre la real utilidad de meter todo en una base de datos o cerarme un sistema de ficheros de texto con la info.

Por cierto me interesaria mucho poder acceder a la base de datos desde Java, ¿que me decis de esto?

seryu


Jond

 Hola de nuevo DraKKar,

ante todo, si el servidor de bd
lo vas a tener en linux, olvidate
de inmediato de Access.

Y para manipular una base
de datos desde Java, lo mejor
es que te instales la jdbc
de la base de datos.

Las jdbc las puedes encontrar en http://java.sun.com

Las jdbc, son librerias al igual que las
directx o Opengl, que te agregan
la coleccion de objetos: java.sql.

En esta coleccion encontraras la
clase java.sql.Connection

Busca información en la ayuda de java
de esta clase, y a partir de esta,
encontraras muchas mas clases
para obtener información de la base
de datos.

DraKKaR

 Hola de nuevo.

seryu, ¿que ventajas me reportaría xml frente a hacer consultas SQL?¿No seria mas complicado porque tendría que programar yo la forma de optener toda la información?

Jond:
Vale, access olvidado. He estado mirando eso del JDBC y me gusta bastante, creo que lo más seguro es que acabe haciendolo así. De todas formas todavia me quedan unas pocas dudas para clararme:

El programa que accede a la base de datos está instalado en una máquina linux donde está instalado mySQL, y tiene instalados la JDBC :D

El problema es que no tengo permisos de administrador ni puedo tener permisos para acceder a ESA base de datos en esa máquina. La pregunta es.. ¿puedo crearme yo en esa máquina una base de datos para mi?
En caso de no poder usar la base de datos instalada en esa máquina (no tengo ni cuenta en esa máquina (es de uso académico XD)).. ¿Puedo crear la base de datos en el ordenador de mi casa, exportarla de alguna manera a algun tipo de archivo, llevarlo a esa máquina y acceder a él usando JDBC?

Gracias por vuestra paciencia XD

Jond

 Hola DraKKar,

aunque tu no tengas un usuario en esa maquina,
si como minimo tienes un usuario para conectarte
a la bd, te vale.

Pero ese usuario tiene que tener permisos de
creación de bd, que me da la impresión que no
es el caso.

Tu puedes instalarte en tu ordenador de casa,
tu propio servidor de mysql, y alli te creas
tu bd.

Luego, que dices que te lo quieres llevar al ordeandor
ese. Pues en la ruta donde instalas mysql,
se crea una carpeta "data".

Dento de "data", hay una carpeta con el
nombre de la bd que hayas creado.

Si te llevas esa carpeta tal y como esta,
a otra maquina que tenga mysql, y lo copia
en el directorio "data", esa bd, ya esta
en ese otro ordenador.

La historia seria que le llevases a alguien
con permisos ese directorio, y que te lo
dejara caer en ese directorio "data" de mysql.

Y luego por supuesto que te diera un usuario,
como minimo de lectura sobre la bd, que sera el que
utilizaras en la cadena de conexión en
el metodo Connect, del objeto java.sql.Connection.


DraKKaR

 Vaya, por lo que veo sí que necesito tener una cuenta en la BD. Eso no es bueno. En realidad tengo una cuenta de usuario en esa máquina, pero no tengo una cuenta en esa BD. Por lo tanto, esto de usar una BD se complica.
Yo creia que simplemente exportaba la base de datos a un fichero y eso lo cargaria directamente Java mediante JDBC sin necesidad de tener una cuenta en una base de datos ni nada parecido.
Ahora que pienso, hay algo que no me cuadra, debe haber una manera de que un programa pueda acceder a una base de datos para consulta sin tener cuenta ni nada. Hace un tiempo creamos un programa, ese programa para Windows estaba hecho en Borland C Builder. El programa necesitaba acceder a unos datos, que habian sido obtenidos de una base de datos. No estoy seguro si esos datos eran por si solos una base de datos, o si eran el resultado de exportar la base de datos a algún formato, pero sí se que el programa podía acceder a esos datos, y no habia ninguna base de datos instalada en el sistema.
Desconozco los detalles de todo esto, puesto que yo me ocupaba de las funciones gráficas de la aplicación, ignorando los detalles del acceso  alos datos. Solo recuerdo que el ordenador tenia que tener instalado ODBC o algo asi para poder acceder a lols datos.

¿Tiene sentido esto que digo?

AK47

 Saludos
Bueno, como dato anecdotico, deciros que en una practica de la universidad proponimos hacer un arkanoid. El profesor acepto, pero con la condicion ¡de que usaramoas una base de datos en access! En fin, para ello, usamos el ADO, que es muy facil. Si quieres te paso el codigo fuente ;)

Jond

 Hola de nuevo DraKKar.

Pues decirte que el Delphi de Borland
lleva su propio gestor de base de datos,
y el echo de que tuvieras que crearte
una entrada odbc, te asegura el
echo de que si que tubieras una base
de datos.

Y de echo, si tu te creas una base
de datos en mysql, para conectarte
a ella mediante Java, puedes crearte
una entrada odbc, pero claro esto
es en Windows, y en la cadena de conexion
del objeto Connection, tan solo tienes
que pasarle el nombre de la entrada odbc.

Pero bueno, estamos en las mismas.

Necesitas que un usuario autorizado en
el directorio de mysql, te pegue los ficheros
de la bd, y luego que te creen una cuenta
de usuario en mysql, ojo, en mysql,
que no es necesario que en el sistema linux
de la maquina.

Y AK47, me reitero Access y linux = Agua y Aceite

DraKKaR

 Hola, gracias a todos por vuestras respuestas, pero la verdad es que me estoy replanteando la utilidad de hacer lo que quiero con una base de datos. Creo que lo intentare con un sistema de ficheros, y así veré si realmente necesito una base de datos o no. La verdad es que necesito en teoria manejar una wena cantidad de información, pero no necesito ahcer buskedas raras ni consultas con subconsultas. Simplemente leer lineas de un fichero donde este toda la información, y con eso creo que bastaria.

Bueno, ya sabreis algo del proyecto. Gracias y hasta luego!






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.