Pergunta

Estou começando a programação jogo novamente. 10 anos atrás eu estava fazendo jogos em qbasic e eu havn't feito qualquer programação jogo uma vez que, por isso estou muito enferrujado. Tenho vindo a programar o tempo todo, porém, eu sou desenvolvedor web / DBA / admin agora. Eu tenho várias perguntas, mas eu estou indo para limitá-lo a um por post.

O jogo que eu estou trabalhando vai ser grande mundo, muito grande. Ele vai ser um pouco como URW , mas um mundo ainda maior e mais como um 'RPG'.

O que venho tentando decidir, é o que é o melhor layout modo como o mapa, salvá-lo, e acessá-lo. Eu pensei que a idéia de usar SQLite para armazenar os dados. Eu poderia, então, até mesmo usar o db sqlite como o arquivo de save para o jogo, agradável e fácil.

Alguém tem alguma dica sobre como eu deveria fazer isto ou ideias para outros métodos de armazenamento?

Aqui estão os requisitos para o meu jogo:

  • Eu preciso de acesso aleatório completo de detectar no mundo do jogo (o NPC, monstros, animais serão todos ativo o tempo todo).
  • Eu estou usando Stackless Python 3.1, as opções são bastante limitados, a menos que eu faço um monte de trabalho.
  • Precisa ser capaz de lidar com um mundo muito grande.
  • Suporte Concorrência seria um plus, mas eu não acho que vou precisar.
Foi útil?

Solução

Não mexa com bancos de dados relacionais, a menos que você é forçado a usá-los por fatores externos.

Olhe para pickle do Python, prateleira .

Shelve é rápido e escamas bem. Ele elimina a conversão confuso entre Python e representação não-Python.


Editar.

conselho mais importante. Não se atolar em escolhas tecnológicas. Obter os locais, itens, personagens, regras, etc, para trabalho . Em Python. Como forma simples e correta possível.

Não queime uma única caloria cérebro em nada, mas núcleo modelo, exatidão, e um conjunto de recursos básicos para provar coisas trabalho .

Uma vez que você tem um modelo que realmente funciona , e você pode exercer com alguns testes de unidade sofisticados, então você pode fazer escolhas tecnológicas.

Uma vez que você tem um modelo, você pode significativamente escala-lo para milhões de locais e ver que tipo de armazenamento é necessário. O modelo não pode mudar - é a essência da aplicação. Somente a camada de acesso e camada de persistência pode mudar para ajustar o desempenho.

Outras dicas

Parece que o que você está pedindo é um tipo de índice espacial . Para um grande jogo 2d eu recomendo usar um quadtree . Quadtree funciona bem quando você tem uma grande área e atividade tende a acontecer em regiões localizadas da região, que é o caso para a maioria dos jogos do tipo RPG. Ele vai manter suas necessidades de armazenamento de baixo e esperamos acelerar a detecção de colisão também.

Como para salvar o jogo, coisas como jogador e monstro estatísticas pode entrar em um banco de dados, se você está preocupado com aqueles mudando frequentemente. Para o layout nível real Eu recomendo usar um formato de arquivo binário específico para o seu jogo. Não há muitas consultas do tipo de banco de dados que você normalmente precisa executar no layout nível e você pode fazer grandes otimizações usando seu próprio formato. Eu não saberia como começar a armazenar uma quadtree-like formato em um banco de dados (embora eu tenho certeza que é possível).

Eu estou usando banco de dados não-relationnal para armazenar grandes quantidades de datas. Se você pode trabalhar em um hardware de 64 bits, MongoDB com a sua Python motorista é realmente muito bom. Eu não sei se isso é ok com Stackless, mas é uma possibilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top