web-dev-qa-db-ja.com

インターネットを介したオブジェクトのロック

オブジェクトを描画するために使用できる個別指導アプリケーションを構築しており、オブジェクトをドラッグすることができます。誰かがオブジェクトをクリックしてドラッグし始めたときに何をするのが最善か知りたいのですが。

私はそれを「ロック」するべきだと言われました-それが同時に他の誰かにつかまれてそれをドラッグすることができないようにしてください。しかし、それにはサーバーに(そして個別指導セッションに接続している他のすべてのユーザーに)リクエストを送信してサーバーをロックする必要があり、少し時間がかかる場合があります(教師が米国にいて、学生がアフリカにダイヤルアップでいる場合はどうなりますか?)また、オブジェクトが自分でロックされていることがわかるまでループするように言われました。このようにすると、ユーザーは数秒間、つかんでドラッグしてオブジェクトを作成できない場合があります(UXデザインの問題)。

描いたオブジェクトをドラッグできるようにすることを提案したかもしれませんが、それは短所のようです。助言がありますか?ありがとうございました!

3
jn1kk

多くのオンラインリアルタイムゲームがレイテンシーを処理する方法は、先に進んでローカルでアクションを実行し、後で中央サーバーから信頼できる結果が得られたときにそれを修正することです。あなたの場合、オブジェクトをローカルでドラッグし始め、ドラッグが開始されるとすぐにサーバーにロック要求を送信しますが、すでにロックを所有しているように動作します。ロック要求が成功した場合は、通常どおり続行します。他の誰かがあなたを殴った場合、ローカルクライアントはドラッグを終了し、ロックが解除されるまで、勝ったユーザーにドラッグの制御を与えます。他のユーザーには、中止されたドラッグの試行は表示されません。

まれに誰かがドラッグを「盗む」のが、毎回ロックを待つよりも煩わしいのか、それとも少ないのかを自分で判断する必要があります。私の意見では、最も一般的なケースで遅延を取り除くことが好ましい解決策です。

2
Karl Bielefeldt