UbuntuでVRChatのWorldを作成する

この記事執筆時点でVRChatのWorldやAvatarWindowsで作成することが前提になっています。しかしながら僕は普段WindowsではなくUbuntuを使っているので、できればUbuntuを使って作業したいところです。

今のところ完全にWindowsから脱却することはできていませんが、ある程度UbuntuでWorldの作成ができるレベルになったのでその方法を書いておきます。多分Avatarも同じやり方でできると思います。

そもそもWorldの作成にはUnityを使いますが、Unity自体はWindowsだけでなくUbuntuで動かすことができます。VRChat SDKも問題なくUbuntu上で起動したUnity Editor でimportできます。問題はVRChat SDKのControl PanelからBuild & TestをしようとしてもVRChatが起動しないことです。Worldを作っている間は何度もVRChatを起動して作っているWorldを確認したいのでこれは困ります。

そもそもUbuntuでVRChatを起動できるんでしょうか? できます。

UbuntuにSteamをインストールしてVRChatをインストールします。このままだと起動できないので、SteamのsettingsからSteam Playをenableにします。

このSteam Playの機能を使うとWindows用のアプリがLinuxで実行できるようになります(もちろん全てのWindows用アプリが動くわけではないですが、結構動きます)。内部ではwineからforkしたprotonというソフトウェアが使われています。

以下の内容のvrchat.exeというスクリプトを用意します。これはWindowsのexeファイルではなくただのシェルスクリプトですが、拡張子をexeにしておくことで、後でVRChat SDKのControl PanelのSettingsでVRChat ClientとしてPathを指定できるようになります。

#!/usr/bin/bash
STEAM_COMPAT_DATA_PATH=~/.proton/ ~/.steam/steam/steamapps/common/Proton\ 5.0/proton run /home/$USER/.steam/debian-installation/steamapps/common/VRChat/VRChat.exe "$@"

実行権限をつけておきます。

chmod +x vrchat.exe

この状態で普通にVRChatが起動できます。

./vrchat.exe

こうして起動したVRChat Clientは僕の環境ではなぜかWindowsで起動したときよりも妙に動きがいいです。たまにAvatarが見れなかったりWorldの機能(VideoPlayerとか)が使えなかったりすることがありますが、概ね普通に使えます。

後はVRChat SDKのControl PanelのSettingsでVRChat ClientとしてPathを指定してやればBuild & Testが普通に実行できます。ここまでくればWorld開発のサイクルを問題なく回せると思います。

もうひとつの問題がBuild & Publish for Windowsができないことです。これは解決方法を見つけることができませんでした。途中までは動きますがUnity Editorが強制終了します(これで強制終了するとUnity Hubからプロジェクトを起動できなくなるので、Unityのプロセスを全て終了するか、そのプロジェクト内にあるTemp/UnityLockfileを削除してください)。なのでアップロードするときだけはWindowsを使わざるをえません。VirttualboxなんかにWindowsを入れて使えばいいでしょう。

もしBuild & Publish for WindowsUbuntuから実行する方法を見つけた方がいたらぜひ教えてください。