boost.serializationドキュメンテーションから:ここでは、「シリアル化」という用語を使用して、C ++データ構造の任意のセットをバイトのシーケンスに可逆的に分解することを意味します。そのようなシステムは、別のプログラムコンテキストで同等の構造を再構成するために使用できます。コンテキストに応じて、これはオブジェクトの永続化、リモートパラメータの受け渡し、またはその他の機能の実装に使用される場合があります。このシステムでは、「アーカイブ」という用語を使用して、このバイトストリームの特定のレンダリングを指します。これは、バイナリデータ、テキストデータ、XML、またはこのライブラリのユーザーが作成したその他のファイルです。
つまり、シリアル化はメモリ内のオブジェクトをある種のバイトストリームに変換するプロセスであり、逆シリアル化はその逆を行い、バイトストリームを取得してメモリ内のオブジェクトに変換し直します。
「シリアライゼーション」という用語は、バイトストリームのフォーマットについて何も意味しません。効率的にパックされたバイナリ形式、または緩いXMLまたはYAML記述の場合があります。元の言語自体のソースコードである場合もあれば、JavaScriptのサブセットであるJSONなどの別のプログラミング言語である場合もあります。シリアライズされたストリームの正確なフォーマットは、それをどのように使用するかを基にして選択する必要があります。
シリアライゼーションは、JavaやPythonなど、多くの言語と環境に組み込まれている機能です。CやC ++などの低レベルの言語では、言語によって提供されるメカニズムは通常十分ではないため、シリアル化ライブラリを使用(または書き込み)する必要があります。ポインターと参照を追跡またはシリアル化できず、エンディアンの問題が発生する可能性があります。例。
ウィキペディアには、シリアライゼーションに関する適切な記事があります。
シリアライゼーションは、ゲーム(およびすべてのソフトウェア)の多くの目的で広く使用されています。
- リソースファイルからゲーム内のすべての呪文のリストを読み込みます。
- ゲームの保存と読み込み。
- 状況(プレーヤーの位置やインベントリなど)をSQLまたはオブジェクトデータベースに記録します。
- ネットワークまたはその他のIPCリンクを介したリモート関数呼び出しの呼び出し。