FC2ブログ

Appendix

広告

ゲーム

Entries

プラグインの更新とその解説、そしてメールへの返答

そういえばツクールMVのバージョン1.6.1がようやく正式に公開されたようです。

かなり根本的な部分の変更がされています。
バージョンアップした後は、ヘルプをよく見て既存のゲームのJavaScript等もしっかりと更新するようにしましょう。



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

隠し通路
ミニマップ標示

●隠し通路
プレイヤーの高さ的なものを変更できる機能を追加しました。
"的なもの"であり、実際に高さが変わるわけではありません。

今までは「設定したリージョンIDのタイルがプレイヤーより上に表示」されていましたが、
ver.2.0より「設定したリージョンIDであり、かつプレイヤーのZ座標より大きいリージョンIDのタイルを
プレイヤーより上に表示
」させるようになりました。

要は橋の下をくぐった後に上を通るようなことが可能になった感じです。



●ミニマップ標示
全スプライトより上に表示する機能を追加しました。
ほとんどの方には関係ない機能です。

今回、MBS - FPLE MVという3Dダンジョンプラグインと併用するとミニマップが表示されないので
出来たら表示されるようにしてほしいと要望があったので対応してみました。


詳しく解説です。

今までのミニマップはSpriteset_Mapクラス内で生成されてました。

このクラスは、マップ画面で表示されるスプライトをまとめて管理するクラスです。

主にマップとかキャラクターとかピクチャなど、画面に表示される画像はすべてこのクラスです。

画面に表示されるものでこのクラス外のものは、
ウィンドウ関連とフェードアウト(画面暗転)くらいなものです。

当然、ミニマップもこのクラスで表示させていたわけですが、
今回競合が起こっていたMBS - FPLE MVではこのクラスを使っていません。
(3Dダンジョンなので通常のマップ画面は必要ない)

で、どう対応したかというと、Spriteset_Map外で生成し、
それからSpriteset_Map内へ入れるという方法にしました。

そしてプラグインパラメータ次第でSpriteset_Mapに入れず、
ウィンドウ等と同じように表示させることで競合を回避することができました。


今回、私の方でMBS - FPLE MVができなかったため、自分で動作確認ができなかったのが
大変でした。
何とかなるものですね。



頂いたメールお返事です。
いつもならメールにはメールで対応してますが、今回はこっちで返答です。

「文章の表示拡張」プラグインの不具合報告をいただきました。
内容はこちらでも確認したので、近いうちに修正したいと思います。

ご報告ありがとうございました。

...続きを読む

プラグインの更新とセーブデータについて

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

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

ご報告いただいた個所を修正しました。
半透明色の合成方法に不備があったので変更です。

不透明なマップだと特に目立つようです。
半透明マップだとあまりわからないような違いです。



ここからはスクリプトに関する日記です。

私が現在作っているゲームはいろいろとこだわった部分があるのですが、
その一つにセーブデータの容量があります。

アツマールだとブロック単位になってますが、あれはおそらく5KB毎に1ブロックではないかと思います。
(大雑把な計測しかしてないです)
たいていのツクールMVのゲームが1ファイル20~30KBなので、だいたい5~6ブロックとなります。


で、今作っているゲームはいろいろと頑張って
数KBまで軽量化することに成功しました!
アツマールだと1~2ブロックで済みます。
これでセーブデータをたくさん作っても大丈夫!


今日はそれをどうやったのかという日記です。

一応先に書いておきますが、プラグイン素材としての配布はほぼ無理です。
軽量化というのは、自分のゲームに必要ないデータを削って実現したにすぎません。
なので軽量化の方法はゲームによって変わります。
細かな仕様を理解してないと削れないデータもあります。
なので、今回の日記を見て、自分でデータの軽量化を行ってもらうしかありません。

というわけで、ここからはセーブデータに含まれる内容とそれを削ったらどうなるかを書いていきます。


● $gameSystem
名前の通り、全体的なシステムに関するデータを扱うクラスです。
これ以降のクラスがそれぞれに特化したものを扱っているとしたら、これはそれ以外を扱っています。
なので、まず削れません。
それに削っても大した容量ではないです。


● $gameScreen
画面に関するクラスです。
色調変更・画面のシェイク・天候・ピクチャといったイベントコマンドの処理を行っています。
よってこれらをセーブデータに含める必要がなければ削れます
とはいっても大した容量ではないです。


● $gameTimer
タイマーを扱うクラスです。
現在のタイマーの時間を保存する必要がなければ削れます
というか、タイマー使ったゲームすらほとんど見ないですけどね。
これも大した容量ではないです。


● $gameSwitches / $gameVariables
スイッチと変数を扱ったクラスです。
当然ながら、まず削れません
中には「変数しか使わないからスイッチはいらない」という方がいるかもしれないって程度です。
これらはゲーム後半になるほど容量が増えていきます。
結局、スイッチ使ってなくてもその分変数使ったら似たようなもんです。


