神無月サスケの波瀾万丈な日常

神無月サスケのツイッター(@ktakaki00)を補完する長文を書きます。

僕が今年やらかしたプラグインのバグ告白

この記事について

この記事は、ツクールアドベントカレンダー2022の1日目の記事になります。
adventar.org
ツクールフォーラムにて、告知されています。
forum.tkool.jp

はじめに

今年もいろんなプラグインを作ったり、改良したりしてきました。
しかし、主要な機能をもつプラグインは、他の方が既に作っていたりして、
今年は去年ほど、特筆するプラグインを新規に作っていません。

新規に作ったプラグインのほとんどは、ツクールフォーラムで、
ニッチな要望に応える物で、あんまり汎用性がありません。
既存のプラグインに修正を施すことが多かったのですが、
その中で一番多かったのが「バグ修正要求」。

プログラムにバグはつきもの、とは良く言いますが、
僕の想定していない環境での使用、チェック不足、
コアスクリプトの理解不足など、
様々な理由で、バグ報告が多数来て、その度に修正を行いました。

バグの中には「確かにそれでは仕方ない」という
プラグイン競合関係のものもありますが、
中には、自分がドジゆえにやらかしたバグも多数あります。

今回、今年僕のプラグインで報告があったバグについて、紹介していきます。
恐らく、これを読めば、僕がいかにドジかが分かると思います

おことわり

最初に断っておきますが、今回紹介するのは
「バグ修正ゆえのアップデート」のみで
機能追加や改変などのアップデートについては扱いません。

■ScreenZoom.js

プレイヤーや特定のイベントを中心に、画面をズームアップするプラグインです。

最新版

ロンチプラグイン。MZ Ver1.6.0添付の物が最新版。下記からもDL可能
forum.tkool.jp

今年やらかしたバグ(ドジ度:★☆☆☆☆)

途中でフェードアウトを行った際、ピクチャが表示されたままになっていた

その他の修正済バグ(2021年までの修正)

  • ズーム中にメニューや戦闘が行われた際、マップに戻るとズームが維持されなかった
  • ズーム中にセーブしてロードすると、ズームが維持されなかった

雑感

もともと、イベントでの一時的なズームのみを想定していたので、
そういう使われ方をするのを、全く想定していなかった。
だから仕方ないといえば仕方ないのだが……。

■ChangeEquipOnBattleMZ.js

戦闘コマンドに装備変更を追加するプラグインです。

最新版

ロンチプラグイン。[Ver1.2.5]
forum.tkool.jp

今年やらかしたバグ(ドジ度:★★★★☆)

その他の修正済バグ(2021年までの修正)

  • 装備変更でスキルタイプが変化した時、アクターコマンドに反映されなかった
  • 画面サイズを変更した時レイアウトが崩れていた
  • 装備変更ウィンドウを閉じると、アクターコマンドが非選択になっていた
  • 装備変更時、ヘルプウィンドウが表示されていなかった

雑感

バグ修正依頼が今年最も多かったプラグインだが、それ以前も、
とにかくバグ修正依頼の嵐。単純なバグだけでなく、
見つかりにくいケースのバグ(例:装備によるスキルタイプ変更)もあり、
戦闘でのダイナミックな状況に装備変更を対応させるのがいかに困難か痛感。

雑感2

MV版の ChangeWeaponOnBattle.js は、全く修正依頼がなかった。
MZ版でバグ報告が相次いだのは、何故? 利用者数の増加かな。

■VeryFastBattleMZ.js

戦闘で特定のキーを押している間、超高速化するプラグインです。

最新版:[Ver1.1.0]

forum.tkool.jp

今年やらかしたバグ(ドジ度:★★★★☆)

雑感

確かにこのプラグイン、えいやっと気合で作ったもので、
深く考察してなかったから、本格運用する人がいるとバグが出て当然だった。

■AltMenuScreen2MZ.js

メニュー画面のレイアウトを変更するプラグインです。

最新版

ロンチプラグイン。最新版は[Ver1.4.0]
forum.tkool.jp

