私はフラッシュが初めてです。Java で記述されたサーバーと通信する必要がある Flash (ブラウザーで実行) でゲーム クライアントを作成することを計画しています。クライアントとサーバー間の接続は永続的である必要があります。
私は XMLSocket を知っています - それが唯一の方法ですか? 推奨事項はありますか?
ありがとう!
私はフラッシュが初めてです。Java で記述されたサーバーと通信する必要がある Flash (ブラウザーで実行) でゲーム クライアントを作成することを計画しています。クライアントとサーバー間の接続は永続的である必要があります。
私は XMLSocket を知っています - それが唯一の方法ですか? 推奨事項はありますか?
ありがとう!
サーバーと通信するときに実際の TCP を使用できるSocketクラスがあります。欠点 - プロトコルを自分で実装する必要があります (ほとんどの場合、HTTP クライアントを実装しています。誰かが既に実装している可能性があります)。
私は、Flash と Java の間のソケット通信を実験してきました。XMLSocket に対する Socket の利点の 1 つは帯域幅です。これは、バイナリ データを書き込むことができるためです。たとえば、単一のエンティティの位置を次のように送信できます。
writeShort(entity.id); writeFloat(entity.x); writeFloat(entity.y);
これはわずか10バイトです。
Java は、DataStreams または ByteBuffers のいずれかで同様のプリミティブ読み取り/書き込み関数をサポートします。
実際には、古い io Java ソケットと新しい io メソッドのどちらかを選択する必要があるため、サーバー側は Flash 側よりも複雑です。新しい io メソッドのパフォーマンスははるかに優れていますが、より複雑で、落とし穴がたくさんあります。
サーバーで使用可能なセキュリティ ポリシー ファイルがあることを確認します。詳細については、このSOの質問/回答をご覧ください。
学習と楽しみのためにゲームを作成するつもりですか? それ以外の場合は、既存のゲーム サーバーを使用するか、少なくともそのオプションの利点と欠点を調査することをお勧めします。
いくつかのプロジェクトでSmartfoxServer ( http://www.smartfoxserver.com ) を使用しましたが、完璧ではありませんが、多くの問題を解決してくれます (必要に応じて Java で拡張機能を作成できます)。ElectroServer http://www.electro-server.com/も似ていると思います。オープン ソース サーバー Red5 http://osflash.org/red5も参照してください。
xml でデータを送信する以外に、AMF を使用してデータを送信できるかどうかを調べることもできます。(ビット数が少ないほど) 小さい可能性があります。