🍵

【VRChat】VCCをCLIで使う。

2022/09/24に公開

まえがき

VRChat公式がVRChat Creator Companion(通称VCC)とかいうのを作ったらしい。
なんでも、VRChatでのアバターとかワールド制作用で使える色々をまとめて管理できる便利な子だとか。

なるほど、では早速入れてみ

はい、どうやらWindowsでしか動かないらしいです。

と思ったら、ドキュメントにこんなことが書いてありました

The only fully-supported platform at the moment is Windows 10. However, we are working to make the vpm tool available to Mac and Linux users.

ざっくり要約。

完全なサポートはWin10しかできてないけど、vpm(VCC扱うためのパッケージマネージャー、要はVRChat専用のaptみたいなやつ)はMacとかLinuxでも動きまっせ。

だそうです。
しかしながら、どこ探しても日本語の解説記事がなかったのでざっくりドキュメントに書いてある導入方法だけここに記しておきます。
みんなGUI好きなんすね。

前提条件

  • UnityHubがインストール済み
  • VRChatに対応するバージョンのUnityがUnityHubを介してインストール済み
  • ある程度のコマンド操作は可能

インストール

.NET 6 SDKのインストール

まず、VCCを使うにあたって、前述のvpmとかいうパッケージマネージャーをインストールする必要があります。
で、そのvpmを使うためには.NET 6 SDKが必要らしいので、インストールします。
(2022/12/15追記 : Arch Linuxのdotnet-sdkは7.0なので、VPMを使う場合、別途6.0もインストールする必要があります)

Arch Linux (pacman)
$ sudo pacman -S dotnet-sdk-6.0

最近どうもUbuntuでも標準リポジトリに入ったらしい

Ubuntu (apt)
$ sudo apt-get install -y dotnet6

その他のディストリビューションとかmacOSはググってください。

vpmのインストール

下準備が整ったので、dotnetコマンドでvpmをインストールしていきます。

$ dotnet tool install --global vrchat.vpm.cli

正常にインストールできていれば

$ vpm --version

で現在のvpmバージョンが出るはずです。
これでコマンドが存在しない趣旨のメッセージが表示された場合は、おそらくPATHが通っていないので、.bashrcを編集するなりexportコマンドを使うなりしてPATHを通してください。

既にインストール済みのvpmをアップデートする場合は

$ dotnet tool update --global vrchat.vpm.cli

アンインストールは

$ dotnet tool uninstall --global vrchat.vpm.cli

でできます。

テンプレートのインストール

vpmのインストールはできましたが、パッケージマネージャー部分しかインストールされていないので、テンプレート(俗に言うVCCの部分)をインストールしていきます。

$ vpm install templates

でテンプレートがインストールできます。
インストール済みのテンプレートは

$ vpm list templates

で確認できます。
デフォルトでは、BaseWorldAvatarUdonSharp、の4つが入っているはずです。

Unityのインストールパス設定

さて、続いてUnityHubとUnityのインストール先を指定します。
~/.local/share/VRChatCreatorCompanion/settings.json
を開いて、pathToUnityExeにUnity、pathToUnityHubにUnityHubの実行ファイルへのパスを指定します。

UnityHubは、AURからインストールしていれば、
/opt/unityhub/unityhub
になるはずです。

Unityのインストール先は、UnityHubを開き、左上の歯車マークから、Installsタブを開けば出てくるので、その中の
[Unityのインストール先]/[Unityのバージョン]/Editor/Unity
を指定してあげましょう。

settings.jsonにUnityのインストール先を書き込み終えたら

$ vpm check hub

$ vpm check unity

でそれぞれちゃんと設定できてるか確認します。
何故かvpm check hubしたときにエラーが出てきますが、その下にFound Unity Hub version at [指定したパス]ってでてれば問題ないです。

ちなみに、settings.jsonには他にも、デフォルトのプロジェクト作成先とか、バックアップ作成先のパスとか、いろいろ設定できるので、各自お好みで変更しておきましょう。

これで基本的な設定は完了しました。

新規プロジェクトの作成

さて、VCCで新規プロジェクトを作成していきます。

$ vpm new <プロジェクト名> [テンプレート] [-p プロジェクト作成先パス]

