開発日誌

すべての記事

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] [ ツクール情報 ] ステート相殺の不具合

2012-07-01 21:13:46

天下御免!からくり屋敷』のデバッグ作業中に、RPGツクールVXのプリセットスクリプトの不具合と思われる部分を発見しました。

戦闘中、防御力など変化していないのに、なぜか「防御力が元に戻った!」というメッセージが表示されるという現象に悩まされていたのですが、その原因がVXのプリセットスクリプトの不具合にあるらしいことが判明しました。Game_Battlerクラスのadd_stateメソッドで、ステートが相殺された場合にも、自然解除のターン数が設定されてしまっているのは、おかしいですね。新規プロジェクトで試してみても、同様の現象が起きました。

ちょっと検索してみた限りでは、あまり話題になっていない模様ですね。ただ、話題が皆無ではなかったので、不具合には違いないのでしょう。Scene_Battleクラスのremove_states_autoモジュールを見ると、実際のステートに変化が起きない場合は、ステート解除のメッセージが表示されることはないため、簡単にはこの不具合が発覚しないようですし、余計なメッセージが表示される以外には特に実害がないので、放置されているのでしょうか…。

というわけで、修正するスクリプトを作ってみました。Game_Battlerクラスのadd_stateメソッドに追加定義していますので、ここに手を加えている場合は競合に注意してください。

一応、能力値の上昇・低下に関わるステート相殺では、上手く動いている模様ですが、綿密なテストは行っていないので、いろいろな形でステートの相殺を応用しているような場合に、不備があるかもしれません。もし上手く動かないような場合には、コメント欄等にてご報告いただけると、ありがたいです。

[ 天下御免!からくり屋敷 ] カットインを作ってみた

2012-06-30 14:26:47

制作が長期化している『天下御免!からくり屋敷』も、基本的な部分はほぼ出来上がり、あとは演出効果やバランス調整、デバッグ作業などに取りかかっています。

一部の方術で、カットインのメッセージが出るようにしてみました。

最初は特に作る予定もなかったのですが、田沼意次による田沼意次のための技にしては、どうにも寂しかったので。

カットインメッセージと言いながら、実は単なるアニメーションです。普通のメッセージのスクリーンショットを切り貼りして、アニメーション画像に仕立て上げました。スキル発動前にコモンイベントを呼び出すようなスクリプトでも良かったのですが、けっこういじる範囲が広そうで面倒だったので…。アニメーションで作るのも、それはそれで面倒なのですが、アニメーションのフレームレートは通常の1/4の15fpsで、4文字につき1画像用意すれば十分なため、何とかなりましたよ。

あとは、デバッグ作業がなぁ…。付け焼き刃的にいろいろスクリプトを拡張してきたので、特定の条件下で発動するバグというのが、けっこう潜んでいる模様です。

[ 天下御免!からくり屋敷 ] 預かり所ができた

2012-06-19 23:33:47

こんな時期に台風なんて珍しいですね。8時過ぎくらいから雨風共に激しくなって、道路標識や街路樹が折れるんじゃないかと思うほど、猛烈な風が時々吹いているんですが、ニュースによるとまだこれからがピークだそうで…。去年みたいに、帰宅ラッシュ時直撃でないのが幸いですが。

まあ、そんな中で、『天下御免!からくり屋敷』の進捗状況を。メインは一通りできたので、後回しにしていたシステム類を作り込んでいます。

今回できたのは、当面は使わない道具や装備品を預かってくれる、預かり所。思い浮かぶのに任せて、300を超えるアイテムを作ってしまったため、このままだと道具欄が大変なことになってしまいます。そんなわけで、預かり所を設けました。最初から利用できるわけではなく、一定の条件を満たすと出現し、あるクエストをこなすと、利用できるようになります。

インターフェイスに悩みました。本当は、もっと道具の出し入れが手軽にできるようなUIにしようかとも考えたのですが、操作方法がかえって複雑になってしまってもアレですし、他のお店などのレイアウトと違いすぎても混乱のもとなので、ごく単純なものにしました。やや使い勝手は悪いですが、まあそれほど頻繁に使うものでもないので、特に説明せずとも使えるシンプルさを優先しました。

他に、スクリプトをいじるような大がかりなシステムは、いわゆる敵からドロップアイテムを奪うようなシステムが残っています。あとは、主にイベントのメッセージが残っていますが、これはこれで面倒だな…。

[ 天下御免!からくり屋敷 ] エンディングには来たけれど

2012-06-14 00:25:58

2〜3ヶ月で作れるもの、というつもりで作り始めた『天下御免!からくり屋敷』。作り始めてから、なぜかもう8ヶ月も経っています…。が、ようやくエンディングまで制作が到達しました!

とはいえ、まだメッセージなどは全部出来上がっていないし、他にも後回しにしているイベントやアイテムなどもあるので、完成するのはもう少し先になりそうです。体験版の公開までに作るべきことをリストアップしてみたら、まだけっこうな数が残っていやがるぜ…。

[ 天下御免!からくり屋敷 ] [ テクニック ] 今週のハマり

2012-06-07 21:50:47

怒濤の日々が過ぎ、ようやく少し落ち着いたので、『天下御免!からくり屋敷』の制作を再開しました。

が、再開早々、バグに悩まされました。

蘇生魔法を使ってくる敵が出てくるのですが、生き返った敵のグラフィックが、なぜか表示されないという問題が…。気配はあれど、姿は見えず。攻撃でダメージを与えると、ようやく姿を現します。

エネミーの表示関係は特に手を着けていないはずなのに、おかしいなと思っていろいろスクリプトを追ってみたところ、ようやく原因が判明しました。

  • Sprite_Battlerで、ダメージを受けた際に、20フレーム間、点滅エフェクトがかかる。
  • @effect_duration変数で、19から0までカウントダウンしている。
  • 点滅エフェクトを実装しているupdate_blinkメソッドでは、
    self.visible = (@effect_duration % 10 < 5)
    となっており、@effect_duration変数の下1桁が0〜4の時に表示、5〜9の時に非表示となる仕組み。
  • ところで、戦闘高速化を施したため、ダメージを受けた際のウェイトを、30フレームから半分の15フレームにしていた。(Scene_Battleのdisplay_hp_damageメソッド)
  • このため、点滅エフェクトの20フレームのうち、15フレーム目、すなわちvisibleが非表示の状態で、崩壊エフェクトに移ってしまう。

こんなの、そう簡単には気付かないよ!

というわけで、ダメージを受けた際のウェイトは20フレーム以上確保するか、あるいは出現エフェクトを実装しているSprite_Battlerのupdate_appearメソッドに、self.visible = trueを入れるかすればOKのようです。とりあえず、後者で修正しましたが、戦闘高速化もたまに高速すぎて、何が起こったのか把握できないことがあるため、ウェイトの値を一律半分にしている現在の高速化方法は、見直した方がいいのかも。