Actionscript でマルチプレイヤー ゲームを構築するための適切なフレームワークは何ですか?
Blackberry Playbook の Asteroids のようなマルチプレイヤー 2D シューティング ゲームを作成したいと考えています。私の主な関心事は遅延です.弾丸が非常にぎくしゃくしていて、予期せず人に当たった場合、シューティングゲームは楽しくありません.
UDP ベースのフレームワークが最適だと思います。誰かが私を正しい方向に向けることができますか?
Actionscript でマルチプレイヤー ゲームを構築するための適切なフレームワークは何ですか?
Blackberry Playbook の Asteroids のようなマルチプレイヤー 2D シューティング ゲームを作成したいと考えています。私の主な関心事は遅延です.弾丸が非常にぎくしゃくしていて、予期せず人に当たった場合、シューティングゲームは楽しくありません.
UDP ベースのフレームワークが最適だと思います。誰かが私を正しい方向に向けることができますか?
Java (Blackberry/Android) や Playbook のネイティブ SDK ではなく、Flash/Flex を使用する場合 -
インスピレーションとして本があります: http://www.packtpub.com/flash-10-multiplayer-game-essentials/bookサーバー側で Pulse SDK を使用します。ただし、サーバー側で独自のソケットプログラムを使用できます。小さなカード ゲームで Perl を TCP ソケット サーバー (gzip 圧縮された XML を送信) として使用していますが、これはあなたのシューティング ゲームでは機能しません。
Flash はそのままでは UDP をサポートしていません
しかし、今後のFlash Media Server Enterprise 4には、ピアツーピア ネットワーキング プロトコルRTMFPがあります(価格は普通の人には手が届きません)。
したがって、最善の策は、RTMFP 用の Amazon サービスを購入することです。そうすれば、従量課金制で拡張性を維持できます...
すぐに使えるものはたくさんありますが、基本的なセットアップは非常にシンプルですが、いくつかのオプションがあります。
最も一般的なのはサーバー プッシュです。Flash Media Server、Adobe の LiveCycle Data Services、または SmartFoxServer などの他のツールがこれを実行できます。このセットアップでは、サーバーは、サーバーに接続するすべての人への接続を保存し、アプリケーションのデータが変更されるたびに、接続されている人にアプリケーションの状態を渡すまたは「プッシュ」します。
もう 1 つのオプションはロング プルと呼ばれ、実際にはどの Web サーバーでも実行できます。これがどのように機能するかは、データがアプリケーションの状態を保存することです。アプリケーションが起動するとサーバーが呼び出され、応答するとクライアントがサーバーを再度呼び出します。
他にもいくつかの方法がありますが、これらが最も一般的です。しかし、これは HTTP、UDP、AMF、XMPP などのプロトコルとは何の関係もありません。プロトコルは、データが送信される形式です。これらのすぐに使用できるサーバーでは、通常、これらのいくつかを出力しますが、最速の形式は AMF のようなバイナリですが、常に最良であるとは限りません。それぞれに利点があります。
何百万人ものユーザーがいる世界を征服するゲームについて話している場合は、スケーリングと、2 台または 100 台のサーバーが必要な場合に何が起こるか、およびそれらがどのように相互に通信するかについて考える必要があります。ただし、現時点では、サーバーが処理を行うほど速度が低下することに注意してください。少量のデータを送信する場合は、より多くのユーザーを処理できます。1 つの効率的なサーバーを作成することに固執し、そこにたどり着いたら後でそれについて心配してください。
また、もしあれば、どのサーバー側プログラミング言語をいじりたいかについても考える必要があります。一部のサービスでは、何もできません。これらは通常、お金がかかり、それほど多くのことをしません。Adobe は Java が好きですが、ほとんどすべての言語でこれらすべてのプロトコルを出力するサーバーがあります。私の最近のお気に入りは、サーバー上で JavaScript を実行する超高速な方法であるNode.jsです。Node.js には HTTP サーバーが組み込まれていますが、 SocketまたはXMLSocketを介して基本的なテキストを送信する単純なサーバーを作成するのも同様に簡単です。このようなサーバーは、何千ものユーザーを簡単に処理できます。Socket.IO を使用するゲームは数多くあります。私が話していることの簡単な例を見たい場合は、こちらを参照してください。
サーバーで一定の post/get リクエストを実行してゲームのデータを取得することもできますが、マルチプレイヤー シューターの場合は SmartFoxServer をサージします: http://www.smartfoxserver.com/
箱から出して、Adobe Airはデータグラムパケットを介してUDPをサポートしています。 http://help.adobe.com/en_us/air/reference/html/flash/net/datagramsocket.html
フラッシュ用の特定のネットワーク API は見つかりませんでしたが、作成できるかもしれません。libgren はオープン ソースであり、参照用に使用できます。
RTMFP を調べることもできますが、オーディオ/ビデオといくつかのメッセージの送信に重点が置かれています (TCP 経由だと思います)。