VRChat 非公式日本語ドキュメント

永続性 (Persistence)

永続化(Persistence)とは?

永続化(Persistence)を使用すると、ワールド内でハイスコア、インベントリ、プレイヤーの最終位置、通貨、アンロック要素、各種設定などを保存できるようになります。プレイヤーがワールドから退出して後で戻ってきたとき、Udonはその保存されたデータにアクセス可能です。

このデータはVRChatのサーバーに保存され、すべてのプラットフォームおよび同じワールドのすべてのインスタンスでアクセスできます。データはユーザーのアカウントに紐付いているため、プレイヤーがまったく異なるデバイスから同じワールドにアクセスした場合でも、Udonはそのワールドのデータにアクセスできます。

永続化を利用する主要な方法の一つが PlayerData です。PlayerDataは各プレイヤーに関連付けられたキー・値(Key-Value)形式のストレージシステムです。あらゆるスクリプトからデータにアクセスでき、すべての整数型、float、double、Vector、Color、文字列、およびバイト配列を保存可能です。

永続化には PlayerObjects も含まれます。このコンポーネントを持つゲームオブジェクトは、各プレイヤーに対して自動的にインスタンス化されます。UdonスクリプトをPlayerObjectsにアタッチすることができ、さらにそこに VRCEnablePersistence コンポーネントを追加すれば、それらのオブジェクト上の同期されたすべてのデータが永続化されます。PlayerObjectsには永続化以外にも多くの用途があり、プレイヤーごとのオブジェクトプールと同様のユースケースで機能します。ヘルスバー、戦闘システム用のコライダー、オーナー権限の移譲を必要としない堅牢なネットワークシステムなど、インスタンス内の各プレイヤーに紐付けるべきあらゆるものに使用できます。

Persistenceの使用例

Persistence Examplesを参照して、UnityでPersistenceを試してみてください。すべてのサンプルはExample Centralで入手可能です。

永続的なユーザーデータ

Persistence(永続化)によって保存されるデータは「User Data」と呼ばれます。Persistenceには、UdonがVRChatのサーバーに対して保存および読み込みを行える2種類のUser Dataが存在します。

各環境におけるデータストレージ

開発中にワールドをテストする場合、ユーザーデータ(User Data)は以下の場所に保存されます。

制限事項

ワールドでPersistenceを使用する際は、以下の制限事項に留意してください。

永続的なプレハブの作成

永続的な動作を持つプレハブを作成する際は、作成者のプロジェクト内にある他のプレハブとどのように相互作用するかを考慮することが重要です。

まず、ほとんどの プレハブに適している PlayerData ではなく PlayerObjects の使用を検討してください。PlayerObjects はプレハブの階層内に適切に収められており、大量のデータや頻繁に変更されるデータの永続化に適しています。ローカルプレイヤーの PlayerDataすべて変更すると、変更されていないデータを含め、すべての PlayerData が送信される点に注意してください。ワールド内で PlayerData を使用するプレハブが増えるたびにこの収集データが増加し、毎回送信が必要となるため、ワールドのネットワーク使用量が急速に増大し、帯域幅の問題を引き起こす可能性があります。

それでもプレハブのデータの一部に PlayerData が適している場合は、プレハブで使用するすべてのキーにプレフィックス(接頭辞)を追加することを検討してください。例えば、Momoさんの永続的なポストプロセス設定であれば、「Momo-PPP-」というプレフィックスを選択し、以下のようなキーを使用します。

このアプローチにより、他のプレハブと名前が競合する可能性を大幅に減らすことができます。例えば上記の「Weight」キーは、2つの異なるプレハブが「Weight」パラメータを持っていると簡単に競合してしまいますが、他のプレハブがプレフィックスとして「Momo-PPP」を使用する可能性は非常に低いでしょう。

ユーザーデータの削除

danger

この操作は元に戻せません!ユーザーデータを削除した後に復元することはできません。

自身の永続的なユーザーデータを削除することができます。これにより、あなた(またはプレイヤー)は「最初からやり直す」ことや、技術的な問題を解決することが可能です。

ユーザーデータをリセットする方法は、VRChat内および弊社のウェブサイト上の両方に複数存在します。

VRChat内から

VRChat内でユーザーデータをリセットするのが最も簡単な方法です。

特定のワールドのデータ

以下の手順で、任意のワールドのユーザーデータを削除できます:

  1. VRChatのメインメニューからワールドを選択します。
  2. 下にスクロールして「Actions」セクションを表示します。
  3. 「Reset User Data」を選択します。
    • このボタンは、そのワールドのユーザーデータを持っている場合にのみ表示されます。
  4. 「YES, RESET」を選択します。

現在永続データを持つワールドにいる場合は、ユーザーデータをリセットする前に、そのワールドから退出するか再入室する必要があるかもしれません。

すべてのワールドのデータ

以下の手順で、訪れたことのあるすべてのワールドのユーザーデータを削除することもできます:

  1. VRChatのメインメニューから設定を開きます。
  2. 「Debug」セクションを選択します。
  3. 下にスクロールして「User Data」セクションを表示します。
  4. 「Reset All User Data」を選択します。
  5. 「YES, RESET」を選択します。

VRChatウェブサイトから

VRChatのウェブサイト上でもユーザーデータをリセットできます。必ずVRChatアカウントを持っていることを確認してください。Meta、Pico、またはViveportのアカウントのみをお持ちの場合は、あらかじめVRChatアカウントにリンクさせる必要があります。

特定のワールドのデータ

以下の手順で、特定のワールドの自身のユーザーデータをリセットできます:

  1. VRChat.com上のワールドページを開きます。
  2. 下にスクロールして「User Data」セクションを表示します。
    • そのワールドのユーザーデータを持っていない場合、このセクションは表示されません。
  3. Reset User Dataをクリックします。
  4. 警告を読んだ後、Yesをクリックして確定します。

すべてのワールドのデータ

VRChatのウェブサイトにアクセスして、訪れたことのあるすべてのワールドの自身のユーザーデータをリセットできます:

  1. VRChat.comの設定ページを開きます。
  2. 下にスクロールしてPersistent Dataセクションを表示します。
  3. Reset All User Dataをクリックします。
  4. 警告を読んだ後、Yesをクリックして確定します。

最終更新: