#7 バグと格闘しながら、世界を埋めていく

こんにちは!チーム・ベラドナ開発日誌、第7回目のお話です。
今週は正直、予想外の変数が多い週でした。バグと格闘し、マップを埋め、キーアートを完成させ、その最中に個人的なトラブルまで重なりました。それでも最後に振り返ってみると、かなり多くのことをやり遂げた一週間でした。そして来週中にはプレイ可能なビルドが出せそうです。もうすぐです。
ヒョニ:マップを作り、絵を完成させる
今週最も時間を費やしたのはマップ構成でした。最初はマップをメッシュレンダラー方式からスプライト形式に切り替えてみたのですが、実際に適用してみると影の機能がなくなり、キャラクターがオブジェクトをすり抜けるバグが発生してしまいました。結局メッシュレンダラーに戻ることになりました。遠回りでしたが、どの方式が私たちのプロジェクトに合っているかがはっきりわかりました。

方向を立て直した後、様々な構造物をどこに配置するかを考えながら一つひとつ置いていきました。パンテラが作ったマップ構造の上に私が適切な構造物を一次配置し、そこにパンテラがインタラクション台詞を入れていく方式で進めています。

思ったよりマップがかなり広くて、空間を埋めるのに時間がかかりましたが、オブジェクトが一つひとつ定位置に収まっていくにつれて、世界がリアルに感じられ始めるのが不思議です。

その過程で面白い発見もありました。家や木などのオブジェクトに軽い動きのアニメーションを入れてみたら、紙人形劇のような雰囲気がぐっと出てきたんです。静的なオブジェクト一つにほんの少しの揺らぎを加えるだけで、こんなにも雰囲気が変わるとは、なかなか楽しい発見でした。さらに、カスタムピボット設定と好きな位置でのスケール・回転に対応したPowerPivotアセットも導入して、オブジェクト配置の自由度を高めました。

そして今週のもう一つの大きな作業はキーアートの完成でした。最初は明るさや色感をあれこれ調整しながらいくつかのバージョンを試しました。パンテラと意見を交わしながらキャラクターの色感と背景のトーンを調整し、眼光まで加えて仕上げました。完成したキーアートはメインメニューの画像としても活用する予定です。リソースは大切に使わなければなりませんから。😄
パンテラ:またSpineが言うことを聞かない
今週も予想外のところで時間をかなり使いました。Spineアニメーター周りです。
実際のシーンを組み立てる中で、ワールド→バトル→ワールドに戻る流れの中でキャラクターアニメーションが正しく初期化されない問題が次々と発生しました。前の状態の残像が次のシーンに混入する、スキン切替の瞬間にキャラクターが1フレーム点滅する、バトル終了後にアンがワールドでまったく動けなくなる――そういった問題たちです。

原因は、各コンポーネントが初期化される順序が保証されておらず、互いに衝突していることでした。プレイする側からすると単なる「バグ」に見えますが、その中を覗いてみると複数のシステムが同時に噛み合って動いている複雑な構造があります。その構造の中で、誰がいつ何をすべきかを正確に定義することが、今週の核心的な課題でした。
解決の方向性は責任を明確に分けることでした。移動アニメーションを担当するコンポーネントと、戦闘・カットシーンなどのカスタムアニメーションを担当するコンポーネントが、お互いの領域を侵さないよう境界を引きました。そしてバトルの開始と終了のタイミングにのみアニメーション状態を完全リセットするフラグを導入し、毎フレーム不要な初期化が走らないようにしました。バグを一つ直すと隣で新しいバグが飛び出す、という状況が何度か繰り返されましたが、最終的に一つひとつ条件を絞り込んで安定化できました。

バグ修正後は、ノアの実装とともに実際にワールドを歩き回るアンの姿を実装する作業を続けています。シーン選択肢UIの初稿も完成し、ポートレイトダイアログのプリハブも改善しました。GitHubをうまく活用できているチームとして、密かに誇りに思っています。

おわりに
バグを直し、マップを埋め、絵を完成させ、その最中に予想外のことまで乗り越えた一週間でした。アンが鍵を拾ってエルスウェアへと引き込まれるシーンが実装されれば、プレイ可能なビルドがいよいよ手の届くところに来ます。そのビルドが完成する瞬間を、私たちも心から楽しみにしています。

次の開発日誌もお楽しみに。😊
— チーム・ベラドナ、ヒョニ & パンテラ