Ir al contenido

publicidad

Foto

Bases de datos y videojuegos


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
11 respuestas en este tema

#1

Escrito 05 junio 2010 - 03:00

Una duda que no sé si ya ha surgido en el foro: ¿cómo se suelen manejar los datos en un videojuego? Hablo por supuesto de títulos que deban manejar grandes cantidades de información que deba ser almacenada (en concreto, quiero hacer un pequeño juego de gestión tipo Football Manager. Eso implica guardar muchos datos relativos a equipos, estadísticas de partidos, etc...)

Más o menos, tengo claros todos los conceptos relacionados con bases de datos, pero ando un poco perdido sobre su aplicación a un juego. Por ejemplo, mediante Visual Basic es bastante sencillo crear una base de datos local y luego modificar esos registros vía formulario, pero no hay ejemplos de su aplicación práctica en un videojuego.

¿Alguien me puede ofrecer alguna página web de referencia o sabe dónde encontrar códigos fuentes de ejemplos concretos (a ser posible, en VB o Java)?

Gracias de antemano :)

  • jonaSoft

  • Fledgling

  • vida restante: 100%
  • Registrado: 09 oct 2009
  • Mensajes: 55
#2

Escrito 05 junio 2010 - 04:32

El manejo de base de datos en un videojuego es lo mismo que en una aplicacion, asi que no te pases rollos.

aqui un ejemplo, eso si, es xna.

http://blog.brightsi...ames.com/?p=125

#3

Escrito 06 junio 2010 - 12:46

Se me viene a la cabeza el PC Fútbol, seguramente utilizara alguna base de datos para manejar toda la información, pero pienso que dichas bases de datos son creadas a medida para el juego, no creo que por debajo hubiera MySQL o similares.

Si yo hiciera un juego trataría de que fuera imposible o por lo menos muy dificil acceder a la información de la base de datos.

De todos modos es una simple opinión.

Saludos.

  • vanche

  • Methuselah

  • vida restante: 100%
  • Registrado: 01 feb 2009
  • Mensajes: 196
#4

Escrito 06 junio 2010 - 16:08

El programado de juegos, no es lo mismo que de un programa, teoricamente si, pero en la practica no.Si tu quieres una base de datos que pueda ser editada para un programa,ni le das importancia a la seguridad,si quieres ponerla en un videojuego, la segurida se triplica, ya que todos te modificarian la base de datos y demas..

Yo creo que usan base de datos especializadas, como dice Cprogrammers

____________________________________

Imagen Enviada

"Somos el Virus,Y la Tierra nuestro Servidor"

**Ser daltonico es tener una capa de ajuste,en mapa de degradado,blanco y negro,en opacidad 60%**



  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#5

Escrito 07 junio 2010 - 00:05

Mira, si lo que has hecho es usar el asistente para conectarte a una base de datos en access... lo que has hecho es un juguete. No te llegas a hacer del todo a la idea de como va esto aqui.

Tienes que hacerte la base de datos preferiblemente en sql -aunque que leches, en access tambien "vale"- y con esa base de datos hecha, si tu lenguaje tiene comandos para tocar esas bases de datos, sin problemas, pero si no te tendrás que hacer una dll desde visual c++ por ejemplo que de comandos para trabajar con la base de datos -por ejemplo, pasas un comando sql como parámetro y se ejecuta en una base de datos-

Y si no, pues a currartelo tu por programacion, que para eso eres desarrollador: Te haces un sistema de matrices (tablas) que vas rellenando y te creas uno o varios documentos binarios donde almacenas esas tablas y a tratar con ellas. Total, para un juego de futbol la base de datos aun es "pequeña".

Un saludo.

#6

Escrito 07 junio 2010 - 08:57

Lo que dice Jona es verdad, el acceso a la BD es igual para una aplicacion que para un juego. Tendras acceso desconectado para no sobrecargar la BD y ya esta. Lo que cambiara será como usas los datos.

Yo para los juegos que he hecho he usado XML, ya que no necesitaba mucha informacion. Pero si necesitas muchos datos, un SQL y listo. Tanto MySQL como MSSQL funcionan muy bien (MSSQL solo en windows).

Si tu quieres una base de datos que pueda ser editada para un programa,ni le das importancia a la seguridad,si quieres ponerla en un videojuego, la segurida se triplica, ya que todos te modificarian la base de datos y demas..


Como? Que la seguridad no es importante? Dile eso a una empresa y no te contratan nunca, XD. Es más, hay gente que se dedica unica y exlusivamente a la Base de datos, seguridad, mantenimiento, etc...

  • txesmi

  • Childrer

  • vida restante: 100%
  • Registrado: 14 jun 2009
  • Mensajes: 41
#7

Escrito 07 junio 2010 - 14:29

MySQL requiere pagar la licencia si quieres usarlo en programas que no sean de servidor web y no es barato que se diga. Yo lo que he visto es los datos guadados con una pequeña encriptación en archivos binarios y cargados a variables para su gestión.

Salud!

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#8

Escrito 07 junio 2010 - 14:33

En juegos antiguos de estrategia, no recuerdo bien cuales, lo que vi fueron archivos del excel a los que se metia el juego para sacar la informacion y todo eso...

