【Unity】メインのプロジェクトを壊さないために別のプロジェクトを用意しておこう
今作っているゲームのプロジェクトがあるかと思いますが、ゲームを作っている最中になにかを試すことがよくあります。その際にはそのプロジェクトでいきなり検証するのではなく、なるべく別のプロジェクトで検証を行うようにしましょう。
プロジェクトの構成ファイルを壊さないようにすることも、円滑にゲームを作っていくために必要なことです。
言葉にしてしまうと当たり前のことなのですが、言葉にしておけば目に触れた時に思い出せるかもしれないのでこの記事を残します。
メインのプロジェクトを壊さないために別のプロジェクトを用意
今作っているゲームのプロジェクトでいきなりなにかを試そうとすると、もし何かエラーが発生した時に結構テンパります。例えばアセットストアからなにかをインポートした際に、そのアセットが使っている名前空間と自分のスクリプトの名前空間が被っていてエラーを吐きまくる、などです。
C#スクリプトがそのまま入っているなら最悪アセット側を修正する手もありますが(いや、自分の方を修正した方が簡単かも)、場合によってはアセット側のプラグインとしてDLLファイルが提供されていたりしてこちらから手を出せないということも。
あるいは多くのアセットは独自のフォルダを作成してその中にファイルを置いていますが、運悪く私たちが作ったフォルダにファイルを書き込んでいたりすると、アセットのインポート画面で同じ名前のファイルを更新しようとしている表示を見落としてファイルが闇に葬られたりと、悲劇を巻き起こすこともあります。
恥ずかしい話ですが、初めてUnityでゲームを作っていた時には、そのメインのプロジェクトでどんどんアセットをインポートしたりしてエラー祭りを開催したことがありました。今思えばなんと不用意なことをしたのかと、当時の私を問い詰めたい気持ちになりますが、「ちゃんと別のプロジェクトで検証しよう」と自分への戒めを得たと思えば全くの無駄ではないのかもしれません。
検証している対象でエラーが発生しているのか、それとも私たちのプロジェクトでエラーが発生しているのか、あるいは両方の相互作用でエラーが発生しているのか、この3つについては段階を踏んで切り分けていくとプロジェクトを守ることに繋がります。
まず動くことを試す
なにか新しいことを検証する場合は、自分のプロジェクトに合致した形で動かすことよりも、まずは新しいプロジェクトを作成して、とにかく動くことを確認するようにしましょう。メインのプロジェクトと切り離してサンドボックス的に検証するのが大切です。
基礎を理解しておくことで、自分のプロジェクトでどのような応用をすればいいのかを掴みやすくなりますからね。
最初の頃の私はついつい一気に物事を進めてしまおうとして、メインのプロジェクトで検証を行うこともよくありました。これだとプロジェクト特有の問題なのか、新しく試そうとしている技術や機能の問題なのかを切り分けることが難しくなります。
一気に出来上がった! というのはかっこいいしスマートな気もしますが、結構大変なことだったりします。実はバラバラに確かめていたら着実に進んでいたのに、問題を複雑にしてしまったばかりに解決に時間がかかることも……(反省)
プロジェクトの差異も知識に
検証用プロジェクトで新しい技術や機能を確かめて、いざメインのプロジェクトに導入しようとした時には多くの場合検証中に見つからなかったエラーが発生します。
これはプロジェクトの構成の違いによるもので、プロジェクト内の状況が違えば出てくる結果も異なります。
一気に導入しようとした時にも同じようにエラーが出るかもしれませんが、一度検証のステップを踏んでおくことが問題の切り分けが非常に簡単になります。また、プロジェクトに応じたカスタマイズという観点から知識がつくことで、また別のゲームを作る時にも応用ができます。
繰り返しになりますが、基礎を理解した上で応用してみることで、別のケースに対しての応用も簡単になります。
プロジェクトフォルダのバックアップ
プロジェクトを守るという観点では、プロジェクトフォルダのバックアップも定期的に行っておくと良いでしょう。私の場合、フォルダの構成を変えることもあるので、プロジェクトの元の形が分かるように情報を残しています。「ProjectName_bk_20200101」のように日付を入れて区別することでいつのバックアップか分かるようにしています。ちょっと原始的な気もしますがやらないよりはマシかなと。
可能なら検証した機能を導入する前にもバックアップを行っておいた方が良いと思います。毎回やるのはめんどくさいかもしれませんが、プロジェクトを壊しちゃった時のショックに比べたら微々たる労力です。
Macを使っている場合は、Timemachineの機能で時間ごとに戻せるようにしておくのも大切です。バックアップ用のディスクを接続しておいて、時間経過で自動的に差分を記録するようにしておけば、万が一の時にもプロジェクトの状態をすぐに戻せますからね。
Windowsでも定期的にディスクのバックアップはできたと思います。最近メインで使っているのがMacなので若干のうろ覚えですが、スケジュールで指定のフォルダをバックアップする機能がエクスプローラーにあったような……?
大事なのはいつでも戻せるように情報を残しておくことです。
ゲームでも進行状況をセーブするのであの感覚でプロジェクトの情報もセーブしておきましょう。
まとめ
なにか新しい技術や機能を試す時には、いきなりメインのプロジェクトで試すのではなく、検証用のプロジェクトを作って試すようにしましょう。万が一プロジェクトを壊してしまった時の焦燥感、やっちまった感は結構心にくるので、影響を抑えつつ検証するのがグッド。
また、メインのプロジェクトに関しても定期的にバックアップを取っておくなど、戻せる形を残しておくのは重要です。
ゲーム開発の攻略チャートを作りました!
-
前の記事
インゲームとアウトゲームの用語を知らなかったので調べた【ゲーム開発】 2021.01.04
-
次の記事
【Unity】ドローコールを減らすためにいま僕たちができること 2021.01.06
コメントを書く