Photon と Unity3D エンジンを使用してマルチプレイヤー ゲームを構築しています。クライアント間でデータと値を送信するために photonView.RPC を使用しています。しかし、ネットワークの問題が原因で、送信された RPC がクライアントで実行されないことがあります。
RPC が正常に送信されたことをクライアント (RPC の送信者) から確認する方法はありますか?
Photon と Unity3D エンジンを使用してマルチプレイヤー ゲームを構築しています。クライアント間でデータと値を送信するために photonView.RPC を使用しています。しかし、ネットワークの問題が原因で、送信された RPC がクライアントで実行されないことがあります。
RPC が正常に送信されたことをクライアント (RPC の送信者) から確認する方法はありますか?
概念的に、それを行う唯一の方法は、
A は ID コード (「321321777」など) を含むメッセージを送信します。
A は確認を待ちます...
Bはメッセージを受け取ります
Bは「321321777を受け取りました」というメッセージを送信します
本当にできることはそれだけです。これにより、タイムアウトの概念が導入されることに注意してください。上記は実際にはこのようになります...
A は ID コード (「321321777」など) を含むメッセージを送信します。
A は確認を待ちます...
(たとえば) 0.5 秒後に確認がない場合は、もう一度送信します。それを続けてください。
Bはメッセージを受け取ります。ラベルは 321321777 です
Bは「321321777を受け取りました」というメッセージを送信します
B が受信した「321321777」のコピーがそれ以上あると、B はそれを無視します。ただし、B が複数の「321321777」を受信した場合、B は再び「321321777」の確認メッセージを送信します。
原則として、「ビデオゲームはこのようには機能しません」ということは注目に値します。通常、1 秒間に無数のポジション (またはその他のポジション) を送信するだけで、いくつかが見逃されても問題ありません。
いずれにせよ、Unity ネットワークは「信頼できる送信」を行うことも忘れないでください。「PUN」にはおそらくそのような概念があります。