私はいつもWindows でVRChatをプレイしています。
本当はすっかりメインPCになってしまった電力効率の良いMacでやりたいのですが、まあ、、、Mac版はありません。Windows版(Steam・Rift)かQuest版しかありません。
先日、Apple WWDC2023で「Game Porting Toolkit」というものが発表されました。(略してGPTK)
また開発中のツールなのですが、簡単に言うとMac上でWindowsゲームを動かせる!というものです。
MacでWindows向けソフトを動かす手段はいくつかあるのですが、(Parallels Desktop, CrossOver, BootCamp(Intel Macのみ));
今回のツールはApple公式というのが最大の特徴で、
Apple Siliconの性能を100%活かせる!
とは変換処理があるため流石にいかないものの、最適化が進めばかなり安定して動くようになることは間違いないと思います。
ターミナル.appを使用する方法が一般的ですが、Whisky.app(GitHub)を使った方法もあります。
かなりお手軽にできるので、まずはWhiskyでやってみるのをお勧めします。
今回はターミナルを使ったインストールを試してみました。
私が試した中で動いたゲームは以下の通り。
- Steam (steamwebhelperが応答しなくなることがある。)
- 原神 (エラー出る時は修復&Persistentフォルダ削除で直る)
- Only Up! (最低設定にすればそこそこ遊べる)
- 黄昏ニ眠ル街
- リトルウィッチノベタ
動かなかったもの
- VRChat (EAC-EOS関連でエラー?VRChat.exe本体の起動には成功)
スクショはソフト終了させようとしたらフリーズしてUnityBugReporterが立ち上がったところです。
Unity 2019.4.40f1というバージョンだということが判明。
アバター・ワールド作成でのUnityは2019.4.31f1で本体も同じだろうと思っていたところ違かったのでビックリ。
- Steam VR (VRChatと一緒に起動はしてくるが、アドオンエラー&Wine側で致命的エラーでまともに動かず)
- リディー&スールのアトリエ (ランチャーは起動するがWine側で致命的エラー発生)
- ヘブンバーンズレッド (全く起動せず)
- ファイナルファンタジーXIV: 暁月のフィナーレ ベンチマーク
- ファイナルファンタジーXVベンチマーク (本体exe直接起動で一応動いたが途中で落ちた)
- BLUE PROTOCOLベンチマーク (エラー。本体exe起動でロード画面出たが進まず)
目標としては、「VRChatをデスクトップモードで動かしたい」とします。
本当はVRモードで動かしたいのですが、Meta QuestをMacにVRモードで接続するソフトやドライバーが無いためまず無理。
WindowsではVirtual DesktopでVR可能ですが、Mac版ではデスクトップモードにのみ対応。
Quest LinkはWindowsのみ。
Virtual Desktop、Quest PC Appともにインストールを試みたが、途中でフリーズしインストールできず。(Quest PC Appは空き容量不足で検証できず)
VRChatの実行を試みる
まずは、以下のコマンドを使ってlaunch.exeを呼び出してみます。}
私の環境でのコマンドと、実行ログを載せておきます。
criticalそうな部分は太字にしています。
MTL_HUD_ENABLED=1 WINEESYNC=1 WINEPREFIX=~/my-game-prefix /usr/local/Cellar/game-porting-toolkit/1.0.2/bin/wine64 'C:\Program Files (x86)\Steam\steamapps\common\VRChat\launch.exe'
esync: up and running.
0024:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0048:fixme:service:svcctl_EnumServicesStatusExW resume handle not supported
Unhandled Exception:
System.ComponentModel.Win32Exception (0x80004005): mono-io-layer-error (54447680)
at System.ServiceProcess.Win32ServiceController.GetServices (System.String machineName, System.ServiceProcess.Win32ServiceController+SERVICE_TYPE serviceType, System.String group) [0x00054] in <aa1af3976ae1414a8ef735fc75da39e7>:0
at System.ServiceProcess.Win32ServiceController.GetServices () [0x0000b] in <aa1af3976ae1414a8ef735fc75da39e7>:0
at System.ServiceProcess.ServiceController.GetServices (System.String machineName) [0x00018] in <aa1af3976ae1414a8ef735fc75da39e7>:0
at System.ServiceProcess.ServiceController.GetServices () [0x00000] in <aa1af3976ae1414a8ef735fc75da39e7>:0
at launch.Program.Main (System.String[] args) [0x00062] in <2d521fa917b2485c99ed4c814635b657>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.ComponentModel.Win32Exception (0x80004005): mono-io-layer-error (54447680)
at System.ServiceProcess.Win32ServiceController.GetServices (System.String machineName, System.ServiceProcess.Win32ServiceController+SERVICE_TYPE serviceType, System.String group) [0x00054] in <aa1af3976ae1414a8ef735fc75da39e7>:0
at System.ServiceProcess.Win32ServiceController.GetServices () [0x0000b] in <aa1af3976ae1414a8ef735fc75da39e7>:0
at System.ServiceProcess.ServiceController.GetServices (System.String machineName) [0x00018] in <aa1af3976ae1414a8ef735fc75da39e7>:0
at System.ServiceProcess.ServiceController.GetServices () [0x00000] in <aa1af3976ae1414a8ef735fc75da39e7>:0
MONO(.Net Framework関連)でエラーになってしまっているようです。
続いて、start_protected_game.exe。(Windows実機でこちらでもVRCが起動することは確認済み)
MTL_HUD_ENABLED=1 WINEESYNC=1 WINEPREFIX=~/my-game-prefix /usr/local/Cellar/game-porting-toolkit/1.0.2/bin/wine64 'C:\Program Files (x86)\Steam\steamapps\common\VRChat\start_protected_game.exe'
esync: up and running.
0024:fixme:module:dlopen_32on64_opengl32 loaded "/usr/local/Cellar/game-porting-toolkit/1.0.2/lib/wine/x86_32on64-unix/opengl32.dll.so" early @ 0x68857000
0024: thread_get_state failed on Apple Silicon - faking zero debug registers
00bc: thread_get_state failed on Apple Silicon - faking zero debug registers
00c0: thread_get_state failed on Apple Silicon - faking zero debug registers
0024:fixme:win:RegisterTouchWindow (00010048 00000003): stub
0024:fixme:d3d:wined3d_guess_card_vendor Received unrecognized GL_VENDOR "Apple". Returning HW_VENDOR_NVIDIA.
0024:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0024:fixme:d3d:wined3d_guess_card_vendor Received unrecognized GL_VENDOR "Apple". Returning HW_VENDOR_NVIDIA.
0100: thread_get_state failed on Apple Silicon - faking zero debug registers
0100:err:d3d:wined3d_check_gl_call >>>>>>> GL_INVALID_FRAMEBUFFER_OPERATION (0x506) from glClear @ /private/tmp/game-porting-toolkit-20230701-6371-16sqo69/wine/dlls/wined3d/context_gl.c / 2330.
00c8:fixme:imm:ImeSetActiveContext (0x37a3f0, 0): stub
00c8:fixme:imm:ImmReleaseContext (0000000000010020, 000000000037A3F0): stub
0024:fixme:imm:ImmReleaseContext (00010048, 034EAA18): stub
0024:fixme:msctf:ThreadMgr_ActivateEx Unimplemented flags 0x4
0024:fixme:imm:ImeSetCompositionString Reading string unimplemented
0024:fixme:imm:NotifyIME NI_CLOSECANDIDATE
0024:fixme:imm:ImeSetActiveContext (0x34eaa18, 1): stub
0104: thread_get_state failed on Apple Silicon - faking zero debug registers
0104:err:kerberos:kerberos_LsaApInitializePackage no Kerberos support, expect problems
0100:fixme:d3d:state_linepattern_w Setting line patterns is not supported in OpenGL core contexts.
0100:fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #5:
0100:fixme:d3d_shader:print_glsl_info_log WARNING: Output of vertex shader 'ffp_varying_texcoord' not read by fragment shader
0108: thread_get_state failed on Apple Silicon - faking zero debug registers
0108:fixme:kernelbase:AppPolicyGetThreadInitializationType FFFFFFFA, 067EFEF8
0104: thread_get_state failed on Apple Silicon - faking zero debug registers
wine: Unhandled illegal instruction at address 00416CF7 (thread 0104), starting debugger...
0104:err:seh:start_debugger Couldn't start debugger L"winedbg --auto 32 284" (2)
Read the Wine Developers Guide on how to set up winedbg or another debugger
一瞬、EACの起動画面が立ち上がるものの、すぐに落ちてしまいました。
なぜか右下が日本語です(ロード中・・・59%)
珍しい。
errはd3d関連とkerberosというものをサポートしていないと書かれていますね・・・
一番最後にはなぜかWineのデバッカーが開始できないというのも書かれています。
EAC側のログファイルもあったため載せておきます。
[14:44:05:224] [Windows] [EAC Launcher] [Info] Localization file loaded, using ja_ja.
[14:44:05:225] [Windows] [EAC Launcher] [Info] Loading the following .json file: 'C:\Program Files (x86)\Steam\steamapps\common\VRChat\EasyAntiCheat\Settings.json'
[14:44:05:227] [Windows] [EAC Launcher] [Info] ProductId: xxxxxxxxxxxxxxxxxx
SandboxId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx DeploymentId: xxxxxxxxxxxxxxxxxx
[14:44:07:344] [Windows] [EAC Launcher] [Info] Will attempt to use the following system font: 'C:\windows\Fonts\Meiryo.ttc'.
[14:44:07:401] [Windows] [EAC Launcher] [Info] Embedded resources successfully loaded.
[14:44:07:414] [Windows] [EAC Launcher] [Info] Will use the custom icon loaded off the disk.
[14:44:07:875] [Windows] [EAC Launcher] [Info] Current progress: 0 (0/0).
[14:44:07:877] [Windows] [EAC Launcher] [Info] Current progress: 0 (0/0).
最初、Meiryoフォントが見つからないエラーが出ていたため、インストールしています。(何故必要?)
特に問題なく動いているように見えます・・・
最後にVRChat.exeを直接起動。
MTL_HUD_ENABLED=1 WINEESYNC=1 WINEPREFIX=~/my-game-prefix /usr/local/Cellar/game-porting-toolkit/1.0.2/bin/wine64 'C:\Program Files (x86)\Steam\steamapps\common\VRChat\vrchat.exe'
起動はしますが、アンチチートプログラムが動作していないため、オンラインに接続できません!惜しい・・・
VRChat本体が起動できれば、あともう少しな感じがしますね!
実際、アンチチートプログラムが実装される前は動いていたらしい。。。
「M1macでも動きます」というような情報があるのはそのためです。
(アンチチートプログラムは2022年7月に導入されました)
続く・・・かも
Macシステム・Wineに詳しい方がいらっしゃったら教えていただきたいです。。。
VRC Macユーザー集会とかあってもいいかも?←どういう集会だよ
今日の一曲
コメント
MACユーザーでVRCに興味を持っている者です。MAC機でVRCができる可能性の片鱗が見えただけでも嬉しいです!調査ありがとうございました。
MACユーザーでVRCに興味を持っている者です。MAC機でVRCができる可能性の片鱗が見えただけでも嬉しいです!調査ありがとうございました。
まささん、初めまして。
閲覧・コメントありがとうございます。
AppleがここまでWindowsゲーミングに力を入れるとは思っていなかったので、ぜひVRChat動くようにしてほしいですね!
MacとWindows間のデータやり取りで不具合が発生したり、よくあるので・・・
VRChat、私も最近(2023/04~、イベント参加し出したのは2023/07~)始めたばかりですが、好きなアバターを着たり色々な集会があっていろんな人とお話できて楽しいですよ〜!
ぜひぜひ大規模イベント「Vket2023Winter」(2023/12/02~2023/12/17)には参加していただきたい!
フレンドリクエストも受け付けています。
よかったらお話ししましょう・・・!
引き続き今後も調査していきたいと思います・・・