見出し画像

【ゲ制日誌】戦闘パートの再現性低いバグとバトルした

ティラノスクリプトは基本的に重く、安定性がなくバグりやすい。ただし実装をちゃんとすれば避けられなくもなく、「甘い実装ゼッタイ許さないマン」というのが現状の印象。


そんなこんなで────1年以上戦いつづけたバグが、今日ようやく解決した(たぶん)。


そのバグは「サブルーチンに飛ぶ効果音つきAPNGボタンを押すとたまにスクリプトがすっ飛ぶ」というもの。どこのスクリプトに飛ぶかは遅延次第で、ゲームが止まったり動画背景が再生されたりめちゃくちゃ。


▼ ちゃんと動いてる時はこうなる



解決策については、あまりに多くのことを試したので「これだけ」というのはないけれど、おそらくクリティカルな治療薬だったのは「戦闘素材のプリロード」。


原因の仮説は、「なんらかの影響でPCやティラノが重くなったとき、APNGや効果音の読みこみで遅延が生じてスクリプトの処理順がめちゃくちゃになる」というもの。非常に再現性の低いバグで、「初回起動時やPCが重い時にごくたまにバグる」くらいだった。でも進行不能系バグなので絶対に潰さないといけない。


前に何度かプリロードは試していたものの、おそらく記述方法がまちがっていた。

;※最後行のカンマは外さないとエラーになるらしい
;※パスは「./」からはじめないといけないらしい
[iscript]
	f.preload_images = [
	"./data/fgimage/chara/kaeru/normal.png", 
	"./data/image/boss/boss_cut.png",
	"./data/image/boss/life_enemy.png",
	"./data/image/boss/life_enemyb.png",
	"./data/image/boss/zan_murasaki.png",
	"./data/image/boss/qte_yami.png",
	"./data/image/boss/combo_text.png",
	"./data/image/boss/combo.png",
	"./data/sound/battle/button_count.ogg",
	"./data/sound/battle/suzu.ogg",
	"./data/sound/battle/zuburi.ogg"
	];
[endscript]
[preload storage="&f.preload_images" wait="true"]



first.ksで上記のようにpreloadした。前回は「./」からはじめなかったのと、最終行に「,」を加えていたからおかしかったのかもしれない。


あらかじめ戦闘素材をプリロードした結果、ボタンのバグに遭遇しなくなった。ゲームを何度も起動しなおしたり、PCを意図的に重くしても遭遇しなくなったので、完全消滅かはともかく「許容範囲」にはなったとおもう。


ティラノスクリプトは「非同期処理」ということを本当によく気をつけないと、すこし重くなるだけでバグる。しかも「たまに」だからタチが悪い。一見してカンタンなものの、安定性も高速性も乏しくなかなかにピーキーなツールだとおもう。


願わくば、新機能や新サービスうんぬんより、とにかくまず高速性と安定性が強化されてほしい。ティラノの「カンタンさ」で、もっと派手な演出がしたい。



なんやかんや言ってるけど、Unityや他ツールという選択肢は今のところない。あまりにもティラノに学習コストかけちゃったから、今さら後に引けないというのがデカい。コンコルド効果。


Steamで公開するのが今の夢。


正直コンシューマ(Switchのインディーゲーム枠)も目標として魅力的だなぁとおもうけど、自分の技術力じゃまだムリで、ティラノ製じゃなおさらムリだろうなとおもってる。Unityの宴でさえコンシューマ対応は厳しいというし、コンシューマはどんだけハードル高いんだよと。


とにかく今は、Steam一直線。


バグにキレながら、イイものを作っていきたい。

この記事が気に入ったらサポートをしてみませんか?