FC2ブログ

Appendix

広告

ゲーム

Entries

プラグインの更新とセーブデータについて

下記のプラグインを更新しました。

ミニマップ標示 マッピング

ご報告いただいた個所を修正しました。
半透明色の合成方法に不備があったので変更です。

不透明なマップだと特に目立つようです。
半透明マップだとあまりわからないような違いです。



ここからはスクリプトに関する日記です。

私が現在作っているゲームはいろいろとこだわった部分があるのですが、
その一つにセーブデータの容量があります。

アツマールだとブロック単位になってますが、あれはおそらく5KB毎に1ブロックではないかと思います。
(大雑把な計測しかしてないです)
たいていのツクールMVのゲームが1ファイル20~30KBなので、だいたい5~6ブロックとなります。


で、今作っているゲームはいろいろと頑張って
数KBまで軽量化することに成功しました!
アツマールだと1~2ブロックで済みます。
これでセーブデータをたくさん作っても大丈夫!


今日はそれをどうやったのかという日記です。

一応先に書いておきますが、プラグイン素材としての配布はほぼ無理です。
軽量化というのは、自分のゲームに必要ないデータを削って実現したにすぎません。
なので軽量化の方法はゲームによって変わります。
細かな仕様を理解してないと削れないデータもあります。
なので、今回の日記を見て、自分でデータの軽量化を行ってもらうしかありません。

というわけで、ここからはセーブデータに含まれる内容とそれを削ったらどうなるかを書いていきます。


● $gameSystem
名前の通り、全体的なシステムに関するデータを扱うクラスです。
これ以降のクラスがそれぞれに特化したものを扱っているとしたら、これはそれ以外を扱っています。
なので、まず削れません。
それに削っても大した容量ではないです。


● $gameScreen
画面に関するクラスです。
色調変更・画面のシェイク・天候・ピクチャといったイベントコマンドの処理を行っています。
よってこれらをセーブデータに含める必要がなければ削れます
とはいっても大した容量ではないです。


● $gameTimer
タイマーを扱うクラスです。
現在のタイマーの時間を保存する必要がなければ削れます
というか、タイマー使ったゲームすらほとんど見ないですけどね。
これも大した容量ではないです。


● $gameSwitches / $gameVariables
スイッチと変数を扱ったクラスです。
当然ながら、まず削れません
中には「変数しか使わないからスイッチはいらない」という方がいるかもしれないって程度です。
これらはゲーム後半になるほど容量が増えていきます。
結局、スイッチ使ってなくてもその分変数使ったら似たようなもんです。


● $gameSelfSwitches
セルフスイッチを扱うクラスです。
使わない人は削れます
私も削ろうかと思ったのですが、ふと1・2か所どこかで使ったなあと気づき、
でもどこで使ったのか正確には思い出せなかったので仕方なく残すこととなりました。
これらはゲーム後半になるほど容量が増えていきます。
ついでに言うと、普通のスイッチよりちょっと容量多いかもしれません。(誤差だと思うけど)


● $gameActors
アクターを扱うクラスです。
まず削れません
が、私はちょっと変わった方法で軽量化しています。
メインキャラ以外は一度くらいしかメンバーに加わらないので、
パーティから離脱した時点でそのキャラのデータを削除しています
レベルアップもないので、再度加入するときに初期化されても問題ありません。
アクターはそこそこ容量食うので少ないに越したことはありません。

それ以外にもGame_ActionResultクラスをセーブデータに含まないということもやっています。
これはスキルなどを使った際にどんな効果があったかを入れるクラスです。
これをセーブする直前に削除し、セーブが終わったら再度作成とやっています。
とはいってもこれはあまり大きな効果ありませんでしたけど・・・


● $gameParty
パーティに関するクラスです。
現在の編成、所持金、所持アイテムなど、まず削れないデータが含まれています。


● $gameMap
マップに関するデータを扱っているクラスです。
現在のマップID・イベント・乗り物・遠景等、マップに関することほとんど入ってます。
全てを削るのは難しいですが、一部分なら削っていくことができます

当然ながら、これがセーブデータの大部分を占めています。
そして私のゲームではこれを丸ごと削ってます。
いろいろと工夫して、現在のマップの情報を必要としないゲームにしました。
これはさすがに仕様を理解していないとできません。

で、簡単に削れるものと言えば、乗り物のデータです。
乗り物がないゲームであれば当然削れます。
が、これはGame_Mapクラスを変更するしかありません。

ちなみにこのクラスの中で容量の大部分を占めているのがイベントです。
マップに配置されているイベントにはそれぞれ、現在の位置・向き・移動速度・頻度・パターン・グラフィック名・歩行アニメ・足踏みアニメ・向き固定・すり抜け・移動ルート・現在表示されているページ等々、多くのデータが含まれています。
これがイベントの数だけ存在するわけですから、
現在のマップに配置されているイベントの数が多いほど、
セーブデータの容量が増す
わけです。


● $gamePlayer
最後にプレイヤーの情報を扱うクラスです。
イベントと似たクラスなので、プレイヤーの現在の位置・向きといった様々な情報 +
現在乗ってる乗り物・場所移動・フォロワーといった情報が含まれています。

この中で重いと言ったらフォロワー(後ろについてくる人たち)かと思います。
プレイヤーと合わせて4人分のイベントが存在していると思えば、なんとなくわかるかと思います。

ちなみにこのフォロワーは[隊列歩行]をOFFにしても、透明なキャラが付いてきているので何も変わりません。



というわけでセーブデータの軽量化に関する日記でした。
正直、簡単に削れるものは効果が薄いです。
そうなってくるともういっそのこと「セーブデータの容量なんてどうでもいいや!」と
割り切るべきかもしれませんね。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://woodpenguin.blog.fc2.com/tb.php/324-3848dd1f

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

木星ペンギン

Author:木星ペンギン
ほぼツクールのことばかり書いてます。
名前は↑から取りました。
木製ですが木星です。
トカゲは関係ありません。

ゲーム

  • 箱庭の勇者たち(体験版)
  • アクイ ト アイ
  • ぼくらの大革命!
  • 勇者がやらねば俺がやる!
  • 3Turn Battle!
  • 3TurnBattle!2nd 体験版

メールフォーム

wood_penguin@yahoo.co.jp

名前:
メール:
件名:
本文: