OculusKillerの導入方法

# 2023/05/14更新
OculusKillerのメンテナンスが (実質的に) 終了されました。
以降，バグ報告をする事は不可能であり，不具合が発生したとしても開発者からのサポートは受けられません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/5a1b0bc1-0b25-2c59-c240-16b27632367f.png)

Oculus Dash起因のパフォーマンス低下や不具合に困っている方は「Virtual Dekstop」や「ALVR」を使用することを推奨します。

# これは何？
Meta Quest 2等のMeta製HMDで**Quest Link機能を使用して**PCVRを遊ぶ際に必ず起動してくるアプリケーション「Oculus Dash」を**置き換えて起動させなくする**ことによって**大幅にパフォーマンスを向上させるツールです**[^1]。
Quest Link時のSteamVRやVRゲーム以外にも，その他のアプリケーション (Discordなど) のパフォーマンスも改善されるはずです。

:::note warn
「Virtual Desktop」や「ALVR」では機能しません。「Oculus Rift」「Oculus Rift S」でも動作すると思いますが未検証です。
:::

「Asynchronous Spacewarp[^2]」などの**特定の機能は無効化出来ません**。
これらの機能を無効化したい場合は「[Oculus Tray Tool](https://www.apollyonvr.com/oculus-tray-tool)」や「[fpsVR](https://store.steampowered.com/app/908520)」を使用してください。[^3]
## 注意事項
:::note alert
**Oculus StoreのゲームやOculus VRモードで起動してくるゲームに問題が発生します**。
起動自体はできますがOculus Dashが使用できないため，**ゲーム内に終了ボタンがない場合は終了出来なくなります**。
このようなゲームをプレイしたい場合は [Revive](https://github.com/LibreVR/Revive) を使用する事を推奨します。[^4]

また，仕様上**うっかりUSBケーブルが抜けてしまうとSteamVR含めVRゲームが落ちます**。
Quest Air Linkで接続している場合は**恐らく**接続を終了出来なくなります (未検証)。
:::
勘のいい方はお気付きかもしれませんが，Oculus Dashが使えなくなると**正規の手段では**Linkを終了出来なくなります。[対処法](#終了方法)
# 導入方法 (2023/1/15現在ver1.2.0最新)

以下画像多めです。
LibreQuestのDiscordサーバーに参加するとver2.0のベータ版もダウンロードできますが，そちらは解説しません。

## OculusKillerをダウンロード

[OculusKillerのGitHubリポジトリ](https://github.com/LibreQuest/OculusKiller) にアクセスし，「Releases」から最新の `OculusDash.exe` をダウンロードして任意の場所に保存してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/bc0ce310-4838-1a3f-4d66-d9da888e42ff.png)

## OVRServiceを停止

Windows + R等から「ファイル名を指定して実行」を起動し， `services.msc` を起動してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/f7a9c094-2ba0-e3ed-0226-3fcb5f3db9fb.png)
「Oculus VR Runtime Service」を右クリックして「停止」してください。「Oculus VR **Library** Service」ではないです。ご注意を。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/6cf0ada0-14f6-6440-e71e-ecf497acca76.png)

## OculusDash.exeを置き換え

バニラの `OculusDash.exe` が格納されているディレクトリにアクセスしてください。
デフォルトであればこちらです: `C:\Program Files\Oculus\Support\oculus-dash\dash\bin`

バニラの `OculusDash.exe` を `OculusDash.exe.bak` にリネームしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/cc44da27-e1e7-9075-f22f-1d447dcac3cf.png)

先程ダウンロードした `OculusDash.exe` を配置してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/3c88453a-d96d-4128-538c-cc96970c455b.png)

以下の画像のようになれば導入完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/fa5370d5-b0a2-dc66-3bc6-9528a786de83.png)

## OVRServiceを起動

再度 `services.msc` を起動して「Oculus VR Runtime Service」を右クリックして「開始」してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/e40f10e0-3613-86f7-b2e7-b13e909f4198.png)

正常にサービスを開始できれば導入完了です。

## 動作確認

通常通りQuest Linkを起動してSteamVRが自動起動してくれば導入成功です。お疲れ様でした。
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/15a7634e-b592-3605-a291-37b63793aeb7.gif)
Oculus PCアプリが起動してくるのは仕様です。
**もしOculus Dashが起動した場合は導入失敗しています**。1からやり直してください。

