YADO作品リスト・コモンイベント素材
船コモン
(更新:2023/01/27)


 
ジャンル コモンイベント素材
制作ツール WOLF RPGエディター公式サイトへ移動
WOLF RPGエディター
制作開始 2023年1月8日
完成日 2023年1月12日
公開日 2023年1月12日
公開状況 ウディタ公式サイトのコモンイベント集と、
気紛れな空間のウディタ作品のページにて公開中。
バージョン 1.03(2023年1月27日)
作品の内容 マップ上に船を設置する事ができるコモンです。



【ダウンロードページを開く】 



▼制作した経緯

ウディタの公式サイトにある質問掲示板にて、
コモンイベント集にある船のコモンを使ってみたが上手く使えない
と言った質問が書かれていました。

そこで質問者が使ってみた船のコモン素材を試してみた所…
・別のマップへ移動して戻ってきた時には、船が初期位置に戻る。
・パーティ2人以上には対応できない。
・変な所で下船して操作不能になる事がある。
・ウディタ[1.30]で作られている。
などの問題がありました。

これらの問題を解決するためには、全て一から作り直す必要があったため、
YADOの方でウディタ[3.00]に対応した新たな船用のコモン素材を作る事にしました。



▼2種類のコモン

当コモン素材には「簡単設定版」と「タイルセット版」の2種類があり、
どちらかを使う形になっています。

実は制作当初は1個のコモンイベント(簡単設定版)で制作していましたが、
「簡単設定版」にタグ機能を追加するとイベントコマンドの設定が複雑になり、
特に乗船時の処理落ちが酷くなりました。

また使い方が複雑になる上、万が一改造して使う場合には、処理構造を把握するのが難しくなりました。

そこで「簡単設定版」と「タイルセット版」の2種類に分けて公開する事にしました。

元々「簡単設定版」だったものを改造して「タイルセット版」にしているので、
セルフ変数の使い方やコモンイベントを呼び出す時の「強制下船」などの機能は共通しています。



▼コモン制作の裏話

「簡単設定版」は、
【1】コモンイベントに船コモン[簡単設定版]を読み込む
【2】船のマップイベントから船コモン[簡単設定版]を呼び出す

を設定するだけで使えます。

導入方法は超簡単ですが、コモン素材を作る側としては、超大変な事になっていました。

と言うのも、下船できるマスの判断には、通常ならばタグ番号を使いますが、
「簡単設定版」はタグ番号を使わない仕様であるため、乗船時にマップ上にある全てのマスを調べて、
水のマスと接している陸地が通行可能(下船可能)であるかどうかを調べる処理を実行しています。

100×100マス(1万マス)程度のマップサイズなら問題ありませんが、
400×400マス(16万マス)くらいのマップサイズになると、数秒のフリーズが発生するようになりました。

フリーズの原因は調べるマスの数の問題だけでなく、
下船可能なマス座標を文字列変数に保存している事も原因でした。
(文字列変数は文字数が多くなると、処理落ちが酷くなる)

イベントコマンドの組み方を色々と変えてみて、多少の改善はあったものの、
上陸可能なマスの座標を文字列変数に保存する仕様であるため、
文字列が多くなると徐々に処理落ちも酷くなりました。

最終的にはフリーズを回避する事ができず、フリーズ回避用としてファイル出力の機能を導入しました。

「タイルセット版」はこのような乗船時の処理が無いので、イベント設定の方は楽でしたが、
使う側としてはタイルセットの準備が必要なので、かなり面倒ですね。



当コモンはウディタ[3.00]仕様で作られているので、下船できるかどうかを判断する処理には、
マップイベントの「半歩上に設置」だけでなく「半歩左に設置」の当たり判定にも対応しています。

実はこの「半歩上に設置」「半歩左に設置」の対応させるのが地味に面倒でした。

例えば下図の場合、マップイベントが「半歩左に設置」で通行不能になっていますが、
この時にマス単位で「通行可能(タイル・Ev両方)」で調べると以下のようになります。


0.5マス単位で調べれば正確な当たり判定を調べる事ができますが、
問題は船に乗ったあとは、陸地のチップが全て通行不能になるので、
マップイベントの当たり判定は船に乗る前に調べる必要があります。

タイルの通行設定と一緒に調べてしまうと、とんでもなく処理落ちが発生してしまうので、
マップイベントの当たり判定を調べる処理は、タイルの通行設定とは別の処理で調べています。

まずマップ上のマップイベントの数を取得し、ループ処理を実行します。
イベントIDはマップイベントの削除によって、途中に欠番がある事があるため、
「マップイベントの数=ループ回数」では設定できず、処理した数をカウントしてループしています。

ループ内では、イベントID「0」から順にマップイベントが存在するかどうかを調べて、
存在していたらマップイベントの座標(精密)を取得し、
マップイベントがいる所を0.5マス単位で左上、右上、左下、右下と当たり判定を調べます。

そして地形チップとは別の文字列変数に当たり判定の情報を保存して、
その保存した情報を基に下船時に0.5マス単位でマップイベントの当たり判定を調べています。

処理構造は単純ですが、実はこの処理構造が作れるようになったのはウディタ[3.00]以降なんですよね。
もしも質問掲示板にあった船コモンの質問がウディタ[3.00]の公開前でしたら、
このコモン素材は誕生してなかったと思います。



【YADO作品リストのトップへ戻る】

YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール