アニメーションの動作軽量化【RPGツクールMVプラグイン】

2020年02月23日

 アニメーションの動作を軽量化するプラグインです。
 DynamicAnimationで大量のアニメーションを処理したい場合に特に有効です。もちろん単体でも使えます。

 不要なセルの作成を抑制し、アニメーション処理を軽量化します。
 アニメーションで使用しているセルが少ないほど効果を発揮します。セル1枚の場合で大体、20〜30%程度(当社比)効果があるかな〜という感じです。

 また、『対象のフラッシュ』の描画頻度を下げることで負荷を軽減可能です。

導入方法


 以下のファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールMVのプラグイン管理から機能をONにしてください。

 NRP_LightAnimation.js ver2.01(2020/04/11)

更新履歴


2020/04/11(ver2.01)

  • アクターに対象のフラッシュがかからない不具合修正。

2020/04/10(ver2.00)

  • 対象のフラッシュの軽減機能を追加。

2020/02/23(ver1.00)

  • 公開!

プラグインパラメータ


フラッシュ更新軽減度(flashDivide)

 指定した数値分だけ『対象のフラッシュ』の描画頻度を減らします。
 2なら描画頻度は1/2回となります。
 この機能が不要な場合は値を1にするか、delキーで値を空白にしてください。

 『対象のフラッシュ』は非常に重い処理なので、描画頻度を下げればそれだけ大きな効果が得られます。表示の滑らかさは減りますが、2〜4程度ならさほど気にはならないと思います。

 ※当機能はfuku様制作の『フラッシュFPS調整』プラグインを参考に、DynamicAnimation用へと調整したものです。
 http://www5f.biglobe.ne.jp/~fuku-labo/library/etc/

 >RPGツクールMV目次に戻る
posted by 砂川赳 at 20:51 | RPGツクールMV | このブログの読者になる | 更新情報をチェックする

DynamicAnimation テンプレート定義一覧【RPGツクールMVプラグイン】

2020年02月22日

 このページはDynamicAnimationプラグインの解説の一部です。

 ここではテンプレートの定義情報をまとめています。
 使用方法ではなく、あくまで資料的な位置づけです。

 初期状態のテンプレート定義一覧は以下からダウンロードできます。単なるテキスト形式です。

 テンプレート定義一覧テキスト

更新履歴


2020/05/18(ver1.09)

  • 参照先バトラー(a, b)の変更機能追加に伴い『水平(horizontal)』『貫通(pierce)』『魔法発動(spell)』型のテンプレートを修正。
    ※互換性があるため、反映しなくとも動作上の差は出ません。
  • また『貫通(pierce)』型で複数対象の際に複数アニメーションが表示される不具合を修正。
  • ダメージ(damage)型テンプレートの追加。

2020/05/09(ver1.08)

  • 継続(keep)型テンプレートの定義修正。
    delay値は最初のアニメーションの終点に合わせるようにした。

2020/04/20(ver1.06)

  • 画面(screen)型テンプレートの追加。

2020/04/10(ver1.05)

  • 回転(roll)型テンプレートの追加。
  • 『水平(horizontal)』『水平射撃(shotHorizontal)』『垂直(vertical)』テンプレートのアニメ表示位置の誤りを修正。

2020/03/28(ver1.04)

  • 進路を向く(lookCourse)型テンプレートの追加。
  • ↑に伴い貫通(pierce)型テンプレートの角度変更を削除。

2020/03/16(ver1.03)

  • ウェイト(wait)型, ディレイ(delay)型のテンプレートを追加
  • shot, shotRandom, arc, arcRandom, horizontal, shotHorizontal, vertical, pierce, spell, followの各テンプレートについて、アニメーションに設定された『位置』を参照するように修正。
  • follow型の定義再修正、自分(self)型のテンプレートを追加。(ver1.031)

2020/02/29(ver1.02)

  • 追従(follow)型の定義を追加。

2020/02/22(ver1.00)

  • 公開!