## 終了方法
OculusKillerを導入していると**SteamVRの終了が出来なくなります**。なんならQuest Linkの切断も出来ません。
![2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/1523d5c0-b972-9108-865f-b1b198d736a0.gif)
Quest Linkを切断したい場合はUSBケーブルを直接抜くか，OVRServiceを停止すれば切断出来ます。
なお，切断時**SteamVR等も一緒に終了する**ため「うっかりケーブルが抜けてしまう」ような事はないようにしてください。
バニラの状態でも問題なく切断出来る方法ではありますが，不安であれば [Oculus VR Dash Manager](https://github.com/KrisIsBackAU/Oculus-VR-Dash-Manager) を使用してください。
# トラブルシューティング

ここにない不具合が発生している場合は [Issue](https://github.com/LibreQuest/OculusKiller/issues) を確認し、そこに存在しない (Duplicateでない) なら新規で立ててください。

## SteamVRが自動起動してこない (黒い画面に白い三点リーダーで止まる)

1. バニラの `OculusDash.exe` をリネームする際に「ファイル名拡張子」にチェックが入っておらず，正しくリネーム出来ていない
    1. エクスプローラー上部の「表示」から「ファイル名拡張子」にチェックを入れてリネームしてください。
       また， `OculusDash.exe.bak` が正しく「BAK ファイル」になっているか確認してください。
       ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/a4189b79-b60a-e672-a3ea-423ed6b46e72.png)
2. OVRServiceを再起動する
    1. **HMDをPCから切断し，SteamVRが起動していない状態で** `services.msc` から「Oculus VR Runtime Service」を再起動
3. 何らかの原因でOculusKillerのexeが破損した
    1. GitHubから再ダウンロードしてください。SHA256: `910c41288ad16c7892d56ceeca514c18ed5a9698e9463fbd7ad04aa4d14b7572`

## OpenXRのゲームが起動はしてくるが画面に出ない

OpenXRがSteamVRよりもOculusVRの使用を好む仕様が問題です。
**HMDを接続した状態で**SteamVRを開き，以下の手順を実行してください:
1. SteamVR設定を開く
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/039f7f57-bbc8-23ff-419b-0f24a19a46b4.png)
2. 画面下の「詳細設定」を「表示」に変更
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/8b93d762-fea2-a3a4-fdb3-66b26ad367f1.png)
3. 「開発者」タブ内の「STEAMVRをOPENXRランタイムとして設定」をクリック
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/cb0b9ce5-70ed-6b48-637d-17dc0fc3a72a.png)
4. SteamVRを再起動で適用

なおOculus PCアプリから「OculusはデフォルトのOpenXRランタイムに設定されていません」と怒られますが無視してください。

## 非OpenXRのゲームが起動はしてくるが画面に出ない

[OVR Advanced Settings](https://store.steampowered.com/app/1009850/) が必要です。

1. OVR Advanced Settingsのオーバーレイを開く
2. 「Settings」タブを開く
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/30a6da67-d259-1f98-c93d-dfac59997341.png)
3. 「Force Use SteamVR (Disable Oculus API [experimental])」にチェックを入れる 
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/f1e2a32b-1937-0bd3-b2c3-f11b4885b794.png)
4. SteamVRを再起動で適用
:::note warn
なお，**Oculus StoreのゲームやOculusVRモードで起動してくるゲームは動かなくなります**。Reviveを使用してください。
また，**fpsVRでASWを無効化できなくなったり**，**HMDとコントローラーのバッテリー情報を取得できなくなります**。
:::

[^1]: Oculus Dashは使用していない時でも200MB程のRAMとGPUリソースを食い続けています。性能が低いマシンだと割と辛いです。
[^2]: Metaの開発したVR向けフレーム補間技術ですが、補間精度が低く、逆にVR体験を悪化させてしまう一因でもあります...
[^3]: ASWに関してはOculus Debug Toolから無効化できるはずなんですが...効果を感じていません。
[^4]: 一部ゲームはマルチプレイ機能が使えない場合があります。互換性リストを確認の上導入してください。