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

リリース 3.10.0

Momo the Monster
VRChat開発者

概要

SDKバージョン 3.10.0 では、VRChat DynamicsWorlds に導入されました!これには PhysBonesContactsVRC Constraints、およびそれらすべてのUdon統合が含まれます。さらに、ワールドの永続化(World Persistence)において、データ使用状況の情報と制限が公開されました。

情報

このリリースは当初バージョン 3.9.1 でしたが、APIの非互換性によりバージョンが引き上げられました。

新機能

  • VRChat Dynamics are now supported in Worlds!
    • PhysBonesContacts、およびVRC ConstraintsWorldsプロジェクトで利用可能になりました。
    • これらのコンポーネントにはすべて、スクリプトで操作するための新しいUdon APIとイベントが用意されています!
    • これはWorlds SDKにおいて最も要望の多かった機能の一つです。皆さんがこれを使ってどのようなものを作り出すのか、とても楽しみにしています!
  • ワールドの永続化(Persistence)において、Storage Informationを取得するためのAPIが追加されました。
    • これには、GetPlayerDataStorageUsageGetPlayerDataStorageLimitRequestStorageUsageUpdateという3つの新しい関数が含まれます。
    • Request関数は、新しいOnPersistenceUsageUpdatedイベントと対になっています。
    • また、PlayerDataの使用状況に関する2つの新しいイベント、OnPlayerDataStorageWarningOnPlayerDataStorageExceededも追加されました。

修正と変更

  • ワールドプロジェクトにおいて、スポーン地点がそのワールドのリスポーン高さを下回っている場合に、検証警告が表示されるようになりました。
  • ワールドプロジェクトにおけるスポーン地点が見つからない場合の処理が改善されました。
  • プロジェクトの読み込み時およびアセンブリのリロード時の内部ログ出力を削減しました。
  • アバターおよびワールドIDの先頭と末尾にある空白文字が削除されるようになりました。
  • VRChatのコンストレイントコンポーネントがインスペクターで表示されている状態で、そのソースとなるTransformを削除した際にSDKがクラッシュする問題を修正しました。
  • バリデーションウィンドウが更新されるたびに、シーン内のアバターに適用されたカスタムポーズやアニメーションが意図せずリセットされてしまう問題を修正しました。

修正と変更: 3.9.1-beta.1 から 3.9.1-beta.2

  • VRCContactReceiver.UpdateContentTypes() を、IEnumerable(文字列)ではなく文字列の配列を受け取るように変更しました。これにより、このメソッドを含むUdonグラフが正しくコンパイルされない問題が解決されます。
    • 以前U#でこのメソッドを使用しており、string[]以外のものを渡していた場合は、スクリプトを更新して文字列配列を渡すように変更してください。
  • 一部のコミュニティ製ツールとの意図しない互換性の破壊を修正しました。
    • 具体的には、PhysBoneGrabHelper クラスを元のアセンブリの場所に戻しました。
  • ワールド内のPhysBones、Contacts、およびVRC Constraintsに対してUdonに公開されるシンボルのリストから name を削除しました。
    • これは混乱を招く原因となっており、いずれにせよ .gameObject プロパティからアクセス可能であるためです。
  • コンタクトレシーバーにおいて、「Allow Self」および「Allow Others」オプションは、受信側の送信元がアバターの一部である場合にのみ適用されるようになりました。つまり、ワールド内のコンタクト送信元を扱う場合、これらの設定は使用されません。
    • アバター上のレシーバーがワールドのコンタクト送信元を検知したくない場合は、「Content Types」で「World」を無効にできることを覚えておいてください。
  • PhysBones、Contacts、およびVRC Constraintsが、VRCPlayerObject上で使用された際に正しく動作するようになりました。
  • Object.Instantiate()を使用してワールド内でインスタンス化されたPhysBonesが、固まったままにならず正しくシミュレーションされるようになりました。
    • インスタンス化されたオブジェクト上のUdonビヘイビアが同期されないのと同様に、この方法でインスタンス化されたPhysBonesの掴み(Grabs)やポーズ(poses)もクライアント間で同期されません。
  • Udon Class Exposure Treeにおいて、実際には公開されているにもかかわらず「not exposed(非公開)」と表示されていた一部の項目を修正しました。これは主に、最近追加されたダイナミクスコンポーネントに影響していました。
  • アップロード処理が途中で中断された場合に、誤って「missing thumbnail(サムネイルが見つかりません)」というエラーが出てアバターのアップロードに失敗していた問題を修正しました。

修正と変更: 3.9.1-beta.2 から 3.10.0-beta.1 および 3.10.0

  • PhysBonesで使用されるPermissionFilter構造体に関する互換性の変更。
    • 引数を取らないデフォルトコンストラクタを含む、新しいコンストラクタが追加されました。これらのコンストラクタはcontentTypesプロパティをEverythingに設定します。これにより、一部の既存のコミュニティパッケージとの非互換性が解消されます。
    • SDKの予定リリースバージョンが、十分に解消できなかった互換性の問題が残っているため、3.9.1から3.10.0に変更されました。
  • WorldsプロジェクトでClientSimを使用している際、OnPhysBoneGrabbed()がグラブを開始したプレイヤーを正しく取得できない問題を修正しました。
  • サムネイルが添付されていないアバターをアップロードできてしまうケースを修正しました。

既知の問題

  • ビルド中に「All pipe instances are busy」というエラーが表示されることがまれにあります。これはUnity側の問題です。エディターを再起動してから再度試してください。