2016-09-22 10 views
0

私はオンラインビリヤードゲームを作っています。私はシングルプレイヤー、オンラインアカウントシステム、オンライン在庫システムなどのすべての仕組みを終えました。すべてうまくいっていますが、今は一番難しいところです。私はフレームごとに各ボールの位置を同期しようとしましたが、動きが滑らかではなかったので、ボールは前後に移動し、一般的に「悪い」と見えました。誰にもこれに対する解決策はありますか?ミニクリップのような他のビリヤードゲームはどうやってやっているのですか?私は正直なところで立ち往生し、物理学の同期を扱うのはそれほどうまくいかないことを知るために、ユニティビリヤードゲームでマルチプレイヤーを実装する最良の方法は何ですか?

ここではもっと良い選択でしょうか?

ご協力いただきありがとうございます。ありがとうございました!

答えて

0

これは既にPUNで行われる:https://www.assetstore.unity3d.com/en/#!/content/15802

あなたは、同期設定で再生したり、(PUNパッケージにDemoSynchronizationを参照してください)カスタムOnPhotonSerializeView実装しようとすることができます。同期クライアントで物理シミュレーションが無効になっていることを確認してください。物理シミュレーションのサンプルについては、DemoBoxを参照してください。

ボールが行に沿ってのみ移動できる場合は、フレームごとにすべての位置を送信しないでください。ボールが衝突したときにのみ位置と速度を送信し、間に単純な速度シミュレーションを行います。これはより包括的な物理学でも機能しますが、一般的なルールは同じです:キーポイントで同期させます。もちろん、これは自動同期ほど単純ではありません。

また、古典的なビリヤードはターンベースのゲームであり、プレイヤーとのやりとりの複雑さはすべてありません。最悪の場合、現在のプレーヤーのクライアントにシミュレーションを記録し、他のプレーヤーに再生させることができます。

+0

ねえ、ボールの速度、位置、角速度を同期させましたが、結果は同じではなく、クライアントごとに異なります。どんな助け? – Ssiro

+0

デモボックスで使用される物理的実装はどうですか?それは何らかの理由であなたのために働かないのですか? – photonians

関連する問題