読者です 読者をやめる 読者になる 読者になる

sound sepher's PASTIME

ゲーム開発で思ったことや、趣味などの話を書き綴っていきます。

ウディタの仕様簡易まとめ

 ウディタをふつうに使ってるぶんには大して気にならないけど、作り込んでくるとぶつかってくる仕様を簡単にまとめておきます。

(1)ゲームの動作が重いなら

 たぶんソフトウェアモードで動いてます。ハードウェアモードに切り替えましょう。Config.exeでいじれます。

(2)1ピクチャの描画限界は8192x8192px

 Intel HD系のビデオカードの最大テクスチャサイズが8192x8192pxだから。ピクチャは2048x2048pxより大きくしないほうが安全。

 更に、これはマップサイズやマップチップセットのサイズにも適用されます。マップサイズもこのサイズを超えたあたりから、エディタが正常に動作しなくなりますし、ゲーム側でもロードが激重になったりします。避けたほうが無難。

 1グリッド40x40pxなら204x204グリッドくらい。画面サイズ1280x720pxなら、横6画面、縦11画面まで

(3)イベント起動条件

 これは憶測ですが、優先順位は並列実行>自動実行>プレイヤー接触>イベント接触。マップ座標(0,0)に近いイベント・座標ほど優先順位が高い。(0.5マス移動時)

 新しいマップへ場所移動した際に並列実行イベントでマップ環境を設定し終わったあと、自動実行イベントが起動したため。

 ランダムエンカウントを接触範囲拡張で指定した際に階段に触れると何が優先されるか検証したところ、ランダムエンカウントをプレイヤー接触で判定した場合、階段イベントより先に戦闘が発生し、発生後は階段イベントが起きず階段の上で立てる。これを両方イベント接触にすると、階段イベントで場所移動したあと、エンカウントが起きる。

 なお、0.5マス判定の場合、座標(0,0)に近い座標ほど優先される都合、「左から近づいて接触した場合」と「右から近づいて接触した場合」、「上から近づいて接触した場合」と「下から接触して近づいた場合」の判定タイミングは後者が優先され、ナナメから近づいた際も同様に判定される模様。「左上から右下に向かって接触」が一番優先順位が高い。接触判定を0.5マス判定でチェックするときは、この仕様もあって若干複雑に(同じ接触方法でも内部の判定が偶数座標と奇数座標で違う、奇数座標はバグの原因)。

(4)複数のマップイベントが重なっている場合の優先度

 マップイベント1とマップイベント2が同座標にいる場合、イベントID番号が小さいほう(1)が優先される。ただし、描画はイベントIDが大きいほう(2)が上に描画される(多分)。これを避けたいときは、イベントIDが小さいほうのオプション「主人公より上」チェックをオン。

(5)大きな画像は読み込みがかなり遅い

 高解像度でゲームを作るときに大きな立ち絵を出したり、大きな敵を出すとすぐにわかりますが、ある程度大きい画像(1024px程度)を表示すると、ビデオカードによっては結構大きな負荷がかかります。

 これはエフェクトアニメーションを1枚画像のアニメしかできないウディタデフォルト仕様では致命的で、派手なバトルエフェクトを作ると毎回ロードで停止します。対策は事前ロードとエフェクト倍角化。ゲーム開始時やデータロード時、もしくは戦闘開始前に必要なエフェクトだけロードするなどの対策が必要。

(6)繰り返し使う処理はコモンイベントでまとめる

 場所移動時の移動前処理・後処理。宝箱処理。エンカウント処理。繰り返し使うイベントはコモンイベントから読み込むようにしたほうが後々ラクに。

 ウディタの隠し機能のひとつに、コモンイベントからは呼び出しイベントのセルフ変数を参照することはできないが、マップイベント上で指定したセルフ変数分岐やセルフ変数格納をコピーしてコモンイベント上でペーストすると機能する。なお、これをコモンイベントで修正しようとするとエラーが起きる。