Appendix

広告

Entries

アイテム一覧軽量化 と スクリプト更新

【アイテム一覧軽量化】

まずは先週書いたアイテム一覧表示の軽量化スクリプトです。

説明にもありますが、項目が100を超えてくると体感できると思いますが、
そんなにアイテム持つことがないのなら入れる必要はありません。



下記のスクリプトを更新しました。

メッセージエフェクト
乗り物擬似3D化
乗り物疑似3D化 視界拡張
乗り物擬似3D化 計量化

メッセージエフェクトは以前書いた決定キーでスキップしたときの動作を修正しました。

乗り物擬似3D化関連はウィンドウサイズ640*480への対応です。

また何かおかしな動作があれば、報告いただけると助かります。



以下、コメントのお返事です。

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

今回はメニュー画面の軽量化解説です。

「ぼくらの大革命!」はバージョン1.3で、メニューを開く時間も大幅短縮されました。

ここで使った軽量化のいくつかは、既に「レスポンス向上」スクリプトに入れてあったりします。

ですが、一番効果のあった軽量化はちょっと特殊なので入れてません。
それについて解説したいと思います。



通常メニュー画面を開くと、キャラクターのステータスが右側に表示されます。

このステータスの描写は全員分行われるので、
999人ともなればフリーズしたかのように重いです。

これを何とかせねばと、描写の高速化をいろいろ図ったのですが、やはり限界がありました。

そこでふと思いついたのが、画面に映っているキャラのステータスだけ描写すればいいのでは?
というものでした。

131020.jpg
この画像で言えば、一番上の"騎士C"から"見習い戦士P"までを描写して
残りは描写しないと言うことです。

画面をスクロールさせたら、まだ描写していないキャラをそのとき描写すれば、
見た目的には従来と変わりません。

これがうまくいき、人数が多くても少なくてもメニューを開く時間が変わらなくなりました。
ホント、こういうのって後から思えば当たり前だけど、それに気づけるかどうかですね。


で、この軽量化ですがスクリプト素材として配布できるんじゃないかなと考えています。

というのも、このやり方で軽量化できるのは、キャラのステータス描写だけではなく
アイテムの描写なんかでも使えます。

アイテムが何百と言う数を所持するゲームだと、カテゴリを切り替えるたびに一瞬止まったり
してしまいますが、これを軽減することが出来る・・・はずです。


最近、スクリプトも更新してなかったので、いろいろと修正済んだのと一緒に
公開したいなあとは思ってます。



以下、コメントお返事です。

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

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


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

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

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

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

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



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

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

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

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

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

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



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

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

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

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

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

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

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

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



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

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

そういう意味では、またひとつ賢くなれたと気がします。

お返事

コメントやメールへのお返事です。

> くろくろ(・ω・) さん
確認してみたところ、確かに使いづらいですね・・・。
「シフトキーではどんどんスキップするけど、
 決定キーでは最後まで表示するだけで次のページには進まない」
ってのが私の想定していたものなので、そんな感じには修正したいと思います。
意見ありがとうございます。



> がっちゃん さん
こちらで返答させていただきます。
報告ありがとうございます。
許可は出していますし、ここでも紹介しているので大丈夫ですよ。



> 創々帽子 さん
サイトのほう、見させていただきました。
これから新たにフリーゲームの紹介サイト開設するってすごいことですね!
しかし、果たして公開し終わった作品を今更貼るのもなんか変だし、
そもそも他の紹介サイトさんに登録した後もあまり見に行ってなかったりと、
少々登録は悩んでます。
また何か作品が出来たら、ぜひ使わせていただこうと思います。

とりあえずURL つ http://tktknet-renka.sqale.jp/

Appendix

プロフィール

木星ペンギン

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

ゲーム

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

メールフォーム

wood_penguin@yahoo.co.jp

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