で新規プロジェクトの作成ができます。
プロジェクト名は必須、テンプレートは未指定の場合はBaseが使われます。
プロジェクト作成パスが未指定の場合、前述のsettings.json"defaultProjectPath"に記載されているパスが使われます。

テンプレートはデフォルトで、BaseWorldAvatarUdonSharpの3つが入っており、それぞれ

テンプレート 内容
Base アバター、ワールド共に必要な必須パッケージ群
World Base + ワールドアップロードに必要なパッケージ群(SDK3 - Worldsに該当)
Avatar Base + アバターアップロードに必要なパッケージ群(SDK3 - Avatarsに該当)
UdonSharp Base + World + UdonSharp

ちなみに、従来のSDK3 - Worldsに含まれない内容として、Worldsには一緒にClientSimも入ってきます。
(が、正直言ってあまり使い物にならない)

ちなみに、自分でテンプレートを作ることもできるらしいです。

プロジェクトを作成したら、UnityHubを開き、Openを押して、作成したプロジェクトのディレクトリを指定してあげれば、あとは大体今まで通りのVRCSDKです。

プロジェクトの統合

従来のSDKで作成したワールドを、VCCに移行する方法です。
ただし、SDK2には対応していません
一応、公式曰くUnity 2017, 2018, 2019で作成されたプロジェクトであれば統合可能で、UdonSharpとかCyanEmuは自動でVCC対応版にアップデートされるそうです。

なんですが、Unity 2017時代のプロジェクトを統合しようとしてみたら、見事に大量のエラーを吐かれたので、最新版SDKにしてから統合した方が良いでしょう。

2022/11/13追記
どうも統合後に、古いVRCSDKが消されずエラーになるらしいです。
とりあえず、統合後に、プロジェクトフォルダ/Assets直下の
アバターの場合は

  • VRCSDK
    ワールドの場合は
  • VRCSDK
  • VRChat Examples
  • Udon
  • UdonSharp
    と、それらの.metaファイルを削除すれば動くようになります。

既存プロジェクトが何で作られているかは

$ vpm check [プロジェクト名]

で確認できます。
一応、確認した限りだと

出力 内容
AvatarVPM VPMで作成or統合したアバター用プロジェクト
WorldVPM VPMで作成or統合したワールド用プロジェクト
LegacySDK3Avatar SDK3 - Avatarで作成されたプロジェクト
LegacySDK3World SDK3 - Worldで作成されたプロジェクト
LegacySDK2 SDK2で作成されたプロジェクト

って感じの出力になるっぽいです。

ということで、パッケージの統合を行います

$ vpm migrate project [プロジェクト名]

で統合が始まります。

LegacyProjectという名前のプロジェクトを統合した場合、
LegacyProject-Migratedって感じで統合したプロジェクトが出てきます。
しかもこのvpm migrate、どういうわけか統合先ディレクトリの明示的な指定ができません
というか他のコマンドだと-pオプションで出力先を明示的に指定できるんですけど、なんでこれだけできないんですかね。
わけがわからないよ。
ということで、

$ vpm migrate project [プロジェクト名]&&mv [プロジェクト名]/[プロジェクト名]-Migrated ./

って感じにしないといけないわけです。
クソ面倒。

リポジトリのインストール

VPMでリポジトリの更新とかそこら辺が管理できるようになったっぽいんですが。
調べる限り対応させてるアセットがどこにもないので実際に確認できてません。

とりあえず動作未確認ですがやり方だけ置いときます。

現在インストールされているリポジトリ一覧は

$ vpm list repos

リポジトリの追加は

$ vpm add repo <リポジトリのパス>

リポジトリの新規作成は

$ vpm new repo [パス] [--name 名前] [--author メアド]

でできるらしいです。

まとめ

VCC、もといvpm、対応アセットが増えれば色々便利なのかもしれませんが、今の所しょうじきイマイチな感じかなっていうのが率直な感想です。
CUIしかないっていうのも、まあGUIしかないより幾分かマシではありますが、正直なんかなぁって感じですし、ついでに言えばWorldアセットに至っては、MacとかLinuxとかのUNIX互換環境だとプロジェクトの作成はできてもアップロードができないとかいう不具合が相変わらず残ってます。
まあ、GUIに関しては多分誰かがそのうちフロントエンド作ってくれるでしょう。

参考文献とか

Discussion