このページの目的


 バージョンアップなどで新しいテンプレートが追加された際は、プラグインを一度削除しないと設定が反映されません。ですが、既にユーザ独自で定義を追加・変更しているとそうもいかなくなります。
 そんなわけでここに定義を掲載し、ユーザがテンプレートを取り込めるようにしました。
「色々改造しているうちに元の設定が分からなくなっちゃったよ!」という場合にも役立つかもしれません。

貼付方法


 なお、定義は以下の手順でプラグインパラメータへ貼り付けられます。

  • プラグインの『テンプレート一覧』を開き、末尾の空欄を選択する。
    ※別に末尾でなくてもいいですが、最初はそのほうが安全です。
  • テキストタブを開く。
  • 上記の『テンプレート定義一覧』から定義をコピペする。{〜}が一つの定義です。
  • OKを押して一覧に反映されていれば成功です。

20200215_add_tenplate.JPG

今後の課題


 とりあえず現段階では一覧のテキストファイルだけ置きました。
 余裕があれば、各テンプレートの中身の定義を紹介&解説していきたいと考えています。

 >DynamicAnimationプラグインに戻る
 >RPGツクールMV目次に戻る
posted by 砂川赳 at 20:00 | RPGツクールMV | このブログの読者になる | 更新情報をチェックする

DynamicAnimation プラグインパラメータ一覧【RPGツクールMVプラグイン】

2020年02月20日

 このページはDynamicAnimationプラグインの解説の一部です。

 プラグインパラメータについて、まとめていきます。
 大量にあるので無理に一気に読むよりも、必要に応じて参照したほうがよいかもしれません。

 なお、ここで『テンプレートのパラメータ』以下に含まれるものは、全てメモ欄に行う記述と共通です。
 例えば『リピート回数(repeat)』ならば、以下のような記述となります。指定はアルファベットを使ってください。
<D-Animation>
repeat = 5
</D-Animation>


目次


全体のパラメータ


アニメーション位置(Animation Position)


フロントビュー用(For FrontView)


競合対策(Conflict)


テンプレートのパラメータ

基本(Basic)


テンプレートのリピート系パラメータ

基本リピート(Basic Repeat)


始点(Starting Point)


終点(End Point)


残像(Afterimage)


テンプレートのリアルタイム系パラメータ

リアルタイム(Real Time)


リアルタイム円(Real Time Circle)


全体のパラメータ


テンプレート一覧(templateList)

 アニメーションの設定をあらかじめ定義したテンプレートの一覧です。
 クリックするとテンプレートの一覧が表示されます。
 新しいテンプレートの追加も可能です。
 ある意味、このプラグインの中核といってもよいかもしれません。

 ちなみに、一覧の項目はマウスドラッグで並び替えられます。

省略タグ名(shortTagName) ver1.05

 タグ名を指定した文字列で省略できるようにします。
 例えば、『<D-Animation:shot/>』を『<da:shot/>』というように省略できるようになります。

参照先バトラー(a, b)(referenceBattler) ver1.09

 記述の参照先(a, b)として使用するバトラー情報の型です。
 『0:Sprite_Battler』『1:Game_Battler』が選択できます。

 ※ツクールMVの内部的な仕様では、戦闘時のキャラデータは「HPなどの情報を持つバトラー」と「座標などの情報を持つスプライト(画像)」の2つに分かれています。
 ver1.08までキャラデータの参照に使用する『a, b』という値はスプライトを指していました。そのため、バトラー情報を参照する際は『a._battler.atk』というような記述をする必要がありました。しかし、スキルの計算式では『a, b』はバトラー情報を参照しており、混同を招く結果となっていました。
 
 そこでこの情報を改善すべく導入されたのが、この機能です。
 設定を『1:Game_Battler』に変更すると『a, b』がバトラーを指すようになります。ver1.09より、座標・サイズなどスプライト側の必要情報もバトラーにコピーされるようになっています。
 つまり『a.x』『b.width』『a.atk』というように両方の情報を、区別なく直接取得できます。

 便利なので作者的には『1:Game_Battler』を押していきたいと思っています。
 現状、初期値は『0:Sprite_Battler』のままですが、いずれ『1:Game_Battler』に統合する方針です。

 なお、設定を変えてもある程度の記述はそのまま動作します。例えば『1:Game_Battler』に設定されている場合、『a._battler.〜』という記述は本来エラーとなります。有効となるのは裏で互換機能が働いているためです。

