Estou tentando descobrir uma maneira de escrever um sistema de salvar / carregar para o meu jogo em C ++. A partir de agora, estou fazendo tudo isso usando sinalizadores binários. Alguém tem uma idéia de como fazer isso de outra maneira? Não me importo de usar binário, mas quero conhecer minhas opções. Eu também quero algo em que seria fácil verificar o status de apenas um evento completo ou incompleto para decidir certas coisas (muitos dos itens do sistema neste jogo dependem do que o jogador fez ou não fez ao longo do jogo).
17
Respostas:
Serialização seria o caminho a percorrer e, quanto à verificação de status, você poderia ter lógica no método de desserialização para fazer isso.
fonte
Estudei um pouco o código-fonte DOOM. Vou te contar como é feito lá.
D_DoomMain contém todas as funções de abrir / salvar / carregar, além de várias outras coisas. Como se diz no começo do arquivo,
Basicamente, o arquivo inteiro está cheio de
M_CheckParm
s do início ao fim. É disso que o D_DoomLoop consiste. É um loop enorme (algo como 1000-2000 linhas de comprimento).Como sua pergunta é 'Como posso escrever?' Vou apenas colar alguns bits de código que se referem a gamesaves, do D_DoomMain:
Aqui estão as instruções em que esse material é usado, no final do loop.
Aqui está a função que acessa as strings, que você encontra espalhadas por todo o código:
Você também tem um arquivo chamado p_savegame.c com coisas que salvam todos os dados associados ao usuário (quais armas você possui, onde está em qual nível etc.).
E, finalmente, você tem o arquivo que carrega os dados do jogo salvo em um cenário de jogo, sem dúvida o mais complexo de todos, porque também carrega todo o resto. Esse é chamado p_setup.c e está localizado no mesmo diretório.
Funcionou bem para mim
cat
tudo isso em um buffer de texto epipe
esse textosendmail
em meu próprio endereço de email. Dessa forma, eu posso lê-lo em momentos estranhos do dia e usar 'find' quando quiser procurar coisas como 'como o DOOM carrega um jogo'. O código está bem comentado.fonte
Você pode serializar a classe ou os dados em um arquivo simples e depois lê-los novamente quando carregar.
fonte
Marquei a sugestão de usar XML / JSON para estruturar os jogos salvos. Dessa forma, você está muito preparado para criar as salvaguardas baseadas na "nuvem". Ou pelo menos, você terá uma estrutura que poderá usar para projetos futuros que possam envolver a web. Contanto que os arquivos não sejam armazenados de uma maneira que seja muito fácil de ler, eles deverão oferecer muitos benefícios. Como métricas! Hooray
fonte