実はずっと思っていたことがありました。
SRPGをやるにはこの画面サイズは小さすぎるのではないか? と。
しかしウディタはすごいのでこのへんも自由自在です。やっていきましょう。
ゲームの解像度(ウィンドウサイズ)を変える
各種設定の変更方法
まずはサンプルマップのサイズを変えてみましょう。
ずっと「20×15」(今のゲームのウィンドウにすっぽりおさまるサイズ)でしたが、CDBのマス管理上の上限である「50×50」に広げてみます。
次は「ゲーム設定」→「ゲームの基本設定」→「ゲーム画面サイズ」と進みます。
いろんなサイズがありますね。ウディタはバージョンアップのたびに選べるウィンドウサイズがどんどん増えていきました。試しに800×600にしてみましょう。
こんな感じで、ゲーム画面の大きさを変えていけます。
キャラチップなんかがえらいヒキになってしまいましたが、「タイルサイズ」の方を変更してキャラチップやマップチップも対応規格のものに差し替えると解消されます。
今のタイルサイズは16ですから、倍の32なんかにすると見違えるでしょう。32ピクセルの規格ならば、こうしたすてきな素材が対応しております。
基本設定を変えても問題無く動作するコモンイベントの作り方
また、ゲーム画面のサイズやタイルサイズを変更すると、コモンイベントで行っている各種計算がズレてこないかが心配ですね。
こうした設定次第で変わる数値は、コモンイベント中ではシステム変数の直打ちによってフレキシブルな処理にできます。
こんな感じ。
ゲーム画面のサイズ(解像度)と1マスあたりの大きさ(タイルサイズ)のシステム変数の呼び出し値は「9000116」、「9000117」、「9000118」です。
そういえばやってなかった「スクロール」
今の状態でのスクロールはどうなっているのか
SRPGとして望ましいスクロール機能はできてません。ですが、ウディタのデフォルトのスクロール機能は動いています。
どういうことかと言いますと……
いったん解像度を320×260に戻しましょう。サイズを戻してもマップは50×50になっているので、主人公が動き回れば(テンキーを入力すれば)デフォルトのスクロールが発生します。
主人公は透明状態なのですが、この図だと居場所はたぶん矢印のあたり。
テスト用の仮スクロール
本作はマウス操作のゲームを想定していますので、マウスのあたりに主人公が自動で付いてきてくれるようにしたいですね。
マウスカーソルのあるあたりの座標は常に計算していますから、「キャラクターの動作指定」の赤線部分にマウス(ポインター)の座標を指定すればOKです。
ただし、動作指定ではコモンセルフ変数は使えません。
通常変数の呼び出し値の入力は大丈夫なので、コモンセルフ変数をいちど通常変数に代入して、動作指定のなかでは通常変数を呼び出す……という手順が必要です。
これでとりあえず急場をしのぐ仮スクロールができました。
デバッグ用ぐらいのつもりなので、この処理は回数ループのなかに入れてあります。回数ループが0ならこの処理は動きませんし、1以上なら入れた数値のぶんだけ主人公が移動してスクロールを起こすことになります。
仮の処理ではありますが、人によってはこれぐらいで充分と感じるかもしれませんし、スクロール不要な規模のSRPGというのも良いでしょう。
なにしろFEのソシャゲである『ファイアーエムブレムヒーローズ』では、たったの8×6マスで深い戦略性の実現しています。
参考 トップページファイアーエムブレムヒーローズ公式
スクロールをすると起こる困ったこと
スクロールすると、ヘンな位置にユニットがいることになります。
従来の処理だと常に画面の左上ハジを(0,0)座標だと考えているので、主人公移動によってスクロールが発生すると、マスの数え方と実際の見え方がズレてきてしまうのです。
修正が必要ですね。
スクロールに対応した座標の取得
ズレたぶんだけ逆にズラそう
イメージの話ですが、「右にズレたなら、左におなじだけズラす」と元通りの位置になります。
ズレの相殺をかければ、位置ズレも直せそうですね。
実際にどれだけズレてしまっているのかが計算できればよいのですが、ちょうどいいシステム変数があります。システム変数104と105、「Xスクロール値」と「Yスクロール値」です。
ピクセル単位でスクロール量が格納されているので、これをタイルサイズで割ると、実際にズレているマス数がわかります。これを従来のマウスカーソル位置をポインター位置に変換するコモンで加減してやるとよいでしょう。
各種コモンを修正
このコモンをこうすると、
こうなります。
マウスカーソルは赤い矢印のあたりにあるので、カーソル位置の判定は良いのですが、パネルの表示位置がズレたままですね。
というわけで、パネルの表示のコモンでもピクチャの表示位置にスクロール位置の変数を加減する必要がありそうです。
はい、OKですね。
ここまで直しても、実際の操作感ではちょっとカーソル位置とゲーム上の判定に若干のズレがあるように感じます。
やはりスクロール処理も仮で済まさず、きっちり自作化した方が良さそうです。
次回の記事でやっていきますが、過去にこんな記事も書いておりました。