Eu tenho um jogo 2D escrito em C ++ usando SFML. Quero tornar o jogo expansível de forma que conteúdo como itens ou entidades possam ser facilmente adicionados adicionando uma linha / entrada / linha a um arquivo ou banco de dados.
Estou procurando algo que não precise ser compilado no programa, mas que possa ser lido e gravado em tempo de execução. Quando seria apropriado usar um banco de dados?
Respostas:
Use apenas um banco de dados se precisar de um banco de dados. Isso é:
Se os dados do seu jogo atenderem a alguma dessas condições, você poderá se beneficiar do uso de um banco de dados. Observe que isso não é muito comum e você provavelmente não satisfaz nenhum deles. Se você preferir, eu usaria o SQLite ou algo com uma idéia semelhante de não exigir um servidor em execução e ser apenas uma biblioteca.
Caso contrário, use arquivos e carregue dados na memória na inicialização. Se você deseja que o jogo seja modificável, carregue esses dados no diretório do jogo e nos diretórios do mods e defina como as informações conflitantes podem ser mescladas.
Observe também que, se você fazer usar um banco de dados, ele pode beneficiar você e os desenvolvedores mods ainda usar arquivos para ler os dados iniciais e construir o banco de dados somente quando o jogo carrega. A menos que o tamanho potencial desse banco de dados seja enorme (ou seja, mais de algumas dezenas de MiB), convém usar um banco de dados em memória, o que é possível no SQLite especificando
:memory:
como o caminho do banco de dados .fonte
SQLite
, mesmo se suas necessidades não são "complexas" ou "enormes". Na verdade, existem muitas razões pelas quais, com algo pequeno e incorporado assim, você pode se beneficiar muito de ter um banco de dados na ponta dos dedos.Eu realmente gosto do MongoDB para desenvolvimento de jogos, ele tem um desempenho muito bom e é realmente flexível, fácil de usar e baseado em json.
Você pode adicionar qualquer campo necessário em qualquer coleção devido ao NoSQL Arch, para que ele se encaixe muito bem em qualquer ambiente "dinâmico", como jogos.
Dê uma olhada .
Se você está desenvolvendo algum tipo de jogo de estratégia baseado em MMO Turn, provavelmente deve ler sobre o CouchDB , é um banco de dados NoSQL que possui um sistema de versão realmente bom.
fonte
O CastleDB é uma boa opção porque é simplesmente um editor que converte um banco de dados em um arquivo JSON posteriormente. Eu já vi muitas respostas dizendo que um arquivo de texto simples é o melhor, então o CastleDB é provavelmente o melhor dos dois mundos.
fonte