RPGツクールVXAceの網スマートフォン用の表示で見るRPGツクールVXAceの網RPGツクールVXAceの製作過程で気が付いたことをメモする。この広告は、90日以上更新していないブログに表示しています。2013-03-24画面外のスプライトを更新しない処理軽減(高速化)ワールドマップなどの大きなマップを扱う場合、画面の表示されていない場所にイベントが設置される状況が起こりうる。このとき、RPGツクールVXAceでは離れたイベントは移動などの動作を更新しないという処理負荷軽減がデフォルトで行われている。メソッドがそれにあたる。416pixで、横17チップ*縦13チップになる。画面中央から横幅12チップ、縦幅8チップの範囲を可視領域付近と判定しており、大体横は画面外3チップ、縦は画面外1チップ程度を超える場所にイベントがある場合は、そのイベントは移動しないようになっている(dx,dyの引数を変更すれば挙動を確認できる)。実際に大きなマップを作ってみると、イベントから離れてもあまり処理負荷が落ちていないと感じる。要因はいろいろあると思うが、とりあえずマップの更新に関して何が処理負荷になっているか検証した。【条件】マップサイズ:290×200(かなり大き目を想定)イベント数:106イベント内容:場所移動のみこの状態で、主人公がマップ上を歩行するときに、1回のscene.updateにかかる各処理の処理時間を、高精度CPUカウンタ(WindowsのAPI)を用いてマイクロ秒単位で計測した。Scene_Mapのupdateメソッドを引用する。scene_change_ok?end1superScene_Baseのupdate_basicにあたり、Graphics.update,Input.update,ウィンドウ更新を含むが、Graphics.updateがフレームレートまでウェイトをかけており処理負荷が見え辛いため今回は負荷の対象に含めない。2$game_map.update(true)マップの更新。乗り物、イベント、スクロールなどの更新を含む。3$game_player.updateプレイヤーの移動更新。4$game_timer.updateタイマー(ゲーム内で表示するもの)があれば更新。5spriteset.updateイベントやピクチャなどのスプライトの位置などを更新する。6update_sceneシーン遷移があった場合のみの処理60fpsの場合、1フレームは16.66ms以内で処理を終わらせなければ、フレームスキップ(がくつき)が発生する。2345が和が16ms以内であればおそらく通常の歩行時にフレームスキップが起ころうことはない。いえ、処理は早めに終わる(軽い)ほうがCPUへの負荷が少なく、軽いにこしたことはない。3.4GHz)で計測した結果2345は、マップのどこを歩いていても大体以下のようになった。(13.2%)2はマップサイズとイベント数に依存するため改善の余地はあるが、とにかく5が重い。画面にイベントが表示されていないときでも処理時間が変わらないため、画面外のスプライトに対しても更新を行っているのではないかと予想できる。実際RGSSの処理を見るとそうなっている。メソッドをつくり、画面外のスプライトは更新しないようにしてみた。dyend引数のdx,dyは必要に応じて調整してもいい。@characterのスクリーン位置情報を参照するのがポイント。!near_the_screen?を追加すればいい。(7.5%)になり、全体で1msくらい改善された。CPU処理負荷もタスクマネージャで確認しても下がっているのが確認できた。この方式では、横100pixなどの巨大なキャラグラフィックを持つイベントが、スクリーンに近づくまで表示されないといった不都合が考えられるが、32*32に収まるイベントしかないことがわかっている場合は、イベントが少ない場所での処理負荷軽減につながるだろう。巷ではほかにもたくさんの負荷軽減処理が考え出されているが、とりあえず少ない変更で効果が大きい部分から手を加えてみるのが良さそうに思う。システムの根幹の部分は、下手に多くの箇所を変えると流用性が低下するし、思いもよらなかったバグを生み出しやすい。»プロフィールid:kazamitRPGツクールVXAceの製作過程で気が付いたことをメモする。画面外のスプライトを更新しない処理軽減(高速化)柔軟なアイテムカテゴリRPGでギャンブルメッセージウィンドウとFiberRPGツクールVXAceで長い文字列をdraw_textできない月別アーカイブはてなブログをはじめよう!kazamitさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。