チュートリアル

２回目のプレイで分岐

１度ゲームをクリアした後、２回目のプレイで１回目にはなかった新たな展開が出現する場合があります。こういったことを実現するには、ステータス変数を使います。
通常の変数はプレイ単位での扱いになりますが、ステータス変数は全体的な扱いになります。
【プレイ単位の扱いとは】
例えば、アイテムを持っていない時、持っている時、それぞれの状態でセーブしたとします。

アイテムを持っていない | ──セーブ─→ | プレイデータ１
アイテムを持っている | ──セーブ─→ | プレイデータ２

そして後でロードした時、当然セーブした時の状態が復元します。

プレイデータ１ | ──ロード─→ | アイテムを持っていない
プレイデータ２ | ──ロード─→ | アイテムを持っている

これがプレイ単位の扱いです。つまり、それぞれの状態は独立していて、お互いに影響しないということです。
【全体的な扱いとは】
これに対して、ステータス変数は全体でひとつの存在です。例えば、BGMの音量を記憶することを考えてみてください。

音量最大 | ──セーブ─→ | プレイデータ１
音量最小 | ──セーブ─→ | プレイデータ２

プレイ単位で音量を記憶してしまうと、ロードするプレイデータによって音量が変わってしまいます。

プレイデータ１ | ──ロード─→ | 音量最大
プレイデータ２ | ──ロード─→ | 音量最小

本来、音量は最後に設定した値が維持されるべきで、ロードによって変化しては困ります。このような時にステータス変数を使います。ステータス変数はプレイ単位に関係なく、最後に設定した値が記憶されます。
【２回目のプレイで分岐】
①「ステータス_ゲームクリア」という名前のステータス変数を作っておきます。初期値はFALSEです。
②「ゲームクリア」という名前の通常変数も作っておきます。
③ゲーム本編が開始した時に、「ゲームクリア」変数に「ステータス_ゲームクリア」変数の内容を代入します。
④分岐ポイントまで来たら、「ゲームクリア」変数を見て、TRUEなら新たな展開に進み、FALSEなら⑤に進みます。
⑤ゲームをクリアした時に「ステータス_ゲームクリア」変数にTRUEを入れます。
ステータス変数を直接使わず、開始時に通常変数にコピーしているところがポイントです。ステータス変数を直接見るようにしてしまうと、次のような問題が起きます。

①分岐直前 |  |
↓ |  |
②分岐ポイント | → | ④新たな展開
↓ |  |
③ゲームクリア |  |
↓ |  |
ステータス変数=TRUE |  |

ゲームクリア前に①でセーブしたとします。その後、ゲームをクリアし、ステータス変数がTRUEにセットされます。それから、最初にセーブした①のデータをロードすると、この時は既にステータス変数がTRUEなので、②の分岐ポイントで④に進むことになってしまいます。④は、クリア後にもう一度最初からプレイした場合に進むべきで、古いデータのロードによって進むべきではありません。これを防ぐために上記のような手法を取っているわけです。

←戻る |