見出し画像

Cinemachine 2→3移行で実際に効果があった進め方

セール中

〜11月2日 17:30

Grandis Adventuresの開発で、Cinemachine 2から3への移行を行いました。

移行前にはUnity公式のドキュメントや、すでにCinemachine 3への移行を経験された開発者の方の記事なども参考にしています。

ただ、実際にやってみると、やっぱりProjectごとに構成が全然違います。

今回はその中でも、バックアップ、小さい環境での確認、GPTとToolsを使った切り分けがかなり役に立ちました。

最初はProject全体でいきました

まずはバックアップ。これはUnity公式の案内にもあるので、その通りに。

普段から定期的に取っていますが、こういう大きな変更の前は改めてProject全体を保存しています。

CinemachineのUpgraderでは、Object単位、Scene単位、Project全体という形で対象を広げていけます。

最初は「バックアップもあるし、まあ一気にいけるだろう」とProject全体を選びました。PCから出てる、ふぅおーん。みたいな音を聞きながら20分くらい待ち。

結果、途中でStack Overflow。

もちろん赤エラーです。

一度戻して、今度は逆に小さいところから確認することにしました。

新しく検証用のSceneを作って、必要なものだけ置いてCinemachine 3への変換を確認。

そこからObject単位、Scene単位と少しずつ広げて、「どこまでは通るのか」を見ていきました。

最初から全部を見るより、こうした方が問題が起きた場所をかなり絞りやすかったです。

ここからGPTとToolがかなり効きました

ただ、切り分けを進めても「なぜここで止まるのか」が分からない部分は当然出てきます。

例えば、CinemachineのUpgraderが内部で行っている処理をいくつかのStepに分けて、どの段階まで正常に通っているのかを見る診断Tools。実際に GetUpgradables、UpgradeNonPrefabs、UpgradeObjectReferences、DeleteObsoleteComponents と分けてログを取るようになっています。 CM3ProbeLegacyCameraCreator

ほかにも、Project内のScriptを横断して、CinemachineFreeLook や m_XAxis、m_YAxis など旧CinemachineのAPIがどこに残っているのかを探すToolも作りました。 CM3LegacyCameraCodeAudit

さらにPrefab側まで追い始めると、Scene上のCameraだけではなく、元Prefab、Nested Prefab、Override、ほかのScriptからの参照まで確認するToolも必要になりました。 CM3PrefabCameraRiskAudit

気がついたらToolsメニューがこんな感じになっていました ↓


最初からこれだけ作ろうとしたわけではありません。

一つ調べる。

「ここは問題なさそう」

でも次の部分はまだ分からない。

じゃあ、そこを見るためのToolを作る。

これを繰り返した結果です。

感覚としては、Projectの中をレントゲンで少しずつ撮っている感じでした。

「原因を聞く」より「原因を一緒に探す」

今回一番感じたのは、開発で詰まっている時って、解決方法が存在しないというより、そもそも原因がまだ分かっていないことが多いということです。

原因が見えていない状態だと、人間でもAIでも予測したり推測で補完します。

でも実際のScript、Prefab、Inspector、参照関係、ログなどを確認できれば、

「これは違う」

「ここまでは正常」

「じゃあ次はここ」

と候補を減らしていけます。

分からない部分を確認するためのToolまで、その場で作りながら一緒に原因を追ってくれたことです。どの階層なのか、Projectごとに構成は違うので、今回作ったToolをそのまま使えばいい、という話でもないと思います。

むしろ、

「自分のProjectでは、次に何を確認すれば原因を切り分けられるか」

をGPTと相談して、必要ならそのProject用の診断Toolの概念や設計思想を話したりと。

今回のCinemachine 3への移行では、この使い方がかなり有効でした。

ここからは、実際にGPTとどう調査したか

ここまでは、Cinemachine 3への移行で実際に役立った進め方を書きました。

ここからはもう少し具体的に、

「GPTに何を頼んで、どうやってProject専用の診断Toolを作っていったのか」

を書いてみます。

今回作ったToolのコードを、そのまま全部載せることはしません。

UnityのVersionも、Packageも、Prefabも、ScriptもProjectごとに違うからです。

自分のProjectをAIに調べてもらって、そのProject用のToolを作ってもらう方が実用的

だと考えました。

例えばCinemachineのUpgraderでは

Upgraderの処理を、

GetUpgradables
UpgradeNonPrefabs
UpgradeObjectReferences
DeleteObsoleteComponents

という単位に分けて、どこまで正常に進んだのかを見るToolを作りました。

次はProject内のScriptを横断して、CinemachineFreeLook、m_XAxis、m_YAxis など、Cinemachine 2時代のAPIが残っている場所を調査。

さらに必要になればPrefabを見る。

Nested Prefabを見る。

Overrideを見る。

Cameraを参照している別のComponentまで見る。

最初から全部調べたわけではありません。

一つ確認した結果、次に見る場所が決まっていったという感じです。

前に書いた「Projectをレントゲンで少しずつ撮っていく」という感覚に近いです。

最初にAIへ渡すプロンプト

別のUnity Projectで同じ考え方を使うなら、まずはこのくらいから始められると思います。

Unity Projectで発生している問題を調査したいです。

【環境】
Unity Version:
Package / Version:
対象機能:
関連するScene / Prefab / Script:

【現在の症状】
ここに症状を書く。

【確認済みのこと】
ここに実際に確認できた事実を書く。

【まだ分からないこと】
ここに不明点を書く。


最初から原因を決めつけたり、
修正コードを書いたりしないでください。

まず、

・確認済みの事実
・まだ推測のもの
・現在の原因候補
・次に何を観測すれば原因候補を減らせるか

を分けてください。

必要であれば、
Unity Editor上で実行できる診断Toolを作ってください。

診断Toolは原則Read Onlyとし、
Scene、Prefab、Assetなどを変更しないでください。

変更を伴う検証が必要な場合は、
先に理由と影響範囲を説明してください。

診断結果をこちらから返すので、
その結果を見て次の調査を決めてください。

GPT以外のAIを使っている場合でも、考え方自体は同じだと思います。

これだけでも、AIとのやり取りはかなり変わります。

Read Onlyは結構大事でした

今回作ったAudit系Toolは、できるだけRead Onlyにしました。

調査するためのToolがPrefabを書き換えたり、SceneをDirtyにしたら、調査Tool自身が新しい問題を作る可能性があるからです。

ただし、すべてをRead Onlyにはできません。

UpgraderをStepごとに実行する診断Toolのように、実際のUpgrade処理を呼ぶものもありました。

その場合は、バックアップした検証環境で実行します。

つまり、

「Read Onlyと書いてあるか」ではなく、実際に何をするToolなのかを見る

ということです。

コードより、調べ方を残す

今回作ったToolはGrandis AdventuresのProject用なので、別のProjectへそのまま入れることを想定していません。

でも、完成したコードより、

「何を確認したかったのか」

「何を観測すれば原因候補を減らせるのか」

「そのためにどんなToolを作ったのか」

を残した方が、別のProjectにも応用しやすいと思っています。

Unity開発をしていると、

「何かがおかしい。でも、どこがおかしいのか分からない」場合もあります。

そういう時にAIへ答えだけを求めるのではなく、

「じゃあ、それを確認するToolを作って」

と頼む。

実際のProjectで確認する。

結果をAIに返す。

そこから次に見る場所を決める。

今回のCinemachine 3への移行では、この繰り返しがかなり役に立ちました。
そして個人的には、これがAIを開発に使う上でかなり面白い部分だと思っています。

今回使った基本メソッド

症状を確認する
↓
事実と推測を分ける
↓
次に何を観測すれば原因候補を減らせるか決める
↓
必要なら専用の診断Toolを作る
↓
実Projectで観測する
↓
結果をAIへ戻す
↓
否定できた候補を捨てる
↓
次の観測へ進む
↓
原因が絞れてから最小修正する

短くすると、こんな感じです。

Observe → Classify → Probe → Evidence → Reject → Narrow → Repeat → Minimal Fix

この先では、実Script ZIPファイルと今回実際にProjectで使った考え方を、そのままお使いのAIへ渡せる形にまとめています。

ここから先は

22,804字 / 1ファイル

セール中
¥980
¥ 390

10月3日 17:30 〜 11月2日 17:30

この記事が気に入ったらチップで応援してみませんか?