#author("2022-12-26T07:27:38+00:00","default:admin","admin") *変数とは [#f711fcd9] 変数とはデータを入れられる箱のようなものです。 数字やテキスト、スイッチなどを入れおいて、ゲーム内の各所で使うことができます。 ※変数にデータを入れることを「代入」といいます。 例> 「お金」という変数に、数値「1000」を代入すると、ゲーム内で「お金」という変数は常に数値「1000」の意味を持ちます。 変数自体は箱ですので、中身の数値を加算したり減算したりすることができます。 この変数「お金」にさらに数値「500」を加算すれば、「お金」は数値「1500」の意味を持ちます。 一方変数「お金」に数値「500」を代入すると、変数の中身が書き換えられて、「お金」は数値「500」の意味を持つようになります。 変数を活用することで、ゲーム内でさまざまな表現が可能となります。 ※すべての変数の初期値は0になっています。 #Contents **変数の種類 [#d274bd21] Bakinには下記の種類の変数を用意しています。 以下にて、数値/文字列/ローカル数値/配列/セーブ間共有と、イベントスイッチについて説明します --[変数に入れられる値について] 「数値」「文字列」と名称がついていますが、すべての変数に数値でも文字列でも代入することは可能です。 ただし、適切に使い分けをしていただいたほうがわかりやすくゲーム作りを進められます。 ***数値 [#odaebc83] 基本的に数値を入れておくために使う最も一般的な変数です。 この変数は1ゲーム内のどこからでも参照することができます。 ''<使用例>'' ・とある噂について村人たちに聞いて回ると、一定回数以上で村長に呼び出され、それについて教えてもらえるイベント 村人に聞いた回数を数値変数に記録していくことで実現します。 ・物を調べるたびに減っていき、0になるとゲームオーバーになる、脱出ゲームの残り行動回数カウント 物を調べた回数を数値変数に記録していくとで実現します。 ・時間制限のあるスコアアタック / 一定スコア獲得までのタイムアタック 開始時の現在時刻やプレイ時間を数値変数に保持しておき、終了時に差分を計算します。 ※ローカル数値変数でも同様のイベントは作れますが、この数値変数を使っておくと変数で管理している値を他のイベントからも参照できるようになります。 ***文字列 [#eb9721d8] 基本的にテキストを入れておくために使う変数です。 この変数は1ゲーム内のどこからでも参照することができます。 ''<使用例>'' ・パスワードがないと開かない扉や宝箱 正解となるパスワード、入力されるパスワードをそれぞれ文字列変数にいれて比較することで実現します。 ・家で待機させるペットの名前 を呼ぶ会話文 文字入力をしてつけたペットの名前を文字列変数で記録して、会話のテキストとして表示します。 ・地形が畑だった場合にのみ使うことができる種や苗 コマンドスクリプト「地形の情報を取得」で地形のリソース名を文字列変数に記録し、「畑」が代入されている文字列変数を比較することで実現します。 種や苗アイテムから共通イベントを呼び出す機能を使います。 ***ローカル数値 [#n0d22cd5] この変数は数値と同じ働きをしますが、「この変数を設定したイベントの中だけ」から参照することができます。 1つのイベント内でしか使う必要のない変数をローカル変数にしておくことで、変数のリストが膨れ上がることを防ぐことができます。 ''<使用例>'' ・開けた宝箱のフタを開けたままにする ・会話や贈り物で友好度が変化し、ある程度上がると便利なアイテムや重要な情報をくれる人 ・一定以上のレベルや攻撃力があれば壊すことのできる岩 ・曜日により品揃えが変わる商人 ・乱数を使ったおみくじや賭け事 ※これらは数値変数でも実現可能ですが、ローカル数値変数で処理が可能です。 ***配列変数 [#ka311613] 複数の変数をまとめて管理できる変数です。 配列変数を使うことで複数の変数をまとめて一つの変数内で管理することができます。 この変数は1ゲーム内のどこからでも参照することができます。 配列とは大きな箱の中に小さい箱が並んでいると考えてください。 大きな箱の名前が配列変数の名前です。 配列変数の中にある小さい箱の中身を参照する場合は、「ポインタ」という値で、「何番目の箱」を参照するかを指定します。 例:「武器の価格」という配列変数の中の「ポインタ=1」には「剣の価格」、「ポインタ=2」には「弓の価格」が入っている ''<使用例>'' ・お使いを頼まれるクエストに使う買い物リスト 配列変数のポインタに買う必要のあるアイテムを記録しておきます。 ・経営ゲームの商品リスト、およびその残り数 ポインタ0に商品Aの名前、ポインタ1に商品Aの残数、ポインタ2に商品Bの名前…と記録していきます。 ・命名表 配列変数に名前の候補を入れておき、その中からポインタをランダムに(あるいは任意に)選ぶことで、名前を選んで命名します。 配列変数を2つ使えば、二つ名のように2つ以上のフレーズを組み合わせることもできます。 文字列を配列変数に入れるためには、コマンドスクリプト「文字列変数への代入」を使用します。 ただし配列変数の内容をメッセージで表示しようとする場合は、いったん文字列変数に代入し、その文字列変数を表示する必要があります。 ***セーブ間共有変数 [#h8ca6c8a] この変数はセーブをまたいで、ゲーム内のどこからでも参照することができるもっとも広い影響力を持つ変数です。 ---テストプレイでこの変数の中身を書き換えた場合、テストプレイを終了しても情報が保持されます。 ---テストプレイ>オプション>デバッグウィンドウを使って、必要に応じて変数の内容を書き換えてください。 ''<使用例>'' ・ゲームクリア前のプレイと、ゲームクリア後のプレイで発生するイベントの内容を変える ・マルチエンディングゲームで、ユーザーがすでに見たエンディングだけを記録し、表示する(ゲームギャラリー的な使い方) ***イベントスイッチ [#lc038bfb] コマンドスクリプトで操作できるイベントスイッチも変数の一種です。 ---どのタイプの変数でもイベントスイッチとして扱うことが可能です。 スイッチを参照できる範囲は、スイッチとして使用した変数の種類に準じます。 ---変数に入っている値が0ならばオフ、1(0以外、文字列は無効)ならばオンとして扱います。 ---イベントスイッチをオフにすると、変数の中身は0に書き換えられます。 ''<使用例>'' ・物語のキーとなるキャストと会話をしたかどうかで、他のNPCたちの反応を変える キーとなるキャストと会話したらイベントスイッチをオンにします。イベントスイッチがオンの時のNPCたちの反応をイベントとして用意します。