アニメーション位置(Animation Position)

 アニメーションの表示位置に関連するパラメータです。

画面アニメの表示X座標(screenX)

画面アニメの表示Y座標(screenY)

 位置が『画面』のアニメーションを表示する際に標準となる座標です。
 要するに、全体対象のアニメを表示する際の中心位置です。
 対象がアクターの場合はX座標を左右反転します。

 サイドビューでもフロントビューでもいい感じになるよう、初期値を設定しています。

全体アニメのX座標範囲(allRangeX)

全体アニメのY座標範囲(allRangeY)

 全体系アニメを表示する範囲です。Xが横、Yが縦です。
 全体対象系のテンプレートが参照していますので、範囲を広げたり狭めたりしたい場合はこれらの値を変更してください。

 サイドビューでもフロントビューでもいい感じになるよう、初期値を設定しています。

X座標の反転後調整(mirrorAdjustX)

Y座標の反転後調整(mirrorAdjustY)

 対象がアクターのアニメーション位置を反転する際、さらにこの数値分だけずらします。

 例えば、多くのサイドビュー戦闘では、味方よりも敵のほうが配置領域が広いです。そのため、戦闘アニメの位置を単純に左右反転すると、敵にかぶさってしまう場合があります。そんな時はここの値で調整します。

20200218_mirrorAdjustX.JPG20200218_mirrorAdjustX.JPG

 他にもフロントビューでアクター対象のアニメを表示する場合、Y座標を下にずらすなどの使い方ができます。

バラマキ調整(randomAdjust)

 ランダム計算時の数値を作為的に分散させます。
 0.20なら20%以上、前回位置から離します。
 ランダム系アニメーションの表示位置が極端に偏らないよう、調整するための機能です。

 やや実験的な意味合いが強いため、初期状態では設定されていません。

フロントビュー用(For FrontView)

 フロントビュー関連の項目です。

アクターX座標(フロントビュー)(fvActorHomeX)

アクターY座標(フロントビュー)(fvActorHomeY)

 フロントビュー時、アクターの座標位置を設定します。
 通常、アクターは透明ですが、アニメの始点に関わります。
 他のプラグインで配置をするならこの項目は不要です。邪魔になるなら空にしてください。

 X座標の初期値『Graphics.boxWidth / 2』は画面中央を指しています。『Graphics.boxWidth』が画面全体の横幅ですね。

 パーティ人数によって、配置を左右に広げたいという場合は
Graphics.boxWidth * (index + 1) / ($gameParty.battleMembers().length + 1)

 なんかがオススメです。
 この式だと戦闘参加人数($gameParty.battleMembers().length)で画面横幅を等分して配置してくれます。


 こんな感じで横並びのレイアウトと合わせると楽しいかもです。

競合対策(Conflict)

 プラグインの競合対策関連の項目です。

競合対策モード(conflictMode)

 競合対策用に処理の呼び出し方を変更します。
 0が標準ですが、1に変えると動くプラグインもあるかもしれません。

 1なら『YEP_BattleEngineCore』も一応は動きます。……が、強く保証はできかねます。

除外条件(ignoreCondition)

 配列に設定された条件を満たす場合、当プラグインの処理を実行しません。
 初期状態では『YEP_BattleEngineCore』用の設定が入っています。

テンプレートのパラメータ


 テンプレート一覧の中身として定義するアニメーションの呼び出し情報です。
 ほぼ全ての項目がJavaScript計算式に対応しています。

基本(Basic)

 基本項目です。
 アニメーション実行時、リピート前に値が設定されます。

名前(name)

 識別用のメモです。分かりやすい名前をおつけください。
 実はこれをスキル・アイテムのメモ欄で指定しても使えます。

