HTML5 キャンバスと Google App Engine の Channel API の学習を始めたばかりです。
アイソメ マップに基づいて簡単なゲーム デモを作成します。今はキャラクターの動きを実装したいのですが、どのように実装すればよいか悩んでいます。
現在のデモ: http://cheukalex.appspot.com
これは私がそれが実装されると思う方法です:
クライアントは移動を処理します。矢印キーを押すと、クライアントが移動を実行し、新しい調整をサーバーに送信します。これは、サーバー上の他のユーザーにブロードキャストされ、キャラクターの位置が更新されます。
私が考えた問題:
「移動速度」を実装したい場合はどうすればよいでしょうか。たとえば、ユーザーが 5 マス歩く速度などです。各動きの間の遅延は、クライアント側で行われます。しかし、それは安全でしょうか?JavaScriptは簡単に編集できるからです。
レイテンシーに対処するにはどうすればよいですか? 単純な追跡タグ ゲームを作成した場合、ユーザーを同期して、あるユーザーが別のユーザーに「タグ付け」しているように見えても、別のユーザーが 1 ~ 2 スクエア後ろにいるのを見ないようにするにはどうすればよいでしょうか?
編集: @nycynik、その通りです。レイテンシは約 200 ミリ秒です。ここでテストしました。
レイテンシ テスト: http://cheukalex.appspot.com/latency
これは、これまでにない最小のレイテンシです。200ミリ秒はかなり速いです。それでは、私のコードが遅いのでしょうか?
ゲーム全体を実装する方法は次のとおりです。
- クライアントがウェブサイトに入る
- サーバーはトークンを作成し、チャネルを開き、クライアント データ ( channel id ) を DB に保存します
- ....いくつかのロジック
- クライアントが矢印キーを押すと、どのクライアントがどの方向に移動したかをサーバーに通知します
- サーバーは動きを受け取り、ロジックを実行し、データベースをループし(現在オンラインのクライアントのみ)、すべてのクライアントにメッセージをブロードキャストし、json でマップ上のすべてのクライアントの位置を示します。その後、クライアントは「移動」します。
これで何か問題がありますか?