最近、Rubyでゲームとか作ってみましたが気持ち的にはGameクラスをまるごとにセーブ/ロードができたら楽だなと思ったのでRubyでいい方法はありませんか?なかったら普通の方法はありますか?
ruby
1class Player 2 #data... 3end 4 5class Game 6 def initialize 7 #classのデータ 8 p = Player.new 9 #... 10 end 11 12 def save_data(filename) ##ファイルにデータをセーブする 13 #... 14 end 15 16 def load_data(filename) #ファイルからデータをロードする 17 #... 18 end 19 20 def start 21 #... 22 end 23end 24 25$game = Game.new 26$game.load_data("./data_file") 27$game.start
Gameクラスの中には他のクラスもあるので難しいと感じます。YAMLとMarshalを試しましたがやり方がわかりませんでした、エラーがたくさん出ました。
ゲームのライブラリーはgosuを使っていました。Gosu::ImageがMarshalのエラーが出ました。YAMLはload_dataの時エラーが出ました(多分、正しいやり方がわからないので)。
できれば、クラスをまるごとにセーブ/ロードできる方法が知りたいです。
Rubyは一週間前ぐらい本気勉強したばかりなのでまだ初心者です。
ありがとうございました
OS: OpenSUSE Tumbleweed
Ruby version: 3.0.3
Gem version: 3.3.4
「本気勉強」で何を伝えたいのか分かりませんが、ライブラリ使われてるならライブラリで推奨されるやり方があるのでは?
通常、「オブジェクト丸ごと」という保存の仕方はしません。必要なデータを必要な分だけ(大抵はデータベースに)保存します。
Rubyに限らずある程度プログラミングをやってきた人であれば「クラスをまるごとセーブ」という必要性が不明だと思います。なぜそれができると楽だと思ったのか、もう少し要件を具体的に記載してください。
あなたの回答
tips
プレビュー