2016年09月28日

接近コモンが完成!


ScreenShot_2016_0928_01_42_49.png


先日から作っていた接近コモンがついに完成し、公式コモン集に登録しました。
長かったー。
鏡コモンと同じくらいがんばったかも。
ぼら猫システムと同じくらい難しかったです。
でも作れば作るほど自分の技術が成長しているようで嬉しいです。

ところでソフトニシンさんよりコメントをもらい、衝撃の事実を知らされました。
接近させるコモンは、もうすでに公式コモン集にあったようです。
中はまだ見てないけど。
あると知ってたら作らなかったー!
でも知るのが遅れて、成長の機会と充実した時間をもらえたからよかったです。

力尽きたので、以下に説明書を貼り付けます。
おやすみなさい。
-------------------------------------------------------------------

接近コモン Ver.1.00  (2016年9月28日公開)
   
--------------------------------------------------------------------

敵などを主人公に接近させるコモンです。
地形にひっかからず障害をよけ、最短距離を接近してきます。

おまけ機能として
・接近機能の起動条件設定
・追いつかれた時の処理(サンプルあり)
・各マスの情報表示機能(デバッグ用)
がついています。




<使用条件・仕様>
ゲーム設定での歩幅は1歩を推奨します。(半歩でも一応は使えます)
接近させる時のマップの広さは最大で100×100マス。
マップイベントの通行不可は判定しません。
予備変数3の0番、1番を使います。
可変DB4つ、コモン4つを使います。
全ての画面解像度に対応しています。
コモンとDBの名前は変えないでください。
その他細かいことは、ずっと下の方を見てください。



<簡単な使い方>
ウディタ同梱サンプルゲームへの導入方法を説明します。
可変DBのタイプ数の設定を4つ以上増やしてください。
できたスペースに4つのDBを読み込んでください。
コモンのあいている所に4つのコモンを読み込んでください。
ゲーム基本設定を開き、移動幅を1マスに変えてください。

サンプルゲームで夕一に追わせるだけなら設定は一切不要です。
細かい設定もできます。
その場合は各コモンを開き、チェックポイント間の数値を変えてください。



<細かい設定>
各コモンを開き、チェックポイント間の数値を変えて設定します。
青色のコモンを順に開き、接近コモンを起動したいマップのIDを「追われるマップ番号」に入れてください。
上二つのコモンには、接近させるキャラのイベントIDを「接近するEvの番号」に入れてください。

動作がもしもとても重ければ「全マスの〜」コモンの「重ければ小さく」を500とかにしてみてください。
(作者の環境では、通常でも少しは重くなるようです)
キャラの移動方向を4方向に限定したいなら、「追うキャラ〜」コモンの「移動方向数」を4にしてください。

追いつかれた時の処理をコモン内に入れるなら、「追うキャラ〜」コモンの「追いつかれた〜」を1にしてください。
そしてコモン内の説明に従って処理を入れてください。
(サンプルでは文章表示、効果音、ピクチャ表示をさせてます。変数操作の他「タイトルに戻る」もおすすめです。)

このコモンは基本的にはその敵のいるマップに入った瞬間から敵は接近してきます。
もし途中から接近させたい場合は「全マスの〜」コモンの69行目を参照してください。
そして「回数付きループ」を1回に変え、条件を設定してください。
サンプルでは1回にすると「通常変数が0以外になった時」に接近が起動します。
ただし起動条件を設定すると処理が重くなります。

敵の接近経路がどう判定されているか確認するために、DBにいれた各マスの距離などを表示できます。
むらさき色のコモンの起動条件を並列(常時)にしてご活用ください。判定の様子がよくわかります。
ただし表示するのは最低サイズのマップの情報のみです。
それ以上広いと、主人公が左上に行った時の画面の情報だけを表示します。つまりスクロールに非対応です。
このコモンのみは消しても大丈夫です。


<上に書いた以外の細かい仕様>
通行方向設定のあるマップチップ(がけのふちなど)を使うと正しく認識されないこともあります。
(マス自体は通行可能なため)
地形の変更など、通行不可マスの配置を同一マップ内で変更させると正しく認識されません。
処理軽量化のため、通行判定はそのマップに入った直後(2フレーム後)に一回だけ取得しています。
敵の移動は並列処理のため、文章表示中やメニューを開いている間にも接近してきます。
不都合があればお手数ですが各自で対処をお願いします。

このコモンで何が行われているかを正確に書いておきます。
主人公か敵のいずれかが移動するたびに、各マスが主人公から何歩目かを判定します。
つまり両者とも停止中は情報は更新されません。
敵は移動終了するたびに、距離が一番小さいマスに移動します。
8方向の中で距離が最短のマスが複数ある時はどちらを選ぶかはシステム内で決まっています。ランダムではないです。
斜め移動したい時にそのマスに至る左右いずれかが通行不可なら断念して4方向移動します。
距離の判定更新には時間がかかる場合があるので、距離0の地点に敵が到達してしまうことがあります。
その時は主人公との距離が遠くないことが想定されるので、今まで主人公が歩いてきた軌跡を参照し、それをなぞって接近します。
厳密に言えば、その際は最短ルートを通らないこともあります。
ただし一瞬で次回の判定更新が起こるので移動先はすぐに修正されます。



<マップイベントについて>
モブキャラにひっかからせないためには以下の方法をとるしかありません。
・そもそも置かない
・全部すり抜けオンにする
・移動させない(そして通行不可マスの上に置くか、下記の改造をする)

マップ内全てのモブキャラが移動しないなら、
「全マスの〜」コモンの42行目を開き、
「通行可能(タイル・Ev両方)」に変更すればマップイベントも避けて接近できるようになります。
(移動するモブキャラの配置を常時読み取ることも試しましたが、処理が重く実用化できませんでした。)



<コモン使用のコツ>
通常の使用ではあまり問題ないでしょうが、もし何かあれば以下を参考にして下さい。

マップはできるだけ狭くすれば処理は軽いです。
マップ内に通行不可のマスが多い方が処理は安定します。
主人公がマップ端にいるよりマップ中央にいる時の方が少しだけ敵の移動が正確です。
主人公と敵の距離が離れると敵の移動頻度は下がります。
動作指定で敵の移動頻度を設定しても無効です。移動速度は有効です。
主人公の移動速度が敵よりずっと速い場合は距離が大きく開きやすく、ぼろがでやすいです。
(まあ多少は離れていないと正確に接近しているということが見えにくいでしょうが)



<さいごに>
このコモンは多くの人に使ってもらいたいので、導入をサポートしようと思います。
質問などがあれば、ぜひメールをお寄せください。
できるだけ対処します。(2016年9月現在)


---------------------------------------------------------------------------------
ラベル:コモン
posted by じゃ。 at 02:13| Comment(0) | ウディタコモン・素材 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: