RPGエディタでのフラグ管理
投稿者:
mosmoss
投稿日:2017/07/19 03:54
ちょっと長い前置き
RPGエディタでまとまった物語を作る時、
分岐やイベントの多い作品を作る時、
フラグの管理が課題の一つになってくる
Rmakeの講座を読めば、フラグは、
setFlag()を使って作るのが一番簡単そうだとわかる
そして慣れてくれば、setVariable()を使えば、
さらにこまやかな条件づけができるとわかってくるのだが…
問題は、1つのゲームで使うフラグの多さだと思う
例えば、自分の経験では、
マップ10個、1時間半ほどのアドベンチャーを作るのに、
300近いsetFlag()またはsetVariable()を設定しなくてはならなかった
その数を扱うには、管理メモがあると心強い
でもどうせフラグ管理のメモを作るなら、
変数名を文字列で設定したり、setFlag()とsetVariable()を混在させるのは
あまり意味がないと考えた
そこで全てのフラグをsetVariable()の配列で作り、
フラグ名は数値で管理する、という方法を考えた
実際のスクリプトと使い方
開始スクリプトに書くユーザー定義関数
#フラグセットと取り出しの関数
#通常変数Flagの配列の中に、インデックスを指定して情報を入れたり取得したりする
setVariable("Flag",createArray())
def sflg(a,b,c)
getVariable("Flag")[a]=b
if c #aに配列が作ってあること
getVariable("Flag")[a][c]=b
end
end
def gflg(a,b)
if b #aに配列が作ってあること
c=getVariable("Flag")[a][b]
else
c=getVariable("Flag")[a]
end
return c
end
使い方は、例えば、
単純なフラグのように、真偽や勝敗を判定する場合は、0か1を入れておく
イベントの進行状況を確認する場合は、0,1,2,3,4など段階の数値を入れておく
何を選択したかを保存する場合は、選択肢番号を入れる
誰かのあだ名など、文字列もそのまま保存できる
そして、何番のインデックスに、何の数値が入ってると、どんな意味なのかを、
メモに書いておく(このメモはバックアップ推奨)
#####メモの例######
インデックス番号、入っている情報、入っている形(数値)
フラグ
~~
1避難/戦う1/2
2戦闘結果 負け/勝ち 1/2
3マリエッタ 初めて話しかける/二回目以降話しかける 1/2
4クレア 初めて話しかける/二回目以降話しかける 1/2
5サルビア 初めて話しかける/二回目以降話しかける 1/2
6サルビアギャグへの反応 ?/! 1/2
7レジスタンスシナリオ進行 防衛戦前/夜/翌朝自/翌朝マ 0/1/2/3/4
####################
あるイベントエディタ内での実際の使用例
if gflg(7) > 1
if gflg(12) > 0
hanasu("セイコ","そういえば…")
else
if gflg(9) > 0
hanasu("サルビア","セイコ、おはよう","昨晩は楽しかった")
else
hanasu("サルビア","セイコ、おはよう","今日はよろしくな!")
end
sflg(12,1)
end
elsif gflg(5) > 0
sflg(5,2)
hanasu("セイコ","魔法ってどうやれば使えるんだ?")
else
sflg(5,1)
hanasu("???","レジス箪笥(たんす)…")
hanasu("???","なんちゃって")
case speakWithSelect(2,"?","!", "セイコ\n「・・・・・・」")
when 0
sflg(6,1)
hanasu("セイコ","(ちょっと何言ってるかわからない…)")
when 1
sflg(6,2)
hanasu("セイコ","最高に面白い!")
end
hanasu("???","私はサルビア・サブレヴァニーユ","見ての通り魔女さ")
if gflg(6) >1
hanasu("サルビア","それにいい子みたいだし")
else
hanasu("サルビア","まだまだお子ちゃまみたいだけど")
end
end
#上記エディタでのフラグの説明
#場面1か2か
#場面1で、初めて話しかける時、二度目以降話しかける時
#場面1で、初めて話しかける時に何を選択したか
#場面2で、初めて話しかける時、二度目以降話しかける時
#昨夜のイベントを経験したか、していないか
#以上の情報を取り出したり入れたりしています
上のような書き方で作ってみて、
作業時間が減り、エディタが見やすくなり、フラグが一覧化されて把握しやすくなり
面倒という理由でフラグ作成やフラグ回収を避けることが減った
次作る時も、このやり方でやると思う
コメントする
コメントするには、ログインする必要があります。
自分なりに使いやすい関数に纏めておくと
利便性が上がるだけでなく、
後からコードのチェックをする際も
解析しやすくなって良いですね
そして、インデントが
整理されていない点が
気になってしまうクセ←
全くわからなかったのですが、
簸川さんをはじめとする方々の初心者講座や
オリジナル関数を読むうちに、
自然と何が機能的できれいかをわかるようになって、
前よりできることが多くなってとても嬉しいです。
とはいえ、インデントなどの感覚はまだのようです
インデントっていうんですね…
後で直しておきます!('ω'っ)3