ページ 11

STLコンテナとセーブ

Posted: 2011年10月26日(水) 22:14
by 入門者
std::string や std::vector などは内部にポインタを含むクラスであるため
バイナリファイルとして書き出してもロードする時にうまくいかないということは分かったのですが、

RPGなどでセーブすべき情報が膨大な場合、キャラクターなどのクラスのメンバに vector や string を
一切使わないで記述するのがツライのですが、何か定石のようなものがあるのでしょうか?
項目ごとに地道に書き出す、あるいは vector などを使う部分だけ分離して他のクラスにする、
といった方法が思いつくのですが、もっと良い方法があるのでしょうか?

Re: STLコンテナとセーブ

Posted: 2011年10月26日(水) 23:36
by うしお
こういったものを利用してみる、というのは選択肢の一つとしていかがでしょうか?
boost::serialization
http://www.kmonos.net/alang/boost/class ... ation.html

Re: STLコンテナとセーブ

Posted: 2011年10月26日(水) 23:45
by softya(ソフト屋)
内部情報を吐き出すとバランス調整中のバージョンアップや配布後のバグ対処の時に困ると思うので、出来るだけセーブデータは抽象的な情報に変換した方が良いと思います。
テーブルはユニークな番号化する。アイテム名は出さずにこれもユニークな番号化する。など工夫されたほうが良いと思います。

Re: STLコンテナとセーブ

Posted: 2011年10月27日(木) 00:54
by 質問者
>> うしお 様
  こういうのもあるんですね。これを機に boost を少し勉強してみようと思います。

>> softya(ソフト屋) 様
  言われてみれば確かにちょっとでも仕様が変わったらセーブデータが使えなくなりそうですね。
 バイナリだと一見楽ですが、そういう問題があるのは盲点でした。

 お二方とも、貴重な意見をどうもありがとうございました!