こんにちは。
あるいはこんばんは。
ゲームブック総合サイトの管理者です。
ノベルゲーム投稿サイト・高機能作成ツールとして提供されているWebサービス、Props Gamesについての操作方法第三弾です。
こちらのエントリも参考になると思いますのでぜひ御覧ください。
今回は、前回で触れた変数をもう少し突っ込んで説明したいと思います。
あとは条件判断である「もしも」
if文とも言いかえられていますが、これはExcelでもお馴染みですね。
あとはゲームでは重要な乱数を発生させることが出来るのと、場面移動という選択肢と組み合わせて物語を分岐させることが出来る機能を紹介します。
変数はExcelのセルみたいなモン
前回ではさらっと説明しましたが、変数というものはExcelのセルみたいなモンです。
関数が使えないセルです。(恐怖のVLOOKUPとかそう言うやつですよ。使えなくてよかった💦)
セルには数値、文字列などを代入し、=(イコール)を伴う計算式も入れて算出できますね。
そう言うもんです。
Props Gamesには3種類の型が用意されています。
- 数値
- 文字列
- フラグ(真偽値)
以上の各型にそれぞれ3つのシステム変数が用意されています。
つまり、上記のExcelシートみたいなモンがあると考えてください。
正式名称は
- 「$システム変数数値1~3」
- 「$システム変数文字列1~3」
- 「$システム変数フラグ1~3」
です。
システム変数に対して、場面のみで扱える場面変数と呼ばれるものも扱うことができ、それも数値、文字列、フラグの3種類の型を設定できます。
まずはシステム変数からお話します。
数値
前回扱ったのがこの型の変数。
整数であればプラス・マイナスどちらでも取り扱えます。
上限も特に無いみたいです。
加減乗除の他、剰余(あまり)を計算することが出来ます。
10 % 3 = 1
です。
前回触れた<変数変更>、<変数表示>、<計算>、<ループ>タグなどを使って、上記のサンプルコードを用意しました。
なお、スペースはすべて半角です。
各タグに左端からのズレ(タブ、字下げ)が有るのは見やすくするためだけなので、入れなくてもOK。
上記は見やすくするために<!ーー ーー>で注釈を入れていますが、実際動かすときは入力しないでください。文字がずれて表示されます。
また<改行 />コードを入れないと文字が連なってしまうので、今回入れました。
一応、コピペ用のコードも下記に記しておきます。
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="12" 速度="10">
<クリック />
<変数変更 変数="$システム変数数値1" 値="1" />
<ループ 条件="$システム変数数値1<=10" タイプ="数値">
<計算 結果="$システム変数数値2" 式="$システム変数数値1%3" />
<変数表示 変数="$システム変数数値1" />
÷3の余りは
<変数表示 変数="$システム変数数値2" />
<改行 />
<計算 結果="$システム変数数値1" 式="$システム変数数値1+1" />
</ループ>
<クリック />
</小説>
実行すると上記のような結果が得られます。
文字列
数値の代わりに、文字列を格納できる変数です。
サンプルコードを示します。
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10">
<変数変更 変数="$システム変数文字列1" 値="グー" />
<変数変更 変数="$システム変数文字列2" 値="チョキ" />
<変数変更 変数="$システム変数文字列3" 値="パー" />
<変数表示 変数="$システム変数文字列1" /><改行 />
<変数表示 変数="$システム変数文字列2" /><改行 />
<変数表示 変数="$システム変数文字列3" /><改行 />
<連結 代入先="$システム変数文字列1" 代入元="$システム変数文字列1 $システム変数文字列2 $システム変数文字列3" />
<変数表示 変数="$システム変数文字列1" /><改行 />
<連結 代入先="$システム変数文字列1" 代入元="$システム変数文字列1 $システム変数文字列1" />
<変数表示 変数="$システム変数文字列1" /><改行 />
<クリック />
</小説>
ひねりのないコードで恐縮ですが、実行すると下記の通りとなります。
変数3つにそれぞれグー、チョキ、パーを代入し、表示させたあと、変数1と変数2と変数3を全てつなぎ合わせた文字列、すなわち「グーチョキパー」を変数1に改めて代入しています。
その変数1を表示させると「グーチョキパー」となり、さらに変数1同志を連結させてまた変数1にその結果を代入して表示させると「グーチョキパーグーチョキパー」となるのです。
フラグ:真偽値:boolean
フラグです。
死亡フラグという表現もよく使われますね。
ゲームでは何かを開けるための鍵を拾ったかどうか。
あるミッションをクリアしたかどうか。
Yes、Noなど2択で判断する場合に使われます。
実際は真偽値、英語ではbooleanと呼ばれ、TRUE or FALSEのどちらかの値が必ず入ります。
実はExcelでもフラグは取り扱えるので、ちょっとExcelをみてみましょう。
上記はA1のセルに数字の1を入力しています。
2行目、3行目のセルは全てA1を参照しています。
2行目と3行目のセルはそれぞれ同じ意味を表しています。
A1が1より小さいか、大きいか、同じなのか。
それに対して正しければTRUE、違っていればFALSEを表示します。
実際に計算させると下記の結果が得られます。
実際にProps Games上で作品で運用する場合は、最初に述べたようにイベントクリアしたかどうか、アイテムを持っているかどうかの判断に使うことが多いと思われます。
後述する<もしも>タグ、(if文)とともに使って物語を分岐させたり、何らかの処理をする仕組みを施すことが出来ます。
場面変数
上記で述べた変数は場面を超えても共通で使える変数です。
例えば場面Aで$システム変数文字列1に”生殺与奪の権を他人に握らせるな!”と値を入れておけば、場面移動して場面Bでも$システム変数文字列1を表示すれば”生殺与奪の権を他人に握らせるな!”と画面に反映されます。
それとは異なり、場面変数はその場面内のみで扱える変数です。
さらには変数名には作者自身がオリジナルの名称をつけることが出来、いくつでも作成出来ます。
それ以外は今まで述べてきたシステム変数と同じです。
場面編集画面で「場面変数」の欄があります。
上記の例では変数名を「紅蓮華」にしています。
新規追加ボタンを押します。
上記のようにフラグ、数値、文字列のいずれかが選べ、初期値も設定できます。
変更ボタンで変数生成完了です。
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10" >
<変数表示 変数="紅蓮華" />
<クリック />
</小説>
上記のコードは<変数表示>タグで変数「紅蓮華」を表示する命令です。
実行すれば初期値が表示されます。
仮に初期値を”悲しみよありがとう”にしていたとしたら、下記のコードではクリックすると場面変数がきちんと”何度でも立ち上がれ”に変更されることを確認できます。
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10" >
<変数表示 変数="紅蓮華" />
<クリック />
</小説>
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10" >
<変数変更 変数="紅蓮華" 値="何度でも立ち上がれ" />
<変数表示 変数="紅蓮華" />
<クリック />
</小説>
ダイス
ダイスは乱数と呼ばれる、任意のランダムな数値を発生させる命令です。
目の種類の数を4とか6とか12など、いろいろ設定できるのでn面体のサイコロと考えると分かりやすいでしょう。
文字通りダイスですが、ホントにサイコロの様なグラフィックが描かれるわけではありません。
あくまで数値です。
せっかくですから場面変数「サイコロ6面」を作りましょう。
もちろん名前は別のものでも一向に構いません。
ポイントは数値にして初期値を1にすること。
出目が0のサイコロって無いですから要注意。
場面編集のPropsエディタで「ダイス」ボタンを押します。
<ダイス 代入先="サイコロ6面" 目="1,2,3,4,5,6" 速度="30" 遅延="3" 順番="ランダム"/>
上記のコードが生成されます。
出目を表示させるには<小説>タグか<会話>タグで囲います。
<クリック />タグもあったほうが扱いやすいですね。
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10" >
<ダイス 代入先="サイコロ6面" 目="1,2,3,4,5,6" 速度="30" 遅延="3" 順番="ランダム"/>
<クリック />
</小説>
上記のコードを実行すると下記の通り。
もしも/if
では次に出目が4以上なら君の勝ち、3以下なら君の負け、と表示させてみましょう。
Propsエディタの「もしも/if」ボタンを押します。
「<もしくは />を生成する個数」を1に設定し、「数値」ボタンを押します。
「変数と数値を比較する」を選択、記号は大なりイコールを選び、数字4を入力した後、「生成」ボタンを押します。
「もしくは」をどうするか聞いてくるので、「数値」ボタンを押します。
出目のもう一つの条件である3以下を表す、小なりイコールを選び、数値を3にして「生成」
<もしも 条件="サイコロ6面>=4" タイプ="数値" >
</もしも>
<もしくは 条件="サイコロ6面<=3" タイプ="数値" >
</もしくは>
それにより生成されるコードは上記のとおりです。
<もしも 条件="サイコロ6面>=4" タイプ="数値" >
君の勝ち
<クリック />
</もしも>
<もしくは 条件="サイコロ6面<=3" タイプ="数値" >
君の負け
</もしくは>
4以上なら勝ちなので、上記の位置に「君の勝ち」、3以下なら「君の負け」とコードを入力します。
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10" >
<ダイス 代入先="サイコロ6面" 目="1,2,3,4,5,6" 速度="30" 遅延="3" 順番="ランダム"/>
<もしも 条件="サイコロ6面>=4" タイプ="数値" >
君の勝ち
<クリック />
</もしも>
<もしくは 条件="サイコロ6面<=3" タイプ="数値" >
君の負け
</もしくは>
<クリック />
</小説>
先程のダイスのコードと合わせて上記のコードを実行してみてください。
1,2,3の出目なら「君の負け」、4,5,6の出目なら「君の勝ち」と表示されることを確認できます。
場面と移動
ゲームブックで言うところのパラグラフみたいなモンが場面です。
イエス・ノーチャートで言うと、質問にあたるもの。
選択肢を選んだら別の場面に移動するという挙動について触れさせて頂きます。
いつも筆者がゲームブックの例を提示する時に使いまわしているサンプルをご紹介します。
サンプル
場面1
君は入口に立っている。真っ暗な洞窟だ。ランタンに火を灯そう。どうやら北に進めるようだ。
北に進むなら→場面2
場面2
君は十字路に立っている。東からは何やら物音が聞こえる。誰か居るのかもしれない。 さてどうするか?
東へ進む→場面4
西へ進む→場面3
南へ進む→場面1
北へ進む→場面5
場面3
君はL字型の交差点に居る。静寂が君を包む。早くここから出たいものだ。さあ、動こう。
東へ進む→場面2
北へ進む→場面7
場面4
君が歩を進めると、何やら只ならぬ気配を感じる。「ウオォォォォ!」獣が吠える! うわっ!キマイラだ! 君は慌てて剣に手をかけるもヤツの一撃を交わすのが遅れる……。 残念だ。君は死んでしまった。
最初からやり直すこと。→場面1
場面5
君はL字型の交差点に居る。足元が湿気を帯びており、石畳の上を歩くのは滑りそうだ。気をつけて進め。
西へ進む→場面6
南へ進む→場面2
場面6
君はL字型の交差点に居る。バサバサッ!うわっ。突然の音と若干の風圧に君は驚く。何だ蝙蝠か。 彼らは君の来訪に警戒して立ち去っただけのようだ。さあ、気を取り直して歩こう。
東へ進む→場面5
南へ進む→場面7
場面7
君はT字路に立っている。いつまでこの散策を続ければよいのだろう……。打ちひしがれる君は足元に清流が流れていることに気づく。 君はしゃがみ込み、手ですくって一口飲む。「ほう」と短い溜息が出た。歩ける。行こう。
西へ進む→場面8
南へ進む→場面3
北へ進む→場面6
場面8
君はL字型の通路にやってきた。北の方は何か明るく光っている。怪しい魔法使いでもいなければいいのだが。
東へ進む→場面7
北へ進む→場面9
場面9
君は慎重に歩を進める。するとどうだ。目の前が眩しい。暫く君は目を閉じる。そう。幻ではない。待ち望んでいた外界だ! おめでとう。君は無事にこのダンジョンを制覇することが出来たのだ。ハッピーエンド。
ダンジョン散策ゲームです。
マップはこれです。
注意事項
ダンジョン散策ゲームは制作側は非常に楽にゲーム性を帯びさせることができる反面、プレイする側にすればストレスが溜まりがちなジャンルです。
面白みを持たせるならかなりの文章力とギミックを施す必要があり、典型的な名作は「ドルアーガの塔三部作」です。
あんまり言うとネタバレになっちゃうので、基本的な部分を書きますと。
ドルアーガの塔三部作の凄いのは読者の読解力があれば方眼紙にきれいにマッピング出来ること、縦横無尽にタワーを行き来できること、Aと言う方向とBと言う方向、別の方向から移動すると全く異なる展開が待ち受けている描写があるなど、読者を夢中にさせる施策がふんだんに盛り込まれているところです。
上記の筆者のサンプルも、無味乾燥などちらの方向に行けるかという描写にとどまらず、主人公が挫折しかけそうになったり、滑って転びそうになったり、コウモリの羽ばたきにびっくりするなど、それなりに状況描写や心理描写も加筆して、少しでもオモロくしようとはしてます。
ダンジョン散策ゲームは読者にしてみればつまらなく、苦痛になりがちなので「取扱い注意」です。
では実際に上記のサンプルゲームブックをProps Gamesでやる場合について書いていきます。
場面1
まっさらの状態でゲームを作成する前提で進めていきます。
ゲームを始めると、一番最初に表示される場面は「ゲームスタート」です。
もちろんこのままでも良いのですが、名前を変えることも出来るので、せっかくですから「場面1」に変えてみましょう。「ゲームスタート」リンクをクリック。
場面編集画面のタイトルの項目を好きな名称に変更可能。
ここでは、「場面1」に変更します。
ちなみに数字だけの場面名称は使えませんのでご注意を。
次にイベント欄の場面開始時のコードを下記の様にします。
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10">
君は入口に立っている。真っ暗な洞窟だ。ランタンに火を灯そう。どうやら北に進めるようだ。
<クリック />
</小説>
<選択>
<会話 名前="" 速度="0">
</会話>
<選択肢 メッセージ="北に進むなら→場面2">
<場面移動 移動先="場面2" アニメ="瞬間移動" />
</選択肢>
</選択>
ここで、「場面移動」と言うタグが出てきました。
ボタンはここにあります。
押すと上記のようなダイアログボックスが表示されます。
「場面2」を選びたいところですが、まだ作っていないので当然選択不可です。
ここでは「場面1」を選んでで「生成」ボタンを押し、Propsエディタを直接「場面2」に修正する方法を取りました。
もちろん「場面2」を作ってから、場面1の制作画面で一度リロードして「場面2」を選択可能にしてから選ぶようにしてもいいでしょう。
さらにコードにちょっと工夫を施してみます。
<変数変更 変数="$システム変数数値1" 値="0" />
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="10">
君は入口に立っている。真っ暗な洞窟だ。ランタンに火を灯そう。どうやら北に進めるようだ。
<改行 />
進んだ歩数:
<変数表示 変数="$システム変数数値1" />
<クリック />
</小説>
<選択>
<会話 名前="" 速度="0">
</会話>
<選択肢 メッセージ="北に進むなら→場面2">
<場面移動 移動先="場面2" アニメ="瞬間移動" />
</選択肢>
</選択>
追加したのは「$システム変数数値1」です。
場面1では0ですが、歩くごとに場面ごとで1を加え、表示させる仕組みを施します。
すると、出口に到達するまで何歩歩いたかを競うゲームが作れそうです。
逆に数値を100にしておいて、歩くごとに1つずつ減るので、100歩以内に脱出しないとゲームオーバーと行ったようなギミックを仕掛けることも可能です。
この辺はアイディア次第。
まとめ
長くなってきたので続きは次のエントリに書きたいと思います。
もっとも、今まで触れてきた内容で制作してみようとチャレンジして頂いてもいいでしょう。
答え合わせのつもりで次回エントリにご期待ください。
次の記事
コメント