ティラノスクリプト×Live2D、不具合との戦い
Live2Dは、以前手を出したことがあり、その時は挫折しました。
今回再挑戦して、前回制作したフリーゲームをLIve2Dで作り直したはいいけど、これがエラーの連続……。
なんとか公開できたものの、いつ何時不具合発生するか分からないビクビク状態です。
もちろん、公開申請前にデバックはしました。が、このエラー、起きる時と起きない時があって、正直もう「わっかんねー」状態。
発生した不具合とその対策をまとめておきます(私の環境だけかもしれないけど)。
スクリプトに明るくないので、対策として適しているかどうか不明ですが、とりあえず動くようにはなりました。
Live2Dモデルが表示されない
この不具合が最も多かったです。
ティラノスクリプトの公式サイトにLive2Dプラグインがあるので、プラグインを使えば、表示はされます。
問題は、セーブ・ロード後に、ゲームを再開する場合。
ロードすると、Live2Dモデルが表示されないことが多々ありました。メーセージウインドウは表示されて、モデルだけがいない。
デバックで「コンソール」を見ても、エラー表示なしか、もしくは render エラーです。描画段階の不具合??
厄介な事に、この不具合は、セーブしないで続けてプレイしていれば、発生しません。また、セーブしてもタイトル画面に戻ってからロードすると、発生しません。
タイトル画面に戻らずセーブ+ロードをした場合に、起こります。
■対策パターン1■
[live2d_delete_all] タグで、Live2Dモデルを削除。その後 [live2d_new]、[live2d_show] で再定義し表示させる
ただし、注意点があります。[live2d_delete_all] は、直前に置かないと効果がない様子。たとえば、
これだと、シーン3で、再定義しているにも関わらず、モデルが表示されません。シーン2の最後に [live2d_delete_all] を持ってくると、表示されるようになりました。
[live2d_hide] を入れたのが悪かったのか、はたまた [cm] タグを挟んだせいで、そうなったのか……。
ちなみに、[live2d_hide] で「ハル」を退場させ、[live2d_delete_all] で削除した後、別モデルを [live2d_new] [live2d_show] しても、同様です。
中間にモデル不在のシーンがあると、次のシーンで表示されません。
■対策パターン2■
[live2d_fadeout] を使ったら、必ず [live2d_fadein] を使う
ティラノスクリプトの公式サイトにも、「明示的に[live2d_fadein]するまでモデルが表示されませんのでご注意ください」と記述があります。
フェードインが必要でなくても、 [live2d_fadein] を置かないと、モデルは表示されません。うっかり忘れて、普通に [live2d_show] だけしたら、アウト。
私は、何度もこれをやらかしました。
■対策パターン3■
[image] は、[freeimage] ではなく、[free name=〇〇] で消す
これも落とし穴。[image] タグの画像を [freeimage] で消すと、Live2Dモデルも消えてしまいます。
Live2Dモデルがどのレイヤに属するのか分からないけど、[freeimage layer="0"] だと確実に消えます。
不要の image画像は、[free name=〇〇 layer="0"] のようにして消せば、Live2Dモデルは影響を受けません。
画面がフリーズする
Live2Dが原因なのかそうでないのか分かりませんが……。
どうも、 [image] タグで表示させた画像をアニメーションするときに起こる?
[anim] タグを使ったら [wa] でアニメーション終了を待つ、と機械的に覚えてたのですが、[wa] を入れた箇所でフリーズ多発しました。
ただ、なぜか再現する時としない時があって、デバック時に普通に動いていたのに、パッケージングした後、フリーズ発生したり。
デバック時も、[wa] があるシーン近くでセーブするとフリーズするけど、遠いシーンでセーブした場合は動いたり。
スクリプトに疎いので、なにがなんだか???の嵐です。
理由は分からないなりに、[wa] があるせいだろうと判断し、[wa] を消して代わりに、アニメーション時間分の [wait time=〇〇] にしたら、フリーズ回避できた……ようです多分。
Live2Dモデルは layer="0"?
・Live2Dモデルは [anim] ができない
これに関しては、不具合ではなく仕様だと思われます。
Live2Dモデルを画面上で移動させたい場合、[anim] では動きませんが、[camera] を使えば同じような効果が出せます。
Live2Dモデルは、おそらく layer=0 にあるのではないかと。
なので、layer=0 をカメラで動かせばOKです。ただ、同じレイヤ上に他の [image] 画像があると、それも一緒に動いてしまうのでご注意を。
まれに、[image layer=0] の画像を [anim] で動かした時、つられて(?) live2Dモデルも一緒に動くことがありました。[image] にはちゃんと name を付けて動かしたはずなのに……。原因不明です。
Live2Dモデルの属するレイヤを変更すれば、[image] と別々の位置移動が可能かもですが、私ではお手上げです。もしかしたら tyrano.css をいじればできるのかも?
・Live2Dモデルを [image] の前に出すには
Live2Dモデルのレイヤが変更できないなら、 [image] 側のレイヤ変更すればいいのでは? と言いたいところだけど、色々問題があって……。
というのも、[image] 側のレイヤを layer="1" にすると、こうなります。
Live2Dモデルを前に出したい場合、いくつか手順を踏む必要があります。
直前のシーンで [live2d_delete_all] を入れ、モデルを削除しておく( [live2d_hide] ではうまくいきません)
[image layer="0" zindex="0"] で [image] を表示させてから、[live2d_new] [live2d_show] でモデルの再定義と表示
[live2d_delete_all] をしておかないと、モデルは前に来ません。
また、[image layer="0"] だけで zindex="0" を入れないと、モデルは前に来ません。
今思い出せる範囲ではこれぐらい。他に思い出したら、追記します。
Live2Dモデルのことではないけど、[layermode_movie] でMP4形式の動画をskipすると、動画の画像がおかしくなったり……。
公式サイトのタブリファレンスには「MP4形式推奨」と記載あり、テクニック編の「レイヤー合成(映像)」動作デモでは、「webm推奨」となっていたので、どちらにしたらいいか迷った末、MP4にしたけど、webmならよかったのかも……?
動画部分については、対処法が分からないため、できましたらスキップしないでください、とお願いするしかない……。
全体的に、不具合発生するのは、だいたいセーブロード時かスキップ時のようです。
そんな感じで、今回のゲーム制作はめちゃめちゃ苦労しました。
正直、もう二度とやりたくない(苦笑)。
DLなしでブラウザからもプレイできるので、よろしかったら遊んでみてください。
(もし不具合見つかれば、教えていただけると幸いです)
この記事が気に入ったらサポートをしてみませんか?