Da documentação do boost.serialization : Aqui, usamos o termo "serialização" para significar a desconstrução reversível de um conjunto arbitrário de estruturas de dados C ++ em uma sequência de bytes. Esse sistema pode ser usado para reconstituir uma estrutura equivalente em outro contexto de programa. Dependendo do contexto, isso pode ser usado para implementar persistência de objetos, passagem remota de parâmetros ou outro recurso. Neste sistema, usamos o termo "archive" para nos referirmos a uma renderização específica desse fluxo de bytes. Pode ser um arquivo de dados binários, dados de texto, XML ou algum outro criado pelo usuário desta biblioteca.
Em outras palavras, serialização é qualquer processo que transforma objetos na memória em algum tipo de bytestream, e a desserialização faz o inverso, pegando um bytestream e transformando-o novamente em objetos na memória.
O termo "serialização" não implica nada no formato do bytestream. Pode ser um formato binário empacotado com eficiência ou uma descrição XML ou YAML solta. Pode até ser o código-fonte na própria linguagem original ou em outra linguagem de programação, como JSON , que é um subconjunto de JavaScript. O formato exato do fluxo serializado deve ser escolhido com base em como você pretende usá-lo.
A serialização é um recurso interno de muitas linguagens e ambientes - por exemplo, Java e Python . Em linguagens de nível inferior, como C e C ++, é necessário usar (ou escrever) bibliotecas de serialização , pois o mecanismo fornecido pela linguagem geralmente não é bom o suficiente - ele não pode seguir ou serializar ponteiros e referências e está sujeito a problemas de endianness, por exemplo.
A Wikipedia tem um artigo decente sobre serialização.
A serialização é usada extensivamente em jogos (e todos os softwares) para muitos propósitos:
- Carregando a lista de todos os feitiços no jogo a partir de arquivos de recursos.
- Salvando e carregando o jogo.
- Gravando o estado das coisas (por exemplo, posições e inventários de jogadores) em um banco de dados SQL ou de objeto.
- Chamada de funções remotas através de uma rede ou outro link IPC.
Serializar algo significa essencialmente transformá-lo em uma série. Isso é necessário se você deseja enviar algo por uma rede ou gravá-lo em um arquivo, porque ambos esperam uma série de bytes. Portanto, geralmente é um termo chique para os sistemas de salvar e carregar. No caso do Bullet, é simplesmente pegar os dados da malha e salvá-los de uma forma que o Bullet possa efetivamente usar. Você pode salvar isso e carregá-lo mais tarde, sem precisar analisar novamente suas malhas.
fonte
Serializar / desserializar é simplesmente preparar e gravar / ler objetos no / do disco.
fonte
Eu pessoalmente uso serialização para redes. Fora isso, não tenho muita utilidade para isso. Se você quiser saber por que ele é usado no Bullet, a melhor chance de obter uma resposta é perguntando nos fóruns do Bullet ou lendo a documentação.
fonte