この記事ではUnityの公式ツールである「Plasttic SCM」を使ってチームでワールドを制作する方法をclusterクリエイター・Dolphiiiin さんが解説します。ひとりだけでは実現できないワールドもチームなら実現できるかも。誰かと一緒にワールドをつくってみたいなと思っていた方はぜひ試してみてください。
こんにちは!Dolphiiiinです。
ClusterGAMEJAMなどで、ワールドをチームで作りたい!という場面があります。
ワールドクラフトでは、リアルタイムにチームのメンバーといっしょにワールドを作り上げていくことが可能ですが、Unityの場合でのチーム開発というのは難しいです。
ですが、うまくいけば一人で黙々と作業するよりも、さらに効率的に作業を進めることができるはずです。
48時間しかないGAMEJAMなら尚更です。
今回はそんなワールドのUnityプロジェクトをチームで制作していく手順について解説していきます。
【はじめに】Unityのチーム開発を始めよう
チーム開発は大変
ゲームのチーム開発、しかもUnityを使用したチーム開発は非常に大変です。
特に、プロジェクトのデータの共有や共同開発、チームメンバーとの並行作業は時に開発の遅延や、データの破損などの事故につながることがあります。
チームで開発する際の事故
チームでUnityプロジェクトを開発する際によくある事故の1つとして、コンフリクト(conflict 競合)というものがあります。
これは、他のチームメンバーが編集中のデータを他のメンバーがさらに編集・上書きしてしまい、データの整合性が取れなくなってしまい、どちらかのデータを残してもう片方は切り捨てることとなってしまいます。

そして、例えばそれがシーンファイルだった場合など、大量の編集データを破棄してしまうことになってしまうこともあり得ます。
タスク管理とコミュニケーションをしっかりと
チームメンバーとのコミュニケーションもチーム開発にとっては最も重要です。
例えば、先ほどのコンフリクトは、コミュニケーションによっては対策することができますし、頻繁にコミュニケーションを取ることにより、無駄な作業を減らし作業を効率的に進めることにもつながります。
48時間しかないGAMEJAMならなおさらです。
GoogleKeepやNotionのようなタスク管理ツールや、Discordのようなコミュニケーションツールも積極的に使用するのがおすすめです。



どのようにプロジェクトのデータを共有するか
プロジェクトのデータ共有をする方法も考える必要があります。
UnityプロジェクトをZIPファイルに圧縮して、チームメンバーに配るというのは単純ですが、効率的ではありません。
そこで、バージョン管理システムを使用しましょう。
バージョン管理システムって?なぜ使うの?
バージョン管理システムは、「いつ」「だれが」「どこを編集した」というデータの編集の過程を保存しておくシステムです。

編集した部分のみをクラウドに反映させるため、Unityのプロジェクト全体を更新するごとにダウンロードするよりも効率的です。
代表的なサービス
バージョン管理システムのクラウドを使用できる代表的なサービスとしては、GitHubなどがあります。
*今回は手軽にバージョン管理を行うという前提で、無料プランを用います。
*ここに書いてある内容が全てではありません。プロジェクトの規模や使いやすさなどを考慮したら、さらに使い勝手の良いサービスがある可能性もあります。
GitHub
- 無料でできることが多い
- 無料枠で100MB以上のファイルをアップロードするのに一部制限がある
- 一括でアップロードできるサイズは2GB
- 主にコマンドライン上で操作する (GUIツールのGitDesktopも存在するが、日本語非対応)

