■はじめに
こんにちは😊
前回は、「ドラゴンハンター」という名前で、ARPGっぽいゲームを作ってみました。
前回の記事はこちら
ゲームとして動かしてみると、それなりに形になってきたのですが……
一つ、どうしても気になるところがありました。
それは、
ダメージを食らっても、キャラクターが顔色一つ変えない(笑)
ということ。
実は、それまで作っていた3Dモデリングツールでは、キャラクターの表情を「キャラクター設定」のところで決めていました。
そのため、ゲーム中に
「攻撃された!」
となっても、
「……。」
と、平然としています(笑)
ARPGなら、ここはやっぱり、
「痛っ!」
という顔をしてほしい。
そこで今回は、
ポーズ毎に表情を変えられるように3Dモデリングツールを改造
することにしました。
■「簡単にできそう」と思っていた事がありました。
今回、最初に考えたのは非常に単純です。
今まで「キャラクター設定」で決めていた表情を、
「ポージング」の設定に移せばいいんじゃない?
というもの。
例えば、
・通常ポーズ → 通常の顔
・攻撃ポーズ → 攻撃の顔
・ダメージポーズ → 痛そうな顔
・喜びポーズ → 笑顔
という感じです。
これなら簡単そうですよね。
私も最初は、
「これは、ちょっと変更すればできるでしょ😊」
くらいに考えていました。
ところが……
claudeさんにコードを書いてもらうと、
アプリ上ではちゃんとポーズ毎に表情が変わっている。(ここまではOK)
ところがGLBファイルに出力してみると……
最後に表示した表情になってしまう。
あれ?(笑)
つまり、
「画面上では正しく動いているけど、出力したGLBでは正しく保存されていない」
という、なかなか厄介なバグが発生しました。
■しかも、頼みのChatGPTさんが……
ここでさらに問題が。
機能追加を繰り返した結果、3Dモデリングツールそのものがかなり大きくなっていました。
そして、ついに……
ファイルが大きすぎて、ChatGPTさんがファイル全体を読めない!
という事態に(笑)
これは困りました。
コードの一部分だけを見るなら何とかなるのですが、
「この機能を追加したことで、別の場所に影響が出ていないか?」
という確認が難しくなります。
どうしましょう。
■困った時の「ファイル分割」と「圧縮」
そこで、Claudeさんにお願いしました。
「この巨大化したファイルを、機能毎に分割してください」
すると……12個のファイルになりました。
12個ですよ。
「どんだけ巨大化してたの?」
という感じです(笑)
目の前がちょっと真っ黒になりました。
しかし、ここで一つ助かったことがあります。
ClaudeさんもChatGPTさんも、ZIP形式の圧縮ファイルを扱える。
ということ。
つまり、
12個に分割されたファイルをZIPにまとめる
↓
ZIPファイルを渡す
↓
中身を確認してもらう
↓
修正する
↓
またZIPでやり取りする
という方法が使えます。
これなら何とかなりそうです。
いや、本当に助かりました😊
■そして、バグ退治へ
まずChatGPTさんに、
「こういうバグが出ています」
と状況を説明。
そして、
Claudeさんに修正をお願いするためのプロンプト
を書いてもらいました。
今回のポイントは、
「アプリ上で表情が変わる」
だけではダメで、
「GLBとして出力した時にも、それぞれのポーズに正しい表情が保存される」
こと。
ここをかなり意識して修正してもらいました。
Claudeさんにプロンプトを渡して修正。
出てきたコードを確認すると、
ぱっと見では特に問題なし。
「これで完成かな?」
と思ったのですが……
ChatGPTさんにチェックしてもらうと、
「別のところに、まだ問題があります」
とのこと。
なるほど。
見た目では分からないバグって、やっぱりありますね。
そこもClaudeさんに修正してもらい、
再チェック。
そしてようやく、
ChatGPTさんからOKが出ました😊
AIにコードを書いてもらって、
別のAIにチェックしてもらって、
また修正して……
なんだか、
AI同士でコードレビューをしているような感じ
になってきました(笑)
修正版アプリはこちらです。
https://github.com/logicmaker256-prog/model-05/blob/main/3DmodelingTool.zip
👆️Googleの検索窓に貼ってzipファイルをダウンロードしてね。
■今回GLBファイルが大事なので……
今回の改造では、
「GLBに正しく出力されているか?」
が非常に重要です。
そこで、もう一つClaudeさんにお願いしました。
GLBファイルのビューワを作ってもらいました。
これが地味に便利です。
実は以前から、GLBファイルを確認するときに、
「どのビューワで確認したか」
によって、見え方や動作確認の結果が微妙に変わることがあると感じていました。
だったら、
「今回作ったGLBビューワを使って確認しました」
と言えるようにしておけばいい。
ということで、
3Dモデリングツール
↓
GLBファイル出力
↓
自作GLBビューワで確認
という流れにしました。
これなら今後、
「このGLBファイルは、このビューワで確認しました」
と条件を揃えることができます。
こういう確認環境を自分で用意できるようになったのも、今回の収穫でした😊
ビューワはコチラ👇️
https://logicmaker256-prog.github.io/pose_viewer/
お試し用データ
Google検索窓へ貼ってダウンロードしてね
https://github.com/logicmaker256-prog/pose_viewer/blob/main/my_character.glb
■今回の学び
今回一番の学びは……
「ClaudeさんもChatGPTさんも、圧縮ファイルを扱える」
ですかね(笑)
いや、これ、もっと早く知っておきたかったです。
ファイルを分割して、
「1個、2個、3個……」
と増えていき、
最終的に12個!
となった時は、
「これ、どうするんだ……」
と、ちょっと途方に暮れました。
ところが、
「ZIPにまとめればいいじゃん」
と分かってからは、
かなり楽になりました。
AIにプログラムを作ってもらっていると、
機能が増える
↓
コードが増える
↓
ファイルが巨大化する
↓
AIに全部読んでもらえなくなる
という問題が出てくるんですね。
そんな時には、
ファイル分割+ZIP圧縮
という手が使える。
今回、身をもって学びました😊
そしてもう一つ。
「画面上で正しく動いている」
と、
「出力されたファイルが正しい」
は、別問題ということも改めて実感しました。
今回のような3Dツールでは、最終的に使うGLBファイルまで確認することが大切ですね。
■次回予告
今回は3Dモデリングツール側の改造でしたが、
次はゲーム開発に戻ります。
「ドラゴンハンター」のゲームアプリ側で、
ちょっとやってみたいことがあります。
せっかく、
ポーズ毎に表情を変えられるようになったので、
これをゲーム側でどう活かせるのか?
いろいろ試してみたいと思います。
ということで次回は、
「ARPGに使える3Dモデリングツール」から、再びゲーム開発へ。
では、また次回です😊

