「EnDlEss DREamER」ブログ

最近はunity5メインで活動中。以前はツクールRGSSネタなど。

§ RGSS FPS 軽量化

色々とググッた結果、重たい処理でよく思い当たりそうなのは以下の2点に尽きると思われる。

・「Bitmapクラス」の「draw_text」をシーンクラスの「update」メソッド等で毎フレーム更新されている。
・画像(Sprite)を多用し、毎フレーム変化が無くても更新されている。


自作戦闘系は特に気を付けなくてはいけないんだけど、サイドビューなどにしたら
キャラの画像(多分Sprite_Battlerクラス)なんかを変化がない限りは画像の読み込みや更新をしないようにする。
リアルタイムでHP等を表示変更したい場合は、変化が無い限り更新をしない。



大きな画像を扱う場合は、変化が無い限り更新を行なわないというのを十分気を付けなくてはならない。


最近のオンラインゲームをやるようなPC環境ならたかだか2Dの表示なんて気に留める必要もないんだけど
ネットブックなんかのロースペックPCだとこの辺りを考慮するだけで大分FPSに違いが出たりする。
もちろん、CPUの負荷を減らすのに無駄なプログラムは起動しないとか不要なサービスは削除とか
Windowsの設定を軽量化するのもFPSを上げるのに重要なんだけど、スクリプトを組む上では
とりあえず画像処理系のリアルタイム更新を行なわないようにするというのを気を付けるといいのを発見。


自作ゲー「Reon」をサブマシンで実行すると戦闘中は「10FPS」前後だったんだけど
今回、バトルレイアウト変更を軽量化するのに大幅な修正を加えることによって「20FPS」まで上昇した。
ネットブックの性能が「Atom N270 1.6Ghz」と「オンボードVGA 225M」というGPUすら入ってない
モバイルインテルの945とかいうチップセットなのでそもそもがゲーム向きでない性能。
素のプロジェクトでも40FPSで、バトルレイアウト変更のテスト用プロジェクトで「最大で」同程度のFPS。

軽量化に伴って、戦闘開始時に顔グラでHPなどが見えない現象を修正しました。


本当はdraw_text周りをRUBYで軽量化出来ないか考えたんだけど、何かと面倒そうなので途中で断念。
純正の記述部分でも多用されてるのでdraw_text自体を軽量化出来ればかなり軽くなると思うんだけど
RUBYじゃ「同一メソッドで違う引数」のメソッド定義が出来ないので断念。
restだかなんだかを駆使すれば似たようなことが出来なくもないらしいけど、詳しくは不明。


大体、大幅に修正するとエラーが出るので次回うpした時には報告下さると対応します。
可能な限りはやってるけどどうしてもヌけてしまって・・・



スクリプトばかりじゃなくてCRIME BREAKERのバグ修正も溜まってる(;。;)
初作品で、全てが初めてでバグの多さったらもぉ・・・
IRON MAIDEN のバグ報告がCRIME よりも少ないので、Reon はもっとバグを少なくするように頑張ろう。



2010/08/01/Sun 02:08:16  VX RGSS2/CM:0/TB:0/
new モータースポーツの地位が低い日本・・・ / MAIN / 重たい・・・ old

COMMENT

COMMENT POST

/
/
/
/



 
 内緒です♪

TRACK BACK

  この記事のURL:
   http://edlogtkool.blog36.fc2.com/tb.php/627-d27c5df0


MAIN
copyright © 2006 「EnDlEss DREamER」ブログ. All Rights Reserved.
Template by TAE-3rd☆テンプレート工房