● $gameSelfSwitches
セルフスイッチを扱うクラスです。
使わない人は削れます
私も削ろうかと思ったのですが、ふと1・2か所どこかで使ったなあと気づき、
でもどこで使ったのか正確には思い出せなかったので仕方なく残すこととなりました。
これらはゲーム後半になるほど容量が増えていきます。
ついでに言うと、普通のスイッチよりちょっと容量多いかもしれません。(誤差だと思うけど)


● $gameActors
アクターを扱うクラスです。
まず削れません
が、私はちょっと変わった方法で軽量化しています。
メインキャラ以外は一度くらいしかメンバーに加わらないので、
パーティから離脱した時点でそのキャラのデータを削除しています
レベルアップもないので、再度加入するときに初期化されても問題ありません。
アクターはそこそこ容量食うので少ないに越したことはありません。

それ以外にもGame_ActionResultクラスをセーブデータに含まないということもやっています。
これはスキルなどを使った際にどんな効果があったかを入れるクラスです。
これをセーブする直前に削除し、セーブが終わったら再度作成とやっています。
とはいってもこれはあまり大きな効果ありませんでしたけど・・・


● $gameParty
パーティに関するクラスです。
現在の編成、所持金、所持アイテムなど、まず削れないデータが含まれています。


● $gameMap
マップに関するデータを扱っているクラスです。
現在のマップID・イベント・乗り物・遠景等、マップに関することほとんど入ってます。
全てを削るのは難しいですが、一部分なら削っていくことができます

当然ながら、これがセーブデータの大部分を占めています。
そして私のゲームではこれを丸ごと削ってます。
いろいろと工夫して、現在のマップの情報を必要としないゲームにしました。
これはさすがに仕様を理解していないとできません。

で、簡単に削れるものと言えば、乗り物のデータです。
乗り物がないゲームであれば当然削れます。
が、これはGame_Mapクラスを変更するしかありません。

ちなみにこのクラスの中で容量の大部分を占めているのがイベントです。
マップに配置されているイベントにはそれぞれ、現在の位置・向き・移動速度・頻度・パターン・グラフィック名・歩行アニメ・足踏みアニメ・向き固定・すり抜け・移動ルート・現在表示されているページ等々、多くのデータが含まれています。
これがイベントの数だけ存在するわけですから、
現在のマップに配置されているイベントの数が多いほど、
セーブデータの容量が増す
わけです。


● $gamePlayer
最後にプレイヤーの情報を扱うクラスです。
イベントと似たクラスなので、プレイヤーの現在の位置・向きといった様々な情報 +
現在乗ってる乗り物・場所移動・フォロワーといった情報が含まれています。

この中で重いと言ったらフォロワー(後ろについてくる人たち)かと思います。
プレイヤーと合わせて4人分のイベントが存在していると思えば、なんとなくわかるかと思います。

ちなみにこのフォロワーは[隊列歩行]をOFFにしても、透明なキャラが付いてきているので何も変わりません。



というわけでセーブデータの軽量化に関する日記でした。
正直、簡単に削れるものは効果が薄いです。
そうなってくるともういっそのこと「セーブデータの容量なんてどうでもいいや!」と
割り切るべきかもしれませんね。

...続きを読む

たまにはスクリプトの話

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

ミニマップ標示

不具合修正は大したものではないです。
不具合報告がなかったということは、誰も気づかなかったような内容です。

このプラグインは後からいろいろと機能を付け足していったため、
ヘルプが非常に分かりにくくなっていたのでそれをまとめてみました。

今見ていると、無駄な機能が多いようにも感じます。
今更変えれませんが…



久し振りにスクリプトの話でも。

以前、制作中のゲームのスクリーンショットを張りましたが、
180511.jpg

かばう」が発動したらかばった対象の前に移動するスクリプトを組んでみました。


これ、単純なようで結構めんどくさいスクリプトが必要だったりします。

かばった際に、当然アニメーションもかばうを行った対象に表示されなければ不自然です。
(デフォルトではかばわれた対象のみアニメーションが表示されてますが)

それがなかなかのネックでして・・・


VXAceまでは、戦闘の大まかな流れはBattleManagerというクラス(モジュール)で処理されてました。
誰が行動するかとか、ダメージ判定やアニメーションを行うタイミング等はすべてこのクラスが行います。

が、MVになってアニメーションはなぜか戦闘ログウィンドウが行うようになってしまったのです。

さらにはかばう判定が行われるのが、対象にダメージ判定を行う直前であり、
アニメーションが表示し終わった後という仕様もあったりします。

つまりは、「かばう」を使ったキャラにアニメーションを表示するためには、
アニメーションの表示処理を行う前にかばう判定をしつつ、
戦闘ログウィンドウのアニメーション表示にのみ影響を与えないといけないという
非常に厄介な修正なわけです。


