I want to get the UniqueID assigned to players in the world, which is assigned by filling in gaps from the beginning.
はい
PlayerId can be obtained at VRCPlayerApi.
This will be given a unique ID in the order of join, including players who have joined in the past.
Details:
Unlike the PlayerId above, this request is for a unique ID to be assigned to the currently joined players.
Example:
There are A to E. At this time, IDs are assigned as follows.
“A:1 B:2 C:3 D:4 E:5”
Here, when A and D are left and F, G, and H join,
I would like it to be assigned as
“B:2 C:3 E:5 F:1 G:4 H:6”
Reason:
This is useful when granting objects to be synchronized to a player, such as game worlds.
The current PlayerId is not enough to determine exactly which objects are available at the time of Join.
* PlayerId cannot be assigned an Index of a finite number of objects, because PlayerId is infinitely increasing.
* If two people who enter the room at the same time get the owner of the same object, it will not be determined until the resolution is completed.
With this UniqueID, it can be used as the Index of an object at Join time, eliminating the need to deal with the difficulties of synchronization.
It would be good if it could be obtained by VRCPlayerApi in the OnPlayerJoin and OnPlayerLeft arguments.
=======================
Original text:
VRCPlayerApiにて、PlayerIdを取得できます。
これは、過去にJoinしたプレイヤーを含めて、Join順にUniqueなIDが付与されていると思います。
詳細:
本リクエストは、上記PlayerIdと異なり、現在Joinしているプレイヤーの中でUniqueなIDを付与してほしいというものです。
例:
A~Eさんがいます。このとき、IDは以下のように付与されています。
"A:1 B:2 C:3 D:4 E:5"
ここで、A、Dさんがいなくなり、F、G、HさんがJoinしたとき、
"B:2 C:3 E:5 F:1 G:4 H:6"
と付与してほしいです。
理由:
ゲームワールドなど、プレイヤーに対して同期するオブジェクトを付与する時に有用です。
現在のPlayerIdだけでは、Join時にどのオブジェクトが使用可能であるか、厳密に判断できません。
* PlayerIdは無限に増加するため、有限のオブジェクトのIndexを割り当てることはできない。
* 同時に入室した2人が同じオブジェクトのオーナーを取得する場合、その解決が終わるまでは確定しない。
今回のUniqueIDがあればJoin時にオブジェクトのIndexとして使用できるため、同期の難しい対応をする必要がなくなります。
OnPlayerJoin、OnPlayerLeftの引数のVRCPlayerApiにて取得できれば良いと思います。
Log In
はい
This is in addition to the information released today about Persistence.
In conclusion, Persistence is
insufficient
for this request.* “This is useful when granting objects to be synchronized to a player, such as in the game worlds.
is satisfied.
The current PlayerId is not enough to determine exactly which objects are available at the time of Join.
is not enough.
Example:
Suppose I want to spawn each player from a different room when they join.
* I want a player to be alone from Join, e.g. in a maze.
* I want the player to review the settings and rules before interacting with other players.
In that case, you would use a unique index value for each player for a pre-prepared table of coordinates.
I can synchronize the used indexes with PlayerObject, but I still need to take into account collisions for the synchronization.
The UniqueId in this request does not need to be synchronized and is uniquely determined at join time, so there is no need to consider difficult collisions.
=======================
Original text:
本日、Persistenceについて情報が公開されたため補足です。
結論として、本リクエストに対してPersistenceでは
不十分
です。* 「This is useful when granting objects to be synchronized to a player, such as game worlds.」
については満たしています。
「The current PlayerId is not enough to determine exactly which objects are available at the time of Join.」
については満たしていません。
例:
プレイヤーがJoinした時に、それぞれ別の部屋からSpawnさせたいとします。
* 迷路などで、Join時からプレイヤーを一人にしたい.
* 他のプレイヤーとの交流の前に設定や規約の確認をさせたい.
その場合、事前に用意した座標のテーブルに対して、プレイヤーごとにユニークなindexの値を使用することになります。
使用したindexをPlayerObjectで同期する事はできますが、やはり、同期をまつ分衝突の考慮を行う必要があります。
本リクエストのUniqueIdであれば、同期を行わずJoin時に一意に定まるため、難しい衝突の考慮が不要となります