Unityを使った共同開発におけるプロジェクトファイル共有方法比較
はじめに
(ここから追記: 2022年5月6日)
この記事の情報は多少古くなっているので気を付けてください。
特にここ最近になってUnity Collaborateが完全にPlasticSCMへ移行するなど大きく変化しています。
PlasticSCMについてはあまり使ってないので何とも言えませんが、Unity上で完結させたい場合や、Gitの学習コスト(特にエンジニア以外のメンバー)がきつい場合などはかなり有力な選択肢になってくると思います。
なお、僕は現在Gitをメインに利用しています。
リモートリポジトリは基本的にGitHubよりGitLabの方がおすすめです。*1
GitのGUIクライアントは、有料のForkをとても気に入って使っています。
無料のものならSourcetreeか、IDE付属のものなどを使うのもアリだと思います。
普段CLIで使う必要はないと思います。
いずれにしても、Gitを利用するのであれば基礎は変わらないので、以下の解説動画(自作)が参考になるかもしれません。
何も知らない状態から10分ちょっとでGitHubを使ったUnityプロジェクトの共有ができるように、というコンセプトで作った動画です。*2
(ここまで追記: 2022年5月6日)
ゲームジャムとかで共同開発することが何度かあったので、悩みの種になりがちな(というか現在進行形で悩んでいる)ファイル共有方法について比較ついでにざっと整理してみる。
なお、僕は基本的にプログラマの立場でやっている。
といっても、プログラムを共同開発できた経験はほぼ皆無という……。*4
ファイル共有方法
バージョン管理システム(VCS)を使う
Unity Collaborate
- 公式:Unity Teams の一部である Unity Collaborate で共同制作。
- ブランチの必要がないなら*5一番楽で簡単
- 無料で使えるのは1GBで3人まで(Unity Studentを利用したら一応25GBで5人まで使える。Cloud Buildが使えるのはかなり便利)
Git
- 公式:Git (git-scm.com)
- 言わずと知れた分散型VCS
- 大きなバイナリの管理は比較的苦手(というか本来専門外)なので本来ゲーム開発にはあまり向かない
- と言っても、相当な大規模プロジェクトでもない限り設定をミスらなければ大体何とかなる
- VCSと言ったらこれというレベルの人気度なので情報も豊富
- ついでに言えば無料で使えるホスティングサービスの選択肢が多い(無料でほぼ無制限に使えるのはおそらくGitのみ
Subversion
- 公式:Apache Subversion
- 集中型VCSといったらこれという印象だが、僕は未だに使ったことがない
- 大きなバイナリを管理する場合はGitより向いているとも考えられる
- 都合の良いホスティングサービスがあれば……というところ。これを一人で使う気にはあまりなれない
PlasticSCM
- 公式:Plastic SCM - The Distributed Version Control for Big Projects
- Unityが買収したらしいバージョン管理システム*6
- 現状情報は少なめだが、もしかしたら今後Unityにおけるバージョン管理システムの最適解になるかも?
- 分散型と集中型を同時に使えるっぽい?それぞれの良いとこどりをしたという感じでかなり魅力的に見える。*7
- 無料で使えるのは5GBで3人まで
Perforce
- 公式:Perforce | アプリケーション開発者向けソリューション
- 大規模ゲーム開発と言ったらこれというイメージ。知らんけど
- 高価らしいが、価格が書かれてないのでわからない。企業専用という感じ
- 無料で使えるのは5人まで(基本的に自分でサーバーを立てる必要アリ?)
- メインと思われるHelix Core以外にも色々あるし、面白そうなので試しに一人で触ってみるのもアリかも
unitypackageをGoogleドライブなどで投げ合う
- Assets > Export Package... からunitypackageをエクスポートできる
- このやり方だと多分Project Settingsがエクスポートされない*8
- つらい
- 大抵一人でやったほうがマシ↓
素材データを一人に集めて、Unity上の作業は全部一人に任せる
- プログラマが(実質)一人の場合は基本これ
- コンフリクトが発生しないので楽だが、一人で実装できるスピードには限界がある*9
- 他の人が試せるように、切りのいい段階毎にプロジェクトファイルをunitypackageかzip辺りで共有する必要がある?
- つらいけどある程度自動化できなくもない
結論
というわけで、現状無料でまともに4人以上の共同開発をしようと思うとGitになると考えられる。
ただ、Gitを知らない人に一から教える状況になってしまうとこれまたつらいのが何とかしたいところ……。
そういう場合はGitHub for Unityを使ったりするのがいいのだろうか……できればSourcetreeの方が良いと思うんだけど……むむむ。
そんな感じ。
*1:GitLFS管理外のファイルの厳格なサイズ制限(100MB, Unityプロジェクトでは、特に.assetファイルに注意する必要があります(2敗)。これに一度引っかかるとpushできなくなりかなり面倒です。)があったり、無料で使えるGitLFSの容量制限が厳しかったり(アカウント・組織ごとに1GB)など、GitHubではUnityプロジェクトを管理するのが難しいのに対し、GitLabはリポジトリごとに無料で10GBまで使えるので割と余裕があって良いです。
ついでにブランチの保護なんかも無料で出来て心強かったり。
なお、人数や容量によってはAzure DevOpsのGitリポジトリ機能(Repos)の方が良い可能性もあります。
*2:流石にGitについて深く解説している時間は無かったので、そこら辺はある程度使いながら他で調べたりしつつ理解してもらおうというスタイルです。……が、Gitについては初心者向けで信頼できそうな情報が意外と少ないように感じるので、そのうちなんか書ければとか思っています。(僕の情報が客観的に信頼できるとは言ってません)
*3:この動画も今見返すと羞恥がすごい(いつもの)
*4:ゲームジャムでは時間の制約が厳しいこともあり、他の人に教えたりタスクを割り振ったりする余裕がなく、大体一人で実装してしまっている感じである
*5:一人二人で開発するのでもない限り、ブランチは必須だと思われるが
*6:参考:ゲーム開発のためのバージョン管理 | ゲーム用のソース管理ソフトウェア | Plastic SCM | Unity
*7:その分逆に複雑になる恐れもありそうだが……ひとまず使ってみたい
*8:エクスポートしたい場合のやり方: https://qiita.com/void_vtuber/items/8e1a9b176b240aac2fb5
*9:限界はある……が、ぶっちゃけプログラミングのタスクを割り振るよりも自分で全部やったほうが速いし楽なので今までのチーム開発は結局大体これになってしまっていた