Desarrollando un motor de juego
Estoy planeando un juego de computadora y su motor. Habrá un mundo tridimensional con vista en primera persona y será un jugador por ahora. El lenguaje de programación es C ++ y utiliza OpenGL.
Decisión de diseño centrada en datos
Mi decisión de diseño es utilizar una arquitectura centrada en datos donde haya un administrador de eventos global y un administrador de datos global . Hay muchos componentes como física, entrada, sonido, renderizador, ai, ... Cada componente puede activar y escuchar eventos . Además, cada componente puede leer, editar, crear y eliminar datos .
La pregunta es sobre el administrador de datos.
Si se debe usar una base de datos relacional
¿Debo usar una base de datos SQL, por ejemplo, SQLite o MySQL, para almacenar los datos del juego? Contiene prácticamente todo el contenido del juego, como elementos, personajes, inventarios, ... Excepto las mallas y texturas que están aún más relacionadas con el rendimiento, por lo que las guardaré en la memoria.
¿Es una base de datos SQL lo suficientemente rápida como para usarla para leer y escribir información del juego en tiempo real, como la posición de un personaje en movimiento? También necesito preocuparme por la compatibilidad multiplataforma. Además de mantener todo en la memoria, ¿qué alternativas tengo?
Las ventajas serían
Las ventajas de usar una base de datos relacional como MySQL sería la estructura orientada a datos que permite un cálculo rápido. No necesitaría objetos para representar entidades. Podría consultar fácilmente los datos de los objetos cercanos al reproductor necesarios para la representación. Y no tengo que preocuparme por los datos de objetos lejanos. Además, no habría necesidad de juegos guardados ya que el estado del juego del hoyo se guarda en la base de datos. Por último, pero no menos importante, expandir el juego a un juego en línea sería relativamente fácil porque ya hay un lugar donde se almacena el estado del juego del hoyo.