テンプレートID(templateId)

 テンプレートの呼び出しに使う識別子です。
 このIDをスキル・アイテムのメモ欄で指定します。

実行条件(condition)

 実行条件(JavaScript計算式)です。
 この条件を満たさない場合、アニメーションを実行しません。

 記述例:行動主体がアクターの場合。
condition = a.isActor()

遅延(delay)

 アニメーション表示前の時間差フレームです。
 値はアニメーションの1フレームに対応します。
 『auto』と指定すると前アニメーションの終了を待ちます。

ウェイト(wait)

 アニメーションを表示後の待機フレームです。
 値はアニメーションの1フレームに対応します。
 『auto』と指定するとこのアニメーションの終了を待ちます。

リピート回数(repeat)

 アニメーションの繰り返し回数です。

フラッシュ制限(limitFlash)

 設定した数値によってフラッシュ処理を制限します。
 『対象のフラッシュ』『画面のフラッシュ』両方が対象です。
 値が2なら、フラッシュ回数が1/2になります。

 特に『対象のフラッシュ』は極めて重いので、動作の軽量化に有効です。

効果音制限(limitSound)

 設定した数値によって効果音を制限します。
 値が2なら、演奏回数が1/2になります。

対象変更(target)

 アニメーションの表示を指定した対象へ変更します。
 バトラーまたはその配列を指定可能です。

 例えば、『a._battler』を指定すると行動主体が対象となります。魔法発動演出などに使う想定です。
 ※『a』だけでは駄目なので注意です。『a』でも『a._battler』でも有効となるように改善しました!

テンプレートのリピート系パラメータ


 リピートごとに処理される項目です。
 現在のリピート回数は『r』で参照できます。0始まりであることに注意です。

 以降、全ての項目はリピートごとに処理されます。

基本リピート(Basic Repeat)

 リピートごとに処理される基本設定項目です。

アニメーションID(id)

 呼び出すアニメーションのIDです。
 空ならばスキルに設定されたものを使用します。

アニメーション位置(position)

 アニメーションの位置です。0:頭上, 1:中心, 2:足元, 3:画面。
 画面以外は対象の人数分表示します。

間隔(interval)

 アニメーションを繰り返す間隔です。
 値はアニメーションの1フレームに対応します。

描画レート(rate)

 アニメーション1フレームの表示時間です。
 初期値は4。つまり4/60秒単位で描画を更新します。

対象ごとの時間差(nextDelay)

 対象が複数の場合にアニメーションを表示する時間差です。
 アニメーション位置が画面の場合には意味がありません。

反転無効化(noMirror)

 trueを指定すると、対象がアクターの際にアニメの表示反転を無効化します。
 左右反転による表示崩れが起こる場合に。

ダメージ(damage) ver1.094更新

 trueにすると、アニメーションの終了に合わせてダメージ処理を行います。
 また、数値を指定(例:damage = 10)すると、そのフレーム数に合わせてダメージ処理を行います。(ver1.094)
 DynamicMotionのものよりも、こちらのほうが便利です。

 なお、全体複数回攻撃と組み合わせると、ダメージが表示されなかったりで挙動が怪しいです。ダメージタイミングの調整プラグインで一括表示すれば安定するのでオススメ。

コモンイベント(commonEvent) ver1.09

 指定した番号のコモンイベントを実行します。
 挙動としては、並列処理を一度だけ呼び出したような感じになります。

 画面の色調変更、シェイク、ピクチャーの表示、BGMの変更など自由自在です。
 ただし、メッセージ表示やウェイトをかけても進行は止まりませんのでご注意ください。

スクリプト(script) ver1.09

 指定したスクリプトを実行します。

プラグインコマンド(plugin) ver1.10

 指定したプラグインコマンドを実行します。

 記述例
plugin = hoge a.x 200

 通常のプラグインコマンドとは異なり、数式も有効です。ただし、空白は区切り扱いとなるので注意です。