で、どうしたかというと大幅な修正を加え、VXAceのようにBattleManagerクラスで
アニメーション表示を行うようにしました。

自作ゲームだからこそできる力技です。



こういうキャラの動きに関するものをまとめたプラグインも作りたいなあとは思ているのですが、
今書いたように修正が大きく競合が発生しやすいというリスクがあります。

下手に出して「競合が起こりました」と言われるのも面倒ですしね。

なんとか競合が起こりにくい仕様にできたら出したいとは思ってます。


・・・結局はただの日記ですね。



そしてそれとは別に新プラグイン作ってます。

もう新しいプラグイン作りたくて仕方がない!

ゲーム制作の息抜きにつくったプラグインですが、なかなか気に入ってます。

以前アクティブタイムバトルで、「行動するキャラの渋滞が起きやすい」との意見もありましたが、
それをだいぶ軽減できそうです。

詳細はまた今度。

...続きを読む

先日公開した「プラグイン詰め合わせ」について

先日公開した、プラグインを詰め合わせたサンプルプロジェクトですが、
まずはプレイしていただきありがとうございます。

いやはや、まさか画像入れ忘れとかなぜMVでそんなミスするのか
不思議に思われそうなほどの凡ミスしてたのはほんと申し訳ないです。

ゲーム内のコメントも見させていただいてます。
率直な感想や不具合報告、ありがたいです。


さて、肝心のキャラクターメイクプラグインですが、
やはり動作のおかしい部分があるようですね。

私もプレイしていて、キャラクターの色がおかしい不具合が何度か発生しました。

それから私は確認できてませんが、特定のパーツが表示されない不具合などもあるようです。

もう公開できるだろうと思っていたのに、まだまだ調整が必要そうですね・・・



さて、今回キャラクターメイクでどんな処理やってるのかというお話。
上記の不具合の原因かもしれない部分です。


主な不具合の原因は、画像の読み込み関係かと思われます。

通常、画像を表示する場合、

 画像の読み込み開始 → 読み込み完了したら描写

という処理を行っています。

以前のツクールでは、ゲームをすべてダウンロードする方式だったので、
この読み込み時間というものがありません。

ツクールMVはこのウェイトを考慮する必要があるため、スクリプトが複雑です。



で、キャラクターメイクはというと、

 全てのパーツの画像の読み込み開始 → 全ての画像を読み込んだら重ね合わせ開始 →
 重ね合わせ完了したら描写


と、読み込む画像が多いうえに一段階処理が多く、スクリプトはかなり複雑です。


それが製作に時間かかった理由ですが、今回の不具合は「読み込む画像が多い」ことと
「処理が多いことによるウェイトの長さ」が原因のようです。


「読み込む画像が多い」・・・当然、メモリを圧迫します。

キャッシュにも上限があるので、上限を超えれば古い画像から消えていきます。

キャラクターの一人や二人問題ありません。

しかし、4人同時に読み込み開始すると、4人目のキャラクター生成中に
1人目のキャラクターのパーツが消される可能性があるわけです。

「処理が多いことによるウェイトの長さ」がある分、同時に処理が起こりやすいわけです。


さてどうしようか・・・(汗


一人ずつの処理が一番の解決ですが、ロード時間がわずかに伸びるのが悩みです。

ただでさえちょっと長めなのにねえ・・・



なんにせよ、大きな改変が必要なため、プラグイン公開までまだ時間がかかりそうです。

うーむ残念だ。

...続きを読む

キャラクターメイク進捗状況

先々週スクリーンショット張った時点でもろばれでしたが、
ツクールMV版【キャラクターメイク】プラグイン作ってます。

170623a.jpg
ようやく色変更できるようになりました。

170623b.jpg
しかも、細かく色指定ができます。
何気にツクールMVのキャラクター生成より高性能!



ただ、やっぱり色変更を行うとグラフィック生成に時間かかりますね。

とりあえず、ブラウザでテストプレイした限り、約1秒といったところ。

とはいっても、顔グラ、歩行グラ、戦闘グラの合計であり、そのうち半分以上が戦闘グラです。

これ以上の軽量化は難しいので、これが許せる人向けですね。



VXAce版も似たようなスクリプトはありましたが、中身はだいぶ違います。

今回はキャラクター生成のみで、名前変更や職業変更などの機能はありません。

まあ、そのあたりは自作していただくということで。


めんどくさいデータベースの設定もありません。

フォルダ内のファイルを自動で読み込んでリストを作るので、
パーツを追加すれば使用できるパーツが増えます。


装備変更によるグラフィック変更には対応予定。


完成度80%といったところですが、肝心のスマホでのテストプレイにまだ手を付けていないので
そこでどれだけ躓くかといったところ・・・

...続きを読む

Appendix

プロフィール

木星ペンギン

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

ゲーム

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

メールフォーム

wood_penguin@yahoo.co.jp

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