# VRCX

[![GitHub Workflow Status](https://github.com/vrcx-team/VRCX/actions/workflows/github_actions.yml/badge.svg)](https://github.com/vrcx-team/VRCX/actions/workflows/github_actions.yml)
[![VRCX Discord Invite](https://img.shields.io/discord/854071236363550763?color=%237289DA&logo=discord&logoColor=white)](https://vrcx.pypy.moe/discord)

| [English](./README.md) | **日本語** |

VRCX は VRChat のアシスタント用アプリケーションで、フレンドに関する情報の提供や管理を行うツールです。本アプリケーションは非公式の「VRChat API SDK」を使用しています。

VRCX は VRChat によって承認されておらず、VRChat または VRChat の公式に関与する者の意見や見解を反映していません。VRChat 及び関連する全てのプロパティは VRChat 株式会社の商標または登録商標です。VRChat © VRChat 株式会社

pypy と Natsumi は VRCX の使用によって発生したいかなる問題にも責任を負いません。**_自己責任でご使用ください！_**

## インストール方法

- 最新のリリースを[ダウンロード](https://github.com/vrcx-team/VRCX/releases/latest)
- `VRCX_Setup.exe` を実行

## これは VRChat の利用規約に違反しますか？

**一言で言えば:** いいえ。

_VRChat Discord の #faq に記載されている、API の使用に関する公式声明です。_
![vrchat api](https://user-images.githubusercontent.com/11171153/114227156-b559c400-99c8-11eb-9df6-ee6615b8118e.png)

# スクリーンショット

<details><summary><h2>クリックして展開</h2></summary>

### ログイン

![login](https://cdn.discordapp.com/attachments/1098123459634139167/1098150151471759430/image.png)
![2fa](https://cdn.discordapp.com/attachments/1098123459634139167/1098150435002527794/image.png)

### フィード

![feed](https://cdn.discordapp.com/attachments/1098123459634139167/1098151111963181066/image.png)

### ゲームログ

![gamelog](https://cdn.discordapp.com/attachments/1098123459634139167/1098151427148370010/image.png)

### ユーザー情報

#### 自分

![me](https://cdn.discordapp.com/attachments/1098123459634139167/1098151750277537792/image.png)

#### フレンド

![friend](https://cdn.discordapp.com/attachments/1098123459634139167/1098152156294565949/image.png)

### ワールド

![instance](https://cdn.discordapp.com/attachments/1098123459634139167/1098153504834588782/image.png)
![info](https://cdn.discordapp.com/attachments/1098123459634139167/1098153774377336883/image.png)

### お気に入り

#### フレンド

![friend](https://cdn.discordapp.com/attachments/1098123459634139167/1098157650761490452/image.png)

#### ワールド

![world](https://cdn.discordapp.com/attachments/1098123459634139167/1098158554944376832/image.png)

#### アバター

![avatar](https://cdn.discordapp.com/attachments/1098123459634139167/1098158789254983691/image.png)

### フレンドログ

![friendlog](https://cdn.discordapp.com/attachments/1098123459634139167/1098159999936643113/image.png)

### モデレーション

![moderation](https://cdn.discordapp.com/attachments/1098123459634139167/1098161183229493258/image.png)

### 通知

![notification](https://cdn.discordapp.com/attachments/1098123459634139167/1098161309847134328/image.png)

### プレイヤーリスト

![image](https://cdn.discordapp.com/attachments/1098123459634139167/1098161447348994108/image.png)

### 設定

#### 一般

![general](https://cdn.discordapp.com/attachments/1098123459634139167/1098161646989492264/image.png)

#### 外観

![appearance](https://cdn.discordapp.com/attachments/1098123459634139167/1098161809220960267/image.png)

#### 通知

![notif](https://cdn.discordapp.com/attachments/1098123459634139167/1098162131234472006/image.png)

#### 手首オーバーレイ

![overlay](https://cdn.discordapp.com/attachments/1098123459634139167/1098162284574036008/image.png)

#### Discord Presence

![rpc_setting](https://cdn.discordapp.com/attachments/1098123459634139167/1098162381718302731/image.png)

#### 詳細

![advance_1](https://cdn.discordapp.com/attachments/1098123459634139167/1098162553642811503/image.png)

### その他

#### Join

![join](https://cdn.discordapp.com/attachments/1098123459634139167/1098162833662947388/image.png)

#### インスタンス作成

![create](https://cdn.discordapp.com/attachments/1098123459634139167/1098163388267376700/image.png)

#### Discord Rich Presence

![rpc](https://user-images.githubusercontent.com/82102170/224725991-3fc81a3d-ca15-4dcb-a057-d713803bd666.png)

### VR オーバーレイ (旧バージョン)

![overlay1](https://user-images.githubusercontent.com/82102170/178281800-af4c69da-a0f5-43d8-9515-e960e1a16b39.png)
![overlay2](https://user-images.githubusercontent.com/82102170/178281884-ea1df88c-f16c-4c83-825c-c285f49b1ff1.png)

</details>

## テーマ

テーマをインストールするには `custom.css` を `%AppData%\VRCX` フォルダーに配置し、 `Shift+Alt+R` を押してください。

[Dark Vanilla](https://github.com/MintLily/Dark-Vanilla/tree/main/VRCX) by [MintLily](https://github.com/MintLily)
![dark-vanilla](https://user-images.githubusercontent.com/11171153/190136499-13ab2fe3-9fed-4b45-a764-e8665993d994.png)

[Pink Theme](https://github.com/kamiya10/VRCX-theme/tree/main/pink) by [Kamiya](https://github.com/kamiya10)
![pink-theme](https://user-images.githubusercontent.com/11171153/190136121-4d6ba6e5-4a04-43b2-8264-0325c858f2d8.png)

[Material 3](https://github.com/kamiya10/VRCX-theme/tree/main/m3) by [Kamiya](https://github.com/kamiya10)
![material-3](https://user-images.githubusercontent.com/11171153/190136730-65268fac-1dab-4528-813c-b4d5e5e86f7d.png)

## 起動オプション

- `--debug` Chromium DevTools 付きで VRCX を起動します。
- `--config="C:\VRCX.sqlite3"` VRCX で使用するデータベースのカスタムパスを指定します。
- `--gpufix` VRCX のオーバーレイ描画用 GPU を Index 1 に設定することで、セカンダリ GPU に描画を強制し、また統合 GPU を使用している場合は、専用 GPU に描画を強制します。
- `vrcx://user/usr_id` ユーザーダイアログを開きます。
- `vrcx://avatar/avtr_id` アバターダイアログを開きます。
- `vrcx://group/grp_id` グループダイアログを開きます。
- `vrcx://world/wrld_id` ワールドダイアログを開きます。
- `vrcx://world/wrld_id:12345` インスタンス情報付きのワールドダイアログを開きます。
- `vrcx://world/https://vrch.at/0gmbxjpj` アンロックされたインスタンス情報付きのワールドダイアログを開きます。
- `vrcx://import/avatar/avtr_id,avtr_id...` お気に入りアバターのインポートダイアログを開きます。
- `vrcx://import/world/wrld_id,wrld_id...` お気に入りワールドのインポートダイアログを開きます。
- `vrcx://import/friend/usr_id,usr_id...` お気に入りフレンドのインポートダイアログを開きます。
- `vrcx://addavatardb/https://website/vrcx_search.php` リモートアバターデータベースプロバイダーのダイアログを開きます。

## ショートカットキー

- `Ctrl + Shift + I` Chromium DevTools を開きます。
- `Ctrl + R` VRCX を再起動します。
- `Shift + Alt + R` カスタム CSS を再読み込みします。

## よくある問題

### **VRCX の動作が重い**

- 設定 > 外観 > テーブルの最大数
  - 値を 100 ぐらいまで下げることで、RAM に保存されるエントリの量が減ります。
- 設定 > 詳細 > キャッシュの自動消去
  - 値を 3 ぐらいまで下げることで、RAM に保存される不要なワールド、ユーザー、アバターの量が減ります。

### **白い画面で固まる**

この現象は、さまざまな原因で引き起こされる可能性があります:

- [Microsoft Visual C++ Redistributable 2019](https://aka.ms/vs/17/release/vc_redist.x64.exe) をインストールしてみてください。
- PC を再起動してみてください。他のプロセスがデータベースファイルを読もうとしている可能性があります。
- アンチウイルスソフトを無効化してみてください。Avast と AVG は Cef/VRCX を削除してしまいます。
- AverMedia AssistCentral をアンイストールしてみてください。原因は不明ですが、VRCX に問題を起こしてしまいます。
- RAM が不安定な可能性があります。もしオーバークロックしているなら定格に戻し、MemTest86 を実行してください。
- VRCX を管理者として実行してみてください。理由は不明ですが、まれに直ることがあります。
- データベースを再作成してみてください。VRCX を終了し、 `%AppData%\VRCX` を開いて、 `VRCX.sqlite3` を `Backup.sqlite3` などにリネームして現在のデータベースをバックアップします。もし以前のデータを保持したい場合は以下の手順に従ってデータベースを修復してください。

### **SteamVR オーバーレイが動かない**

- VRCX を `--gpufix` の起動オプション付きで起動してみてください。
- SteamVR のセーフモードを無効化してください。
- もし内蔵 GPU を搭載している PC を使用しているなら、[こちらの手順](https://www.windowsdigitals.com/force-chrome-firefox-game-to-use-nvidia-gpu-integrated-graphics/)に従ってみてください。

### **データベースを修復する方法**

- VRCX を終了する。
- [DB Browser for SQLite](https://sqlitebrowser.org/)をインストールする。
- ファイル > データベースを開く...
- `%AppData%\VRCX\` に移動し、 `VRCX.sqlite3` を選択する。
- ファイル > エクスポート > データベースを SQL ファイルへ...
- 保存ボタンをクリックし、適当な場所にファイルを保存する。
- ファイル > データベースを閉じる
- `%AppData%\VRCX\` にある `VRCX.sqlite3` の名前を `Backup.sqlite3` などに変更する。
- ファイル > インポート > SQL からデータベースへ...
- はいを押して新しいデータベースを作成。
- `%AppData%\VRCX\` に移動し、 `VRCX.sqlite3` と名前を付けて保存。
- ファイル > 変更を書き込み
- DB Browser を閉じ、不要になった `*.sql` ファイルを削除。

## Linux で実行する方法

[RinLovesYou](https://github.com/RinLovesYou)氏のガイドより。

- Wine をインストール

  - Arch Linux: [multilib](https://wiki.archlinux.org/title/Multilib)リポジトリを有効化し、 `sudo pacman -S wine` を実行することでインストールできます。

  - Ubuntu: [wiki](https://wiki.winehq.org/Ubuntu)を参照してください。

- Winetricks Magic

  > Wine 7.0rc5 以降を使用している必要があります！それ以前のバージョンではテストしていません。Wine 7.0 以降では VRCX の動作に必要な「.NET Framework」のフルインストールが可能になりました。

  - クリーンな Wine Prefix で実行します。VRCX 用に新規で作成するか、`rm -rf ~/.wine` でメインの Prefix を使用します。

  - Prefix 内でも VRCX.exe でも、DXVK を使用して**いない**ことを確認してください。VRCX の動作には WineD3D が必要です。

  - `winetricks --force -q dotnet472 corefonts` 依存関係をインストールするプロセスを静かに、かつ簡単に自動化できます。

  - `wine winecfg -v win10` Prefix で使用する Windows のバージョンを指定します。

  - 108 より新しい CEF は、現時点では wine staging 8.4 と互換性がないため、`Linux` ブランチが必要です。Linux ブランチの Actions タブにある VRCX の Artifact をダウンロードし、展開します。

  - これで `wine VRCX.exe` が実行できるようになるはずです。CEFSharp に関するエラーが出た場合は `wine VRCX.exe -no-cef-sandbox` を試してみてください。

- メモ

  - Linux 上での VRCX はメモリリークが発生することが知られています。メモリ使用量に注意するか、あるいはこまめに再起動するようにしてください。

  - Intel iGPU + NVIDIA GPU のノートパソコンを使用している場合は `nvidia-settings` でグラフィックデバイスを NVIDIA GPU に強制する必要があります。

  ![image](https://camo.githubusercontent.com/ed672a01defae989c4bf5963c0cc9db973b42203e1e5e927f3341c6a9115beb8/68747470733a2f2f63646e2e646973636f72646170702e636f6d2f6174746163686d656e74732f3835343037313233363336333535303736362f3933353531333532313839373233343435322f756e6b6e6f776e2e706e67)

## ソースコードからビルドする方法

- ソースコードを入手

  - 最新の[zip](https://github.com/vrcx-team/VRCX/archive/master.zip)をダウンロードするか、 `git clone` でクローンする。

- .NET でビルド

  - [Visual Studio](https://visualstudio.microsoft.com/) をインストールする。
  - Visual Studio を起動し、「プロジェクトやソリューションを開く」をクリックし、ソースコード内の[ソリューション ファイル](https://docs.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file)を開く。
  - [ビルド構成](https://docs.microsoft.com/en-us/visualstudio/ide/understanding-build-configurations?view=vs-2019)から `Debug` を `Release` に変更し、プラットフォームを `x64` に変更する。
  - [NuGet](https://docs.microsoft.com/en-us/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio) パッケージを復元する。
  - ソリューションを[ビルド](https://docs.microsoft.com/en-us/visualstudio/ide/building-and-cleaning-projects-and-solutions-in-visual-studio)する。

- Node.js でビルド

  - [Node.js](https://nodejs.org/en/download/) をダウンロードし、インストールする。
  - `build-node.js.cmd` を実行する。
  - `make-junction.cmd` を実行する。

- リリース用 zip を作成
  - [Bandizip](https://www.bandisoft.com/bandizip) 用の `make-zip.cmd` または [7-Zip](https://www.7-zip.org) 用の `make-zip-7z.cmd` を実行する。
