のじ かのえ
004:フィールドマップとアクションとバトル仕様

ちょっとだけサイト内のページに加筆しました。
「どう考えても既存の種族に当てはまらない人の種族」についてちょっとだけ書き足したので、暇で暇で死にそうなときにでも覗いてみてください。
水面下で色々作り進めていたのですが、ブログという形になると、「ある程度まとまった記事にしなくては」という頭が働くらしく、どのタイミングで進捗を出せばいいのか迷ってしまってついつい更新が止まってしまいますね……
フィールドマップ
フィールドマップの仕様を練り直していました。
体験版では世界地図間の移動でしたが、オクトラのフィールドマップ移動が「旅をしている感」があって楽しかったな……と思って、そういう方向性で進めようとしていました。
が、コスパが悪い上に、移動距離が増える分、ものすごくテンポが悪いのが気になって。
特に最序盤は特定地方の行き来のみでやたら同じマップを歩き回らなくてはならないシナリオのため、いちいち移動がしんどいし、そこだけでプレイ時間がとられていたようなところもあり。
そのため、ちょっとだけ簡略化してサガスカ風のフィールド移動にしてみました。もともと「樹海」のシナリオはこの方式で行くつもりだったので、なんとなく考えていた構想のまま、既存で作ったあれやこれやの組み合わせであっさり形になりました。
まだ若干、並列処理の挙動が怪しいところがありますが……
あと、イベント部分は実は別マップに移動をかけて処理させているので、「マップ移動が発生するつど初期化されてしまうイベント」をどうするかも検討中です。主にエンカウントとかそういうやつですね。
サガスカのあの仕様に関しては「バトルだけでゲームとして成立するほど面白い」から成り立っていると思っているのと、個人的にはマップを歩き回って探索する要素こそRPGの醍醐味だとも思っているので、一部のダンジョンや町のマップ、内装なんかはちゃんと作ります。
サガスカのイベントシーンはほぼADVなので、キャラチップをあれこれ動かす寸劇的なイベントを作らなくていいのは、作者的にはかなり楽なんですが、これも味気なくなってしまいそうなのでバランスを見ながら従来の寸劇的なイベントも入れたいですね。
フィールド/パーソナルアクション
これは実装するだけ実装してみましたが、フィールドの仕様を変えたのでもしかしたら廃止するかもしれない要素です。一応「Harmonium」のキャラクターのみのコマンドで、その辺にいる人に話しかける以外にもアクションを行うことができたり、マップ上のギミックを解除することができる、というようなものを想定していました。
これもオクトラ的なやつですが、あれは各キャラごとフィールドで適用されるアクション(パッシブっぽい)と、対人に対して行えるアクションの2つを持っていたのに対し、こちらはパーソナル(対人)かフィールド(ギミック解除)のいずれかのみです。
全員に均等にアクションを割り振るのが難しかったのと、一部キャラにどう考えても無理があったが故の妥協ですが、内部処理がめちゃくちゃ複雑になってるのは同じなので、このコマンド自体廃止か、もうちょっと形を変えてもいいのかな、なんて思っています。
あと、キャラクターの加入が固定じゃないんですよね……このゲーム。
ストーリー進行上必要なアクションを持つキャラクターは、そのシナリオで加入するように作る感じにしていましたが、例えば「解錠」のアクションを持つキャラがいないから取得できない宝箱があって、またダンジョンに行かなきゃいけないとかってものすごくストレスになりそうで。
サブイベント作るうえで上手いこと遊べないかなと思って軽い気持ちで実装してみましたが、多分このゲームには向かない要素です。残念。
何かやりようが見つかれば実装するかもしれません。
暫定で考えていたのはこんな感じ。
===========================================
◆手当て/吸収(パーソナル)…………アルヴィン、シルヴィア
道をふさいでいるけが人をどかしたり、アイテムがもらえたりする。
ストーリー進行にも使用。
※選択肢によっては失敗
※必ず成功するが、シルヴィアにデバフステートがかかる
(解除前に計3回「吸収」するとシルヴィアは戦闘不能になる)
============================================
◆聞き込み/情報収集(パーソナル)…………プラノール、ホムラ
情報得られる。ストーリー進行の他、サブイベント等にも役立つ。
「その人物の情報(個人情報)」と「それ以外の情報(隠しアイテムの情報や
イベントに関する情報など)」が得られる。
※断られることがある
============================================
◆商談/交渉(パーソナル)…………アガタ、アハト
所持品をもらえる。
※断られることがある
お金やアイテムのやりとりあってもいいのかもしれない
============================================
◆決闘/こらしめる(パーソナル)…………アレックス、ルーファス、シキ
戦闘できる。ストーリー進行の他、サブイベント等にも役立つ。
※負けるとえらい目にあう上、シキは決闘権保持者ではないので
相手によっては戦えないという欠点がある。
============================================
◆破壊(フィールド)…………ソプラノ、ルーシェ
通行の邪魔をするものを壊せる。
樽とか壊せてもいいのかもしれない。また、締まっている扉に関しても
「解錠」でなく「破壊」でぶち破ることが一部可能。ただしポイントは下がる。
============================================
◆解錠(フィールド)……………トキノ、シャルロット
宝箱や締まっている扉の鍵を開けられる。
不法侵入も可能。
============================================
◆飛行/ぽちを呼ぶ(フィールド)………………ホークス、きさら
ホークスは飛行、きさらは「ぽち」を使役して届かないところの
アイテムを獲得したり、ギミックを解除したりできる。
※ぽちは調和で存在を失念されていたきさらの使役するペット(?)です。
============================================
現状80%以上の確率で廃止予定なので、没ネタということで……
ただ、マップ上のフィールドアクションに関しては探索を楽しむ要素として何か入れたい気持ちはあります。個人的にRPGに謎解きは求めていないので、めんどくさい謎解きは作らない方針なんですが、ダンジョンが単調になる感じが否めないのも確かで……
フィールドマップの仕様変更に伴って、ダンジョンや町のマップをどこまで探索可能にして、どこまでをイベントのみで済ませるかによっても左右しそうなのでそのあたりが決まってからもう一度検討しようと思います。
バトル仕様
前々回の記事で「スキルが見た目の4倍のデータベース」とかいうとんでもねえ話を書いたのですが、あれからわたしは考えました。
「ステートごとにさもスキルが進化したかのように見せる処理」を行えばいいのではないかと。
というわけで可能にしました。
動画内ではまだ設定できてないスキルがあるので、ヘルプ欄の表示がおかしいものがありますが……(あと本来アルヴィンは気功術使えないです……)
やっと動画になったので内部処理の解説をすると、ブーストの処理は「サイクルステート」スクリプトで処理しています。ただし、このスクリプトは本来アクターコマンドにしか対応していないため、スキルコマンド上も対応するようにゴリラしました。
あとはステートを切り替えるごとにリストをリフレッシュさせて情報を更新させるとか、細々したあれこれをしています。
ブーストレベルは「ステート」なので、ブーストレベルに合わせて物攻と属攻の数値が上がるステート設定にすることで、「同じスキルでありながらさも威力があがった」ように見せること自体は可能でした。
問題は「ブーストによって増加するステートターン」と「ブーストによって攻撃HIT数が増加するスキル」、「ヘルプ欄の表記」です。
まず、ブーストによって増加するステートターン数は「ステート/強化/弱体付与拡張」を利用することで解決しました。ブーストレベルステートのメモ欄に増加ターン数を入れてあげれば、ブースト数によってステートのターン持続が増減するようになります。
ヘルプ欄の表記はブーストするごとに効果が変わるため、当然説明文も更新する必要があったわけですが、いまこそ
$data_skills[n].description = ""
の出番でした。
サイクルステートスクリプト内でステート切り替え時にリスト更新をかけている、と書いたのですが、そのタイミングで説明文を手動全書き換えしています。
……つまるところ中の人の労力的にはほぼ同じなんですが、
ひとつのスキルでデータが完結するので、スキルリスト表示がものすごく軽くなりました。非表示にしてたとはいえ、やっぱり重くなってたんですね……
あと、この書き換えをしていて初めて知ったのですが、
コマンドスクリプト内でヘルプや説明文等の書き換えを行う場合、ボックスいっぱいで家業されてしまった時点で文章そのものも改行されてしまう仕様に困っていたんですが、行末に「\」を入れると改行無視されるんですね……?
RGSS3 10年生過ぎたような気がしますが、10年過ぎて初めて知りました。
ブーストによって攻撃HIT数が増加するスキルに関しては、おそらく説明文と同じように内部処理を一時的に描き替えることも可能なのでは…?と思ってみているんですが、「atk_times_add」も何か違うようだし、ちょっとまだ探れていません。
現状、該当スキルをすべて通常攻撃扱いにしてステート側に攻撃回数増加設定を入れることで疑似的に対応していますが、今後調整しようと思っているフレームダメージスクリプトがこれに対応しておらず、これに関しては対応ダメージ回数ごとのアニメーションを作って
$data_skills[n].animation =
で、つど設定かけるしかないのかなあという感じです。
どうもアニメーションに設定されたタグ(SEデータ)からしか引っ張ってこないっぽいので、これにステートで反映させた攻撃回数もひっぱることができればいけそうな気もしますが……
先生に聞いてみようかな……
労力的に「4倍データベース」と「1つのデータの中身をひたすら書き換える作業」、どっちが楽なんだと言われると微妙なところですが、4倍データベースの方はリスト表示条件も複雑怪奇で、メモ欄がぐちゃぐちゃになっていたのと、やっぱり4つ同時管理は面倒くさい!というのが大きかったので長い目で見れば効率あがるんじゃないかなと思うことにします。
あとはちらっと、こんな改変もしてました。
今回の記事で触れた部分に関しては、結構サガスカ風を採用しているところが多かったのですが、一番どうにかして実装したかったのがこれです。ステートの表示。
サガスカのステート表示は、歴代サガのステート表示が不親切極まりなかったのがウソのように視覚的に分かりやすいんです!まあ実際プレイすると、ステートキメてなんぼゲーなので、「ステート表記が分かりやすい」のがゲーム的に重要だったからだと思うのですが。
せっかくあらゆる意味で限界突破して画面が広く使えるようになっているので、こういう部分でちゃんとスペース使って分かりやすくするのは大切かな、と思いました。
ただ状態異常バフデバフまみれにすると敵側の状態表示がとんでもないことになるので、人によってはどんなトンデモ画面が生み出されるのか戦々恐々としています……アクター側は一定タイミングで切り替わるんですけどね……