今年やらかしたバグ(ドジ度:★★★☆☆)

その他の修正済バグ(2021年までの修正)

  • 色んなシーンで、ゲージが長くなりすぎるのを修正した

雑感

画面サイズの変更が自由に可能になったため、
それを考慮したレイアウトにするのは、コアスクリプトでは熟考されていたが
自分で作るとなると、どうしてもそれが考慮不足だったのは否めない。
やはり自由度が高い分、プラグイン作成の負担もでかくなります。

■SkillTypeLib.js

特定条件下でのみ表示されるスキルタイプを設定可能にするプラグインです。

最新版:[Ver1.1.0]

forum.tkool.jp

今年やらかしたバグ(ドジ度:★★★★★)

解説

この不具合は、スキルタイプIDを数字になおさず、
文字のまま処理していたことに起因します。
なんでこんな変な実装したのか
当時の自分を問い詰めたい気持ちで一杯でした。ドジすぎ。

旧バージョンが気になる人は、サンプルゲーム「ルイーゼと秘密の地下室」に
入っているので、見てください。

■SVActorPositionMZ.js

サイドビュー戦闘での各アクターの画面表示位置を設定するプラグインです。

最新版

ロンチプラグイン。最新版は[Ver1.1.5]
forum.tkool.jp

今年やらかしたバグ(ドジ度:★★★★★)

解説

アクターの表示優先度がおかしかったことの修正は、
一度修正するとエンバグ、それを直してもさらにエンバグ……と
エンバグが繰り返され、
何と5回も修正しています。完全に恥さらしです。

■BattleVoiceMZ.js

アクターや一部敵キャラの戦闘中の行動にボイスを割り当てるプラグインです。

最新版

ロンチプラグイン。最新版は[Ver1.15.0]
forum.tkool.jp

今年やらかしたバグ(ドジ度:★★★☆☆)

  • https://forum.tkool.jp/index.php?threads/5671/
    • 複数のボイスが同時に再生されて不自然なケースが多数あった。例えば……
      • HPとMP、双方を回復するスキルを受けると、被回復ボイスが2回再生されていた
      • 毒攻撃のようなのを受けた時、被ダメと被ステートの双方が再生されていた。この場合、被ダメのみを再生するようにした
    • 攻撃回避時のボイスが、敵が攻撃をミスした時には再生されなかった
    • 戦闘開始時、戦闘に参加しないアクターの声が再生されることがあった
      • どうやら開始直後は、まだ戦闘ではない($gameParty.inBattle()false)と見做されているのが原因だった。いやはや、コアスクリプトは奥が深い(言い訳)。
    • 敵からHPを吸収した際、同時に味方からの回復ボイスが同時再生されていた
      • これも、修正→エンバグ→さらに修正→……、が繰り返された
    • その他ケアレスミス多数

雑感

このプラグインは使用者も多く、要望も多いです。大半に対応してきたため、
かなりシチュエーションや特徴が多くなってきたが、
必然的にバグも多く出ることに。
特に、複数のボイスが同時再生されるバグが激増しています。
今後も地道にいくので、お使いの方は、見つけ次第、ご報告くださいね。

おわりに

いかがでしたでしょうか。
良く使われるプラグインでの報告が非常に多いですが
これらのバグは、「たまたまユーザーさんが発見したもの」に留まっており
まだまだ未知のバグが眠っている可能性が高いです。

特に、あまり使われていないプラグインや、あまり使われなてない機能に
まだまだ地雷はひそんでいそうです。

しかし、今回紹介した分だけでも、皆さんは僕のドジに気づいたかもしれません。
特に「バグを修正したけれど、それが別のバグを引き起こした」という、
いわゆるエンバグが非常に多いからです。

一体何年エンジニアやっているんだ、って自分でもツッコみたくなります。

ですので、今後も皆さんが僕のプラグインで、バグを見つけたら、
報告してくれると助かります。僕は、これだけドジなのですから。

最後に、とある方の格言を記して、締めます。
「バグを憎んではならない。バグはあなたの分身だからである」