コメント

このコメントは、【トピック】透明イベントの動作の有無を「有効条件」でつけるのと、「イベント実行内容」の条件式でつけるのではどっちが快適にプレイできますか?へのコメントです。

コメントの内容

Material 6858 mini akasata(投稿日:2014/02/20 01:02/20/14)
運営のあかさたです。

パフォーマンス系の問題については何をしたいのかによって適した書き方は変わるので、一般論しか回答できませんが・・・。

Rmakeが遅いという場合、二つの現象を指していることが多いです。

(1) 描画が遅い(画面上のキャラクタの数が多くて遅くなる)
(2) スクリプトの実行速度(計算速度)が遅い

(1)は、有効条件で描画対象を減らすことで遅くなる問題を回避することができます。もっとも、キャラクタが設定されていない透明イベントはそもそも描画コストがかかりません。

(2)についてですが、ノベルゲームで作られたシューティングゲームがコマ落ちしたりしているので、スクリプトの実行が遅いことは知られていることだと思います。

問題は、一見するとスクリプトの実行中ではない(イベントの実行中ではない)ときに、スクリプトが原因で遅くなることがあることです。

ここで、有効条件の話になります。

有効条件のスクリプトは、主にイベント終了時に実行されます。イベント終了時に全イベントの有効条件をチェックすることで、イベントの有効無効を切り替えるようになっています。

通常のフィールド移動時などには有効条件のスクリプトは実行されないため、マップに有効条件が指定された透明イベントを100個や200個置いても快適に動作します。

しかし、たとえば毒の沼地のようなものを作ると、一歩歩くごとにイベント処理が実行されて終了後にマップ中の全イベントの有効条件のスクリプトが実行されることになります。従って、一歩ごとに動作がカクカクする現象が発生します。このような場合は、イベントを終了させずに歩行する方法を検討するか、ある程度はカクツキを容認する必要があります。

見た目上描画されているキャラが多くないのに動作が重くなっている場合は、この有効条件のスクリプトの実行頻度が問題になっているケースが多いです。

まとめると、(1)が原因であれば、有効条件によって描画する対象を減らすことが有効です。(2)が原因の場合は、スクリプトの高速化や実行頻度を減らす工夫が有効です。

以下、個別ご質問についてです。

>例えば透明通行可のイベントの動作の有無は、「有効条件」でつけるのと、
>イベント実行内容の条件式でつけるのではどっちが快適にプレイできますか?
>
有効条件はあたり判定などの処理の軽減にもかかわってくるので、基本的には有効条件を使うことをお勧めします。

>同じキャラクター素材の別イベントを各所に配置するのでは、
>やはり前者の使い回しの方が軽くなるのでしょうか?
>
理論上は軽くなりそうですが、イベントの数を数百とか数千とか削減しないと体感できる差は生まれないのではないかと思います。

>似た内容ですが、要は「有効条件を満たしていないイベントは軽いのか」が知りたいのです。
>
有効条件を満たしていないイベントは、描画コスト、あたり判定コストがかからなくなるので軽いです。

コメントの内容(一番最初の投稿)

Material 6858 mini akasata(投稿日:2014/02/20 01:02/20/14)
運営のあかさたです。

パフォーマンス系の問題については何をしたいのかによって適した書き方は変わるので、一般論しか回答できませんが・・・。

Rmakeが遅いという場合、二つの現象を指していることが多いです。

(1) 描画が遅い(画面上のキャラクタの数が多くて遅くなる)
(2) スクリプトの実行速度(計算速度)が遅い

(1)は、有効条件で描画対象を減らすことで遅くなる問題を回避することができます。もっとも、キャラクタが設定されていない透明イベントはそもそも描画コストがかかりません。

(2)についてですが、ノベルゲームで作られたシューティングゲームがコマ落ちしたりしているので、スクリプトの実行が遅いことは知られていることだと思います。

問題は、一見するとスクリプトの実行中ではない(イベントの実行中ではない)ときに、スクリプトが原因で遅くなることがあることです。

ここで、有効条件の話になります。

有効条件のスクリプトは、主にイベント終了時に実行されます。イベント終了時に全イベントの有効条件をチェックすることで、イベントの有効無効を切り替えるようになっています。

通常のフィールド移動時などには有効条件のスクリプトは実行されないため、マップに有効条件が指定された透明イベントを100個や200個置いても快適に動作します。

しかし、たとえば毒の沼地のようなものを作ると、一歩歩くごとにイベント処理が実行されて終了後にマップ中の全イベントの有効条件のスクリプトが実行されることになります。従って、一歩ごとに動作がカクカクする現象が発生します。このような場合は、イベントを終了させずに歩行する方法を検討するか、ある程度はカクツキを容認する必要があります。

見た目上描画されているキャラが多くないのに動作が重くなっている場合は、この有効条件のスクリプトの実行頻度が問題になっているケースが多いです。

まとめると、(1)が原因であれば、有効条件によって描画する対象を減らすことが有効です。(2)が原因の場合は、スクリプトの高速化や実行頻度を減らす工夫が有効です。

以下、個別ご質問についてです。

>例えば透明通行可のイベントの動作の有無は、「有効条件」でつけるのと、
>イベント実行内容の条件式でつけるのではどっちが快適にプレイできますか?
>
有効条件はあたり判定などの処理の軽減にもかかわってくるので、基本的には有効条件を使うことをお勧めします。

>同じキャラクター素材の別イベントを各所に配置するのでは、
>やはり前者の使い回しの方が軽くなるのでしょうか?
>
理論上は軽くなりそうですが、イベントの数を数百とか数千とか削減しないと体感できる差は生まれないのではないかと思います。

>似た内容ですが、要は「有効条件を満たしていないイベントは軽いのか」が知りたいのです。
>
有効条件を満たしていないイベントは、描画コスト、あたり判定コストがかからなくなるので軽いです。