始点(Starting Point)

 始点関連のパラメータです。
 終点の始点がない場合、アニメーションは始点だけで完結します。

始点X座標(sx)

始点Y座標(sy)

 始点のX座標、Y座標です。

始点X座標の分散値(sxRandom)

始点Y座標の分散値(syRandom)

 始点の座標を左右または上下に分散させます。
 値が100なら-100〜100の200ピクセル分散します。

終点(End Point)

 終点関連のパラメータです。

終点X座標(ex)

終点Y座標(ey)

 終点のX座標、Y座標です。
 これを入力すれば始点から終点へとアニメが移動します。

終点X座標の分散値(exRandom)

終点Y座標の分散値(eyRandom)

 終点の座標を分散させます。Xが横、Yが縦です。
 値が100なら-100〜100の200ピクセル分散します。

到達フレーム(arrival)

 終点に到達するフレームです。
 着弾して爆発するアニメーションなどに使います。

放物線の横幅(arcX)

放物線の縦幅(arcY)

 放物線の横幅・縦幅です。
 縦幅はマイナスが上方向になるので注意!

残像(Afterimage)

 残像関連の項目です。

残像数(afterimage)

 設定した数値分の残像を作成します。
 数が多いほど重くなるので注意です。

残像の間隔(afterimageInterval)

 残像を作成する間隔を数値で指定します。

テンプレートのリアルタイム系パラメータ


 1/60秒ごとに演算される項目です。
 上級向けの項目が多めです。

 以降の項目では経過時間を『t』、終了時間を『et』として参照できます。
 また。終点への到達時間を『arrival』で参照可能です。前述の『到達フレーム』とは異なり、1/60秒単位です。

リアルタイム(Real Time)

 リアルタイムの基本項目です。

動的X座標【上級】(dx)

動的Y座標【上級】(dy)

 1/60秒ごとのX・Y座標を定める数式を設定します。

 通常、この項目が未設定の場合は始点から終点へと向かう数式で座標が計算されます。この項目を設定した場合、それを無視して独自の数式で計算を行うようになります。
 理論上、いくらでも複雑な動作を作れますが、あくまでも上級者向けです。

X座標補正(addX)

Y座標補正(addY)

 X座標、Y座標に加算する値です。
 全ての位置計算が終わった後で、最後に補正をかけます。

拡大率X(scaleX)

拡大率Y(scaleY)

 横幅・縦幅の拡大率です。1.0が標準となります。
 アニメーションの編集画面とは異なり、縦と横を別々に設定も可能です。

回転率(rotation)

 回転率です。度数ではなくラジアンを指定します。
 『Math.PI * 2』が360度に相当します。

不透明度(opacity)

 不透明度です
 255で不透明、0で透明です。

色調(color) ver1.05

 指定した配列で色調を変更します。
 例:[255, 255, 255, 255] (赤, 緑, 青, 強さの順)

 この処理は重いので、大量のアニメーションを表示させる場合などはご注意ください。

Z座標(表示優先度)(z) ver1.07

 アニメーションのZ座標(表示優先度)を変更します。
 初期値は8です。2以下(標準の場合)でバトラーより下にアニメーションが表示されます。

 ※この機能はDynamicMotionにて『表示優先度の有効化』をオンにしないと機能しません。(あるいは外部のプラグインで同等の処理をする方法もあります。)

リアルタイム円(Real Time Circle)

 リアルタイムの円運動関連の項目です。

X方向の半径(radiusX)

Y方向の半径(radiusY)

 X方向、Y方向の円運動半径です。

 両方を同じ値にすれば円、片方だけを大きくすれば楕円になります。
 これに加えて、下の円運動角度を設定すれば、アニメーションが円運動をします

X方向の角度(radX)

Y方向の角度(radY)

 X方向、Y方向の円運動角度です。
 2πが一周期となります。

 >DynamicAnimationプラグインに戻る
 >RPGツクールMV目次に戻る
posted by 砂川赳 at 21:13 | RPGツクールMV | このブログの読者になる | 更新情報をチェックする