De la documentation boost.serialization : Ici, nous utilisons le terme "sérialisation" pour désigner la déconstruction réversible d'un ensemble arbitraire de structures de données C ++ en une séquence d'octets. Un tel système peut être utilisé pour reconstituer une structure équivalente dans un autre contexte de programme. Selon le contexte, cela peut être utilisé pour implémenter la persistance des objets, le passage de paramètres à distance ou une autre fonctionnalité. Dans ce système, nous utilisons le terme «archive» pour faire référence à un rendu spécifique de ce flux d'octets. Il peut s'agir d'un fichier de données binaires, de données texte, XML ou autre créé par l'utilisateur de cette bibliothèque.
En d'autres termes, la sérialisation est tout processus qui transforme des objets en mémoire en une sorte de flux secondaire et la désérialisation fait l'inverse, en prenant un flux secondaire et en le transformant en objets en mémoire.
Le terme "sérialisation" n'implique rien sur le format du bytestream. Il peut s'agir d'un format binaire efficacement compressé ou d'une description XML ou YAML lâche. Il peut même s'agir de code source dans le langage d'origine lui-même, ou dans un autre langage de programmation, tel que JSON , qui est un sous-ensemble de JavaScript. Le format exact du flux sérialisé doit être choisi en fonction de la façon dont vous comptez l'utiliser.
La sérialisation est une fonction intégrée de nombreux langages et environnements - par exemple Java et Python . Dans les langages de niveau inférieur comme C et C ++, il faut utiliser (ou écrire) des bibliothèques de sérialisation , car le mécanisme fourni par le langage n'est généralement pas assez bon - il ne peut pas suivre ou sérialiser des pointeurs et des références, et est sujet à des problèmes d'endianité, pour exemple.
Wikipedia a un article décent sur la sérialisation.
La sérialisation est largement utilisée dans les jeux (et tous les logiciels) à de nombreuses fins:
- Chargement de la liste de tous les sorts du jeu à partir des fichiers de ressources.
- Sauvegarde et chargement du jeu.
- Enregistrement de l'état des choses (par exemple, positions des joueurs et inventaires) dans une base de données SQL ou objet.
- Appel d'appels de fonction à distance sur un réseau ou une autre liaison IPC.
Sérialiser quelque chose signifie essentiellement le transformer en série. Cela est nécessaire si vous souhaitez envoyer quelque chose sur un réseau ou l'écrire dans un fichier, car les deux attendent une série d'octets. C'est donc généralement un terme de fantaisie pour les systèmes de sauvegarde et de chargement. Dans le cas de Bullet, il s'agit simplement de prendre les données de maillage et de les enregistrer sous une forme que Bullet peut utiliser efficacement. Vous pouvez l'enregistrer et le charger plus tard sans avoir besoin de ré-analyser vos maillages.
la source
La sérialisation / désérialisation consiste simplement à préparer et à écrire / lire des objets sur / depuis le disque.
la source
J'utilise personnellement la sérialisation pour la mise en réseau. En dehors de cela, je ne l'utilise pas vraiment. Si vous voulez savoir pourquoi il est utilisé dans Bullet, la meilleure chance d'avoir une réponse est de demander dans les forums Bullet ou de lire la documentation.
la source