Unityでネットワークマルチ要素のあるゲームを開発していて、一番面倒なのは、ビルドしないと複数のゲームを開けないので、マルチプレイのテストをするたびにイチイチビルドするハメになる事です。
ちょっとした調整を入れるたびにビルド待ち。うんざりですね。ビルドの待ち時間というのはすなわち人生をドブに捨ててる時間です。
ちょっとしたプロトタイプならすぐにビルド完了するのでそこまで苦痛ではありませんが、開発が進むにつれ、ゲームのビルドには信じられないくらい時間がかかるようになっていきます。
つまり、段々と開発のイテレーション速度が低下していき、開発終盤には開発速度が限りなくゼロに近づいていって、全く進まなくなるという不思議現象が起きます。
もしも、一つのプロジェクトを複数のUnityエディタで開ければ、ビルドしなくてもマルチプレイのテストができるのに…
そこで活躍するのがこちらのParrelSyncです!
https://github.com/VeriorPies/ParrelSync
こちらのアセットを使えば、一つのプロジェクトを複数のUnityエディタで開けます!
もうイチイチビルドしなくてもマルチプレイのテストが可能です!
原理
実はParrelSyncが出る以前から一つのプロジェクトを複数のUnityエディタで開く方法は存在しました。
それは、UnityプロジェクトのAssetsとProjectSettingとPackagesのフォルダのシンボリックリンクを張る方法です。Assetsの中のファイルを変更したら当然シンボリックリンク側にも反映されます。実質一つのUnityプロジェクトを複数のエディタで開ける事になります。
ParrelSyncも実は同じ手法を使ってます。
ParrelSyncのいいところは、エディタ拡張から簡単にシンボリックリンクを生成してクローンプロジェクトを作って管理できることです。あとWindows以外にMacにも対応してます。
インストール
Githubでunitypackageが配布されてるのでそれを入れればOKです。
upmパッケージもサポートされており、パッケージマネージャからGit URLを入れるだけでインストール可能です。
使い方
インストールするとUnityエディタのメニューにParrelSyncという項目ができてます。その中にクローンマネージャという項目があります。
クローンマネージャからクローンプロジェクトを生成したり削除したりできます。クローンプロジェクトを新しいUnityエディタで簡単に開くこともできます。
高度な使い方
クローンプロジェクトにはオリジナルのプロジェクトの変更が自動的に反映されますが、逆に言うとクローンそれぞれに固有の処理をさせたくてもできないという事ですが、APIを使えば固有処理が可能になります。
こちらのページにAPIの説明があります。
1.ClonesManager.IsClone()で自分が今クローンプロジェクトかどうかが取得できるので、処理を出し分けできます。
2.クローンマネージャでそれぞれのクローンプロジェクトに固有の引数を渡すことができます。ClonesManager.GetArgument()で渡した引数が取得できます。
例えばクローンプロジェクトでプレイした時はAI操作に切り替わるみたいなテスト用処理を書けます。
別PCから開く
これは裏技的なテクですが、工夫すればLAN内の別PCからクローンプロジェクトを開く事もできます。
\\192.168.0.1\UnityProject…的な感じで直接IPアドレスからパスを指定してクローンプロジェクトを開こうとしても失敗します。
しかし、ネットワークドライブの割り当てを行って、G:\UnityProject…的な感じでドライブレターからクローンプロジェクトを開く形にすれば行けました。(こんな方法がサポートされてるわけじゃないので、いまはできるけど、いつできなくなってもおかしくない点に注意)Windowsでは行けましたが他のOSだと行けるか分かりません。
この時、できればネットワークドライブのドライブレターは元PCのドライブ名と一致させとく方のがオススメです。(つまり、元PCがGドライブならネットワークドライブもGドライブにする)何故なら、元PCのプロジェクトで、もしローカルのパッケージをインストールしていた場合、別PCから開いた時にローカルパッケージのパスがネットワークドライブのパスと一致してないと開けないからです。他にも、プログラム内などからローカルパスの参照などがあった場合にパスが一致してないとトラブルの元です。
おわり
ParrelSyncを使えばイチイチビルドしなくてもネットワークマルチのテストができて、非常に便利です。
簡単なテクですが、このテクを使うのと使わないのでは、開発速度が倍くらい違ってくるかもしれません。
是非試してみてください。
ちなみにParrelSyncを使ってると”気に入ったらGitHubでスターを付けてね!”みたいなダイアログが出てくる事があります。こんなもん仕込むなよ…。ここだけはイラっとさせられますが、多分一度きりなので我慢です。一度きりとは言え、色んなPCでプロジェクトを使ってるとそれぞれのPCで一度ずつ表示されるので結構イラッとするかもしれません。ソース内のAskFeedbackDialog.csってのを消せば出なくなると思います。