Desenvolvendo um Game Engine
Estou planejando um jogo de computador e seu mecanismo. Haverá um mundo tridimensional com visão em primeira pessoa e será single player por enquanto. A linguagem de programação é C ++ e usa OpenGL.
Decisão de Design Centrado em Dados
Minha decisão de projeto é usar uma arquitetura centrada em dados em que haja um gerenciador de eventos global e um gerenciador de dados global . Existem muitos componentes, como física, entrada, som, renderizador, ai, ... Cada componente pode acionar e ouvir eventos . Além disso, cada componente pode ler, editar, criar e remover dados .
A questão é sobre o gerenciador de dados.
Se deve usar um banco de dados relacional
Devo usar um banco de dados SQL, por exemplo, SQLite ou MySQL, para armazenar os dados do jogo? Isso contém praticamente todo o conteúdo do jogo, como itens, personagens, inventários, ... Exceto malhas e texturas que são ainda mais relacionadas ao desempenho, por isso vou mantê-las na memória.
Um banco de dados SQL é rápido o suficiente para usá-lo para ler e escrever em tempo real informações sobre jogos, como a posição de um personagem em movimento? Também preciso me preocupar com a compatibilidade entre plataformas. Além de manter tudo na memória, que alternativas eu tenho?
As vantagens seriam
As vantagens de usar um banco de dados relacional como o MySQL seria a estrutura orientada a dados que permite o cálculo rápido. Eu não precisaria de objetos para representar entidades. Eu poderia facilmente consultar dados de objetos próximos ao player necessários para a renderização. E não preciso me preocupar com dados de objetos distantes. Além disso, não haveria necessidade de jogos salvos, pois o estado do jogo de buraco é salvo no banco de dados. Por último, mas não menos importante, expandir o jogo para um jogo online seria relativamente fácil, porque já existe um local onde o estado do jogo do buraco é armazenado.