Appendix

広告

Entries

プラグインの更新

下記のプラグインを更新しました。

ミニマップ標示 マッピング

ご報告いただいた「ロード時にマッピング情報がクリアされてしまう不具合」を修正しました。

配列に新しい変数つけても、セーブデータに保存されないんですね。

JavaScriptって便利だなあとか思ってましたが、さすがにこれはやってはいけないようでした。



いつぞやの話の続きで、「マッピング」プラグインを作る際、
移植ではなくちょっと特殊なスクリプトを組んだのでそのお話。

マッピングの移植自体は結構簡単にできました。
(マップが切り換えれる機能に対応するのにちょっと躓いたくらい)

が、実際に動作させてみると処理がすごく重い

PCで動作させててもフレームレートの低下が感じるくらいだったので
スマホとかではさらにひどいことになりそうなので、対策は必須でした。


実際、マッピングはかなり面倒な処理をしています。


まず、元々のミニマップ描写自体がこんな感じ。
170210b.jpg
元の画像を4倍にした画像を別に作ることで、マップのループに対応しています。

この場合、画像Aだけでなく画像Bも保持しておかなくてはならないため、メモリを多く消費します。

その代わり、処理は軽いです。


が、マッピングの場合はこれが処理を重くする原因になってます。

マッピングプラグインは歩いてマップを書き換えるたびに、
マッピングされた画像を4倍にする処理を行っています。

VXAceでは気にならない程度でしたが、MVでこれは重い処理のようです。


というわけでこれに対処するため、以下のような構造に変更。
170210c.jpg
正確には、何も表示しない親スプライト1つと、画像を表示する4つの子スプライトを使ってます。

スプライトの数が増えた分、処理はちょっと重くなりますが、4倍にする作業が発生しません。

さらには画像Bも必要ないため、メモリを食いません。



でも言うは易し、4つのスプライトを一つの画像のように扱うのは計算式が大変。

拡大縮小、原点移動など、対応しなければいけないことが山ほどあります。

VXAce版を作る際もこの構想はあったのですが、手間がかかりすぎるということでやめたくらいです。



なので処理が重いまま諦めようかと思ったのですが、
ふとスプライトの構造を見て簡単に解決できることに気づきました。

上にもちょっと出てますが、MVのスプライトには親子関係というものがあります。

そして、「子は親の拡大率、不透明度、原点位置等が反映される」
という特徴があります。

つまりは諦めていた理由のほとんどが親子関係を作るだけで解決するのです。


そして唯一対応しなければならないのが表示範囲ですが、これもあっさりと解決。

Spriteクラスを見ていたら_refreshメソッド内で必要な計算のほとんどが行われており、
ここをちょっと改変するだけで対応できてしまいました。



MVになって面倒になったと感じることが多かったのですが、
めずらしく楽ができたというお話。

もし、ループする画像を作りたい方がいたら、これを参考に作ってみてください。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://woodpenguin.blog.fc2.com/tb.php/250-1b6f2725

トラックバック

コメント

[C275]

いつもお世話になっております。
頭中下層です。

返信が遅くなってしまい申し訳ございません。
無事動作を確認できました。
今回は本当にありがとうございました。
  • 2017-02-14 16:29
  • 頭中下層
  • URL
  • 編集

コメントの投稿

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

Appendix

プロフィール

木星ペンギン

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

ゲーム

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

メールフォーム

wood_penguin@yahoo.co.jp

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