Plastic SCM
- Unity公式が提供している( https://unity.com/ja/products/plastic-scm )
- ストレージの無料枠は5GB (チームメンバーの招待は4人まで)
- ダウンロード/アップロードが早い
- 巨大なファイルの扱いが得意
- 日本語対応のGUIで、初めてでも扱いやすい

バージョン管理システムとしてはGitHubが定番ですが、3DモデルやBGM、SEなどの音楽データなどの大きめのサイズのファイルを多く扱うUnityプロジェクトでは、GitHubよりもPlastic SCMのほうが良いと考えています。
また、初めてバージョン管理をするという方はPlastic SCMのGUIを使用することがおすすめです。
【実践編】実際に使ってみよう!
ここからはPlastic SCMを使ってUnityプロジェクトをチームで開発する環境を構築し、実際に開発するまでを順を追って解説していきます。
アカウントを作成
PlasticSCMのサイト(https://www.plasticscm.com/account/login)へ行き、アカウントを作成します。
*アカウントにはUnityのアカウントを使用することができます。
環境構築
*環境構築はチームのメンバーそれぞれが行う必要がある部分と、チームの中で1人(仮にリーダーとします)が行う必要がある作業に分かれている部分がある点に注意してください。
また、リーダーが一通り作業を終了した上で、メンバーが環境構築を行うことを推奨します。
Plastic SCMのインストール
まずはPlastic SCMをインストールします。
ダウンロードページ(https://www.plasticscm.com/download) にアクセスして、Cloud Editionをダウンロードします。

ダウンロードしたらダウンロードしたインストーラーを開いてインストールします。
サインイン
インストールが終わると、サインイン画面が表示されるので、サインインをします。

画像の画面が表示されたらサインインは完了です。

組織を作成する
*このセクションはリーダーが行ってください チームメンバーはチームメンバーの環境構築までスキップ
「作成」をクリックします。

「組織名」にチームの名前を入力して、「作成」をクリックします。

「続行」をクリックします

*ここでブラウザが開きますが、閉じて構いません。
最後に「開発者向け Plastic」の起動をクリックして終了です。

Unityプロジェクトを共有する
(注意)このセクションはリーダーが行ってください
*Plastic SCMの環境構築の段階でUnity Hubが開かれていた場合は、再起動してください。
Unityプロジェクトの準備
Unity Hubを開いて、共有するプロジェクトを作成するか、Creater Kitのサンプルプロジェクトを開きます。
Plastic SCMの画面に戻り、リポジトリを作成します。
リポジトリの新規をクリックします。

リポジトリの名前にプロジェクトの名称など、わかりやすい名前を設定して、OKをクリックします。

ディスク上のパスの項目の参照をクリックして、先ほど作成したUnityプロジェクトのフォルダを選択して、OKをクリックします。
一回目のアップロード
(注意)このセクションはリーダーが行ってください
ワークスペースエクスプローラーの画面で、Libralyフォルダを右クリックし、無視リストに追加から、Libraly、Tempをそれぞれ選択し、OKをクリックします。
Unityプロジェクトのフォルダ内にあるLibralyフォルダ、Tempフォルダにはそれぞれの環境のためのキャッシュデータなどが含まれています。Libralyフォルダは5GB程の巨大なファイルを保存している場合もあるため、クラウドストレージを圧迫する要因にもなります。
Libralyフォルダ、Tempフォルダが存在しないUnityプロジェクトを開いた際は、実行環境に合わせて都度自動で生成されるため、共有する必要はありません。
そのためPlastic SCM上でLibralyフォルダ、Tempフォルダはアップロードしないように設定しておきます。

チェックイン(アップロード)を行うため、保留中の変更を開きます。

全てのファイルをチェックインするため、1の「すべてチェック/クリア」にチェックを入れます。
2の入力欄にはチェックインの内容のコメントを入力します。
その後、3を押すことでチェックインできます。

組織にチームメンバーを加える
(注意)このセクションはリーダーが行ってください
Plastic SCMのダッシュボード(https://www.plasticscm.com/dashboard/cloud)にアクセスします。
メンバーを加えるチームの項目の、「Configure」から「Users and groups」をクリックします。

「Add new user」をクリックします。

「Email」の項目に招待するチームメンバーのPlastic SCMアカウントに登録されているメールアドレス(Unityアカウントのメールアドレス)を入力して、「Save」をクリックします。

Discordへの通知BOTの設定(任意)
Plastic SCMの機能で、誰かがPlastic SCMになにか変更を加えた際に、DiscordやSlackなどにメッセージを送信することができます。
Plastic SCMアプリには通知機能が備わっていないため、もし更新があっても気付くことができないことがあります。
通知BOTでDiscordなどに通知することで、更新にいち早く気付き、自分の環境へ反映させることを支援することができます。
通知用のDiscordチャンネルを用意
通知用のチャンネルを作成して、チャンネル設定の「連携サービス」から「ウェブフック」を作成します。
「新しいウェブフック」をクリックして、適当な名前を設定し、ウェブフックURLをコピーしておきます。

Plastic SCMのダッシュボード(https://www.plasticscm.com/dashboard/cloud)へアクセスして、「Configure」から「Triggers」にアクセスします。

「AddTrigger」から「Discord」を開きます。

「Channel Webhook」にWebhookのURL。「Affected Repository」に通知するリポジトリ、「Trigger type」はすべてチェックを入れます(必要に応じてチェックを変えてください)
Saveを押して設定は完了です。

チームメンバーの環境構築
リーダーが作成した組織を選択して、「参加」をクリックします。

*ここでブラウザが開きますが、閉じて構いません。
「開発者向けPlastic」の起動をクリックします。

「リポジトリ」にリーダーが作成した物を選択し、「ディスク上のパス」にプロジェクトをどこにダウンロードするかを設定して「OK」をクリックします。

起動したPlasticSCMの画面右上の「更新」をクリックして、PC上にダウンロードします。

最後に、Unity Hubの「開く」をクリックして、2つ前の手順で設定したフォルダを開きます。

これで環境構築はおしまいです。
Plastic SCMを実際に使う
ここまでは環境構築でした。ここからは実際の使い方です。
更新の内容をチェックイン(アップロード)する
Unityで作業の区切りがついた段階や必要な時にチェックインをします。
「保留中の変更」を開き、1の部分で、チェックインするアセットにチェックを入れます。
*.metaファイルをいっしょにチェックインするのを忘れないようにしましょう。
.metaのファイルは各アセットのインポート情報が書かれています。例えば、画像のように正常なUnityプロジェクトから.metaファイルを消すと、

次の画像のように全てのファイルの参照が外れてしまい、プロジェクトが壊れてしまいます。

2の部分で、更新した内容のコメントを入力します。
3を押してチェックインします。

更新の内容をダウンロードする
Plastic SCMの画面右上から、「表示」をクリックします。
*更新がない場合は、このダイアログは表示されません。

「ワークスペースを更新」をクリックすることで、更新の内容をダウンロードできます

コンフリクトが起きたときの対処
画面右上に緑ではなく、赤く更新があると表示された時は、競合(コンフリクト)が発生しています。
「表示」をクリックします。

開いた画面で、競合しているファイルを右クリックし、「選択されたファイルをマージの選択方法」から、「受信される変更を保持してマージ」をクリックすることで、自分の環境のデータを破棄してダウンロード、「ワークスペースの変更を保持してマージ」をクリックすると、受信したデータを破棄して、今自分の環境にあるデータを保持します。

コンフリクトを防ぐ──コミュニケーションを頻繁に行う
これが一番の対策であり、とても簡単な方法です。
「今からシーンファイルいじってもいい?キャラクターのアニメーションコントローラー触ってもいい?」と頻繁にやり取りを行いましょう。そして、他の人が作業できるように、こまめにチェックインしましょう。
例えばマテリアルの色を変えた後、数時間チェックインせずに放置して、他のメンバーの作業に支障が出ることもあります。
シーンファイルはこの人だけが編集する、アニメーションはこの人だけが編集するなどと役割を振っておくのも良い手段の一つです。
コードなどのコンフリクトの修正は簡単に行うことができる場合がありますが、Unityの場合はうまくいかないことが多くあります。
コンフリクトを起こしてしまい、数時間の作業が無駄になるというようなことだけは防ぎましょう。
おわりに
今回この記事ではPlasticSCMを使用してUnityプロジェクトをチームで共有・制作する方法について解説しました。
もしこの記事を読んでもわからないことがあった場合は、Clusterの公式Discordサーバー「Cluster Creator Community」の質問チャンネルにて、@Dolphiiiinへメンションをつけて気軽に質問してください。
ここまでお読みいただきありがとうございました!
【補足】 アルファ版新GUIの文字化けを解消する方法
Plastic SCMがアルファ版GUIで立ち上がる事が一部環境であります。
アルファ版GUIでは一部の日本語文字が文字化けして表示されてしまう不具合があります。
Plastic SCMのGUIをLegacy GUIに戻す方法
もし、アルファ版GUIでPlastic SCMが起動した場合は、Legacy GUIに切り替えることができます。
Plastic SCMの画面右上からメニューを開き、「Switch to Legacy GUI」をクリックすることで、今までのPlastic SCMの画面に戻すことが可能です。