Salvar e retomar estado de um jogo em Java

Boa noite,
Estou a fazer um jogo em java onde é necessário poder salvar o estado do jogo e retomar (save and load button).
Alguem me poderia ajudar? Qual a melhor maneira de o fazer? Nunca utilizei arquivos binários, só de texto.
Obrigado

Olá @jhonnymal! Para tal, é necessário você:

  1. Utilizar Serialization
  2. Utilizar arquivos binários
  3. Utilizar JSON

Eu organizei desta forma para que o primeiro seja o mais “Java Like” e o último o mais “Gambiarra” (kkkk).

Em primeiro vamos com Serialization, isso depende bastante da estrutura do seu jogo. Por exemplo, se você está a utilizar OpenGL (através de LibGDX ou LWJGL), você tem que tomar cuidado porque os IDs dos VAOs, VBOs, Textures e qualquer coisa que você gere em runtime NÃO PODEM ser serializadas! Toda vez que você carregar você deve regenerar todos os IDs. Agora, para os dois casos (OpenGL ou algum modo mais alto nivel), serialize somente as posições das entidades assim como inventarios e outros estados, eu não custumo serializar partículas mas isso depende do quão responsivo você quer que seja o Loading.

O modo binário é literalmente você criar uma estrutura de arquivo proprietária (só sua) onde você tem total do controle do que está sendo salvo e onde está sendo salvo, como ler o arquivo e como transformar eles em graficos.

A terceira é muito similar ao modo binário e o Serialization misturado (por isso que eu chamo de gambiarra), utilziando a biblioteca GSON (Google) ou Jackson você consegue virtualmente transformar qualquer object java em JSON e vice-versa.

No final tudo depende de como você está construindo seu jogo.

1 curtida