#9

Escrito 10 junio 2010 - 06:35

Mira, si lo que has hecho es usar el asistente para conectarte a una base de datos en access... lo que has hecho es un juguete.


A ver ya te digo que tengo experiencia con bases de datos, de las de verdad, porque me dedico profesionalmente a ello. Pero una cosa es desarrollar contra BBDD montadas para miles de clientes y otra, de ahí mi pregunta, construir algo local para manejar los datos en un juego.

El problema es que no encuentro tutoriales o ejemplos concretos.

#10

Escrito 10 junio 2010 - 11:27

Buenas.

Podrías usar XML junto con con LINQ. Claro está, en el caso en que uses .NET. De esta forma hasta podrías colgar tu juego en XBox Live.

Yo no uso LINQ porque prefiero los PA, funciones y desencadenadores de SQL Server, pero hay un programita muy bueno que pasa 'al vuelo' las sentencias SQL a LINQ. Se llama LINQER.

Saludos.

  • Sante05

  • Methuselah

  • vida restante: 100%
  • Registrado: 21 jul 2001
  • Mensajes: 182
#11

Escrito 20 junio 2010 - 18:08

La forma de gestionar los datos dependerá (como todo) de las necesidades de nuestro proyecto. En concreto, de la naturaleza de los datos y de cómo debamos acceder a ellos.

En la mayoría de juegos, y al margen de otros recursos más concretos como los mapas, gráficos, o sonidos, los datos suelen consistir en una serie de valores o parámetros que especifican ciertas constantes (por ejemplo, el daño que hace un arma, o la velocidad de movimiento de un personaje).

Típicamente no hay una gran cantidad de datos, y se suelen cargar en memoria durante la inicialización, para poder acceder a ellos de forma inmediata. Las formas de almacenarlos y gestionarlos son muy variadas (casi que cada estudio o incluso cada juego lo hace de forma distinta). Podemos usar formatos estándares como XML u hojas éxcel. Podemos también usar formatos propios (es lo más habitual, creo yo), que pueden ir desde un simple archivo de texto listando los parámetros, hasta formatos más elaborados que permitan añadir comentarios y una cierta estructura a los datos (ej: definir una lista de armas como un array, y una serie de parámetros de distintos tipos para cada arma).

Adicionalmente, si nuestro juego utiliza un lenguaje de scripts para el gameplay (como LUA), normalmente nos interesará definir todos los parámetros también en dicho lenguaje.

En cuanto a la seguridad, no suele ser un requisito importante. Habremos de preguntarnos si realmente necesitamos proteger esos datos, y por qué. En muchos juegos de PC se busca precisamente lo contrario, que sean accesibles y fácilmente modificables para permitir la creación de mods por la comunidad. En consola, esto no es un problema ya que los datos no se pueden modificar. Si se tratara de un juego online, la seguridad debería venir dada por el diseño de nuestra arquitectura cliente-servidor, y no tanto por la forma de almacenaje de los datos.

En cualquier caso, ya que lo habitual es que todos los recursos se empaqueten en uno o varios "super-archivos" más grandes, bastaría con cifrar estos archivos.

Sobre el usar o no una base de datos: normalmente no se suele hacer, porque como hemos visto la cantidad y naturaleza de los datos no lo aconseja. De tener una gran cantidad de datos, y requerir establecer relaciones entre ellos, filtrarlos según diferentes criterios, etc... entonces es una opción a considerar. Por ejemplo, el caso del Football Manager (tendríamos un montón de datos de jugadores, equipos, etc.. relacionados entre sí, y querremos ordenarlos y filtrarlos con varios criterios, como puede ser listar los jugadores menores de 27 años que pertenezcan a un club que cumpla X condición).

Cómo vemos, más que la cantidad de datos, importa las relaciones y lo que vamos a hacer con ellos. En estos casos nos beneficiamos de usar SQL, precisamente para no tener que implementar estos filtros y relaciones por nuestra propia cuenta. Una solución que he visto recomendada es SQLite (aunque nunca la he usado), que básicamente permite montar una mini-base de datos sin servidor, integrada en nuestra aplicación. Para VB no sé que soluciones hay, supongo que algo basado en Access puede ser útil.

En el caso de juegos online, normalmente tendremos un servidor donde se almacenen estos datos. Los criterios son los mismos, si se trata de datos sencillos, relativos al gameplay, usaremos las mismas soluciones que para juegos single-player. Si se trata de gran cantidad de datos relacionados, sobre los que tenemos que hacer consultas, montaremos una base de datos. También es habitual encontrar bases de datos en el caso de juegos persistentes, o que deban dar servicio a una gran cantidad de usuarios.

#12

Escrito 20 junio 2010 - 21:05

Yo te recomiendo el mismo sistema que Sante05, para un manager de futbol donde es importante manejar una cantidad moderada de datos lo mejor es un sqlite. Se crea como un sólo archivo, por lo que no hay que instalar nada más (a diferencia de mysql y otros sistemas de datos más completos), es gratis y te permite usar la potencia del sql para ordenar los datos.
Creo recordad que el NeverWinter o algún juego parecido usaba un sqlite para guardar los datos.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad