Appendix

広告

Entries

軽量化スクリプトの解説 その1

自分が作ったスクリプトの解説とか前から書いてみたかったので、
「ぼくらの大革命!」で使用した軽量化スクリプトの解説なんかしてみようと思います。


「ぼくらの大革命!」はバージョン1.3の更新で、大幅に軽量化しました。
人数が999人でも、処理落ちとかしなくなったと思います。
(PCのスペックにもよりますが・・・)

あの更新での一番の軽量化は、画面に映っていない仲間の移動処理を行わないようにしたことです。

とはいっても、それではいざ画面に映ったとき、
おかしな位置に仲間が立ち止まっていた状態になってしまいます。

そうならないように、プレイヤーが1歩移動するごとにすべての仲間が
移動後の位置へと瞬時に移動するような処理も加えてます。

つまりは画面に映っていないキャラは、マス目とマス目の間をワープしながら移動してたりします。



正直、この軽量化は大して効果がないと思っていました。

なぜなら、マス目とマス目の間を移動する処理と言うのは、それほど複雑なものではないからです。

たとえば、X座標の1から2へと移動する場合、
座標が入ってる変数に1以下の数値を足しているだけです。

0.1ずつ足せば、10フレームで1から2になります。

(実際はもうちょっと複雑です。
通常は上限を超えないように配列を作成したりしますが、
そこは元から改良してあって配列を作成しないようにしてあります。)

なので、この軽量化を行った後のラグ解消には、私自身驚きました。



なぜ、こんなにも効果があったのか。

私が衝突判定のほうが重いと思っていたからでしょう。

衝突判定はもっと複雑です。

マップチップの移動可能判定から全てのイベントと衝突しないかの判定まで行うので、
イベントが多くなるほど処理が重くなります。

後ろをついてくるだけのキャラにこれは必要ないので、
この処理がなければ良いと思っていました。

ですが考えてみれば、衝突判定が行われるのは移動開始の1フレームだけです。

マス目とマス目の移動は数フレームの間処理が行われます。

さらにそれが999人でずっと移動し続けてるとなれば、とても重くなるわけです。



とまあ、解説したところでこんな知識が役立つゲームなんて他にないでしょうけど・・・

ですが、軽量化には1フレームしか行われない複雑な処理より、
毎フレーム行われてるちょっとした処理を見直したほうが良いということですね。

そういう意味では、またひとつ賢くなれたと気がします。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://woodpenguin.blog.fc2.com/tb.php/87-d7f91cbf

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

木星ペンギン

Author:木星ペンギン
ほぼツクールのことばかり書いてます。
名前は↑から取りました。
木製ですが木星です。
トカゲは関係ありません。

ゲーム

  • 箱庭の勇者たち(体験版)
  • アクイ ト アイ
  • ぼくらの大革命!
  • 勇者がやらねば俺がやる!
  • 3Turn Battle!
  • 3TurnBattle!2nd 体験版

メールフォーム

wood_penguin@yahoo.co.jp

名前:
メール:
件名:
本文: