個人でFlash(AS3)を使ってネット通信対戦可能な落ち物パズルゲームを制作したいと思っています。

シングルプレイの物やUnion Platformを使ったターン制の通信対戦将棋ゲームは制作経験があります。

リアルタイムに同期が必要なゲームを作る際に参考になる書籍やサイト、ヒントがあればご教授ください。
通信の遅延や処理落ちによる同期ズレの対策はどうやっているのでしょうか?
AS3以外の言語でも大丈夫です。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2010/09/12 18:54:52
  • 終了:2010/09/19 18:55:03

ベストアンサー

id:gp334437g4723k87 No.2

gp334437g4723k87回答回数126ベストアンサー獲得回数202010/09/13 16:35:30

ポイント34pt

サーバー側にFlash Media ServerをインストールするとRTMP(Real-Time Messaging Protocol)というAPIセットが使えるようになり、サーバーを通じたクライアントtoクライントリアルタイムコミュニケーションやサーバーから多数のクライアントへのリアルタイムコミュニケーションが可能となります。大手でFLV形式でのビデオ配信サイトを運用しているところはこのFlash Media Serverを使っている場合が多いです。


http://www.adobe.com/devnet/rtmp.html


TCPのソケットコミュニケショーションを使えば、同じことを実装することは可能ですが、同時接続数(つまり1つのソケットポートへの最大接続数)は確か128に限定されてしまうため、大規模なインターネットサイトでTCPのソケットコミュニケーションを使ってサーバー間通信を実現することは困難だったためにアドビが提供した製品となります。


Flash Media Serverの問題点はライセンス料金が非常に高いということで、私が以前、導入しようと検討した際には200万位していました(今は分かりませんが、それでも60万超はするみたいです)。


予算上の問題で、Flash Media Serverが使えない場合は、FlashでXMLSocketクラスを使うことによってサーバーを通じたTCPのソケットコミュニケーションを行うことができますが、サーバー側でデータをクライアントからクライアントへ仲介するプログラムも別に作る必要があり、やや面倒です。


Flash関連のゲームコアテクノロジーの動向についてはまったく疎いのですが、恐らく、良く見る通信対戦ゲームなどを提供しているサイトのほとんどは手っ取り早くFlash Media Serverを使っているのではないかと思います。


データ転送に関わる遅延の問題に関してですが、Windowsで3Dのネーティブアプリケーションを開発するならまだしもFlashレベルのネットゲームで通信遅延の問題まで考慮して開発を行うことは多分、ないんじゃないかと思います。


Flashの奥は泥沼なみに深いのですが、あなたが、個人で趣味としてプログラム開発しようとしているのか、企業サービスとして開発を考慮しているかで、答えの仕方もかなり異なってきますので、あまり詳しいことは言えません。

id:kochamilk

Flashゲームは個人の趣味で制作しています。

企業サービスのような多くの同時接続数までは必要ないです。

ライブラリを使って今のところプレイヤー同士のメッセージのやりとりまでは成功したのですが

アクション要素のあるゲームでどうやってゲームの同期して遅延を隠するものなのか興味がありました。

Flashでそこまでリアルタイム性が必要な物は作るものではないのでしょうか・・。

回答ありがとうございました。

2010/09/14 02:26:42

その他の回答(2件)

id:hanako393 No.1

hanako393回答回数1142ベストアンサー獲得回数872010/09/12 23:19:33

ポイント35pt

リアルタイムに同期が必要なゲームは作らないことです。

リアルタイムに同期を取ってるかのように見えるゲームを作成することです。

リアルタイム性をあげるのなら、サーバーを介して通信をするようにしないと無理です。

Visual Basic.NET&DirectX 9でネットワークゲームプログラミング Windows2000/XP
安田 隆次
4886487041

id:kochamilk

そう考えればいいのですね。

ありがとうございます。

2010/09/13 00:36:20
id:gp334437g4723k87 No.2

gp334437g4723k87回答回数126ベストアンサー獲得回数202010/09/13 16:35:30ここでベストアンサー

ポイント34pt

サーバー側にFlash Media ServerをインストールするとRTMP(Real-Time Messaging Protocol)というAPIセットが使えるようになり、サーバーを通じたクライアントtoクライントリアルタイムコミュニケーションやサーバーから多数のクライアントへのリアルタイムコミュニケーションが可能となります。大手でFLV形式でのビデオ配信サイトを運用しているところはこのFlash Media Serverを使っている場合が多いです。


http://www.adobe.com/devnet/rtmp.html


TCPのソケットコミュニケショーションを使えば、同じことを実装することは可能ですが、同時接続数(つまり1つのソケットポートへの最大接続数)は確か128に限定されてしまうため、大規模なインターネットサイトでTCPのソケットコミュニケーションを使ってサーバー間通信を実現することは困難だったためにアドビが提供した製品となります。


Flash Media Serverの問題点はライセンス料金が非常に高いということで、私が以前、導入しようと検討した際には200万位していました(今は分かりませんが、それでも60万超はするみたいです)。


予算上の問題で、Flash Media Serverが使えない場合は、FlashでXMLSocketクラスを使うことによってサーバーを通じたTCPのソケットコミュニケーションを行うことができますが、サーバー側でデータをクライアントからクライアントへ仲介するプログラムも別に作る必要があり、やや面倒です。


Flash関連のゲームコアテクノロジーの動向についてはまったく疎いのですが、恐らく、良く見る通信対戦ゲームなどを提供しているサイトのほとんどは手っ取り早くFlash Media Serverを使っているのではないかと思います。


データ転送に関わる遅延の問題に関してですが、Windowsで3Dのネーティブアプリケーションを開発するならまだしもFlashレベルのネットゲームで通信遅延の問題まで考慮して開発を行うことは多分、ないんじゃないかと思います。


Flashの奥は泥沼なみに深いのですが、あなたが、個人で趣味としてプログラム開発しようとしているのか、企業サービスとして開発を考慮しているかで、答えの仕方もかなり異なってきますので、あまり詳しいことは言えません。

id:kochamilk

Flashゲームは個人の趣味で制作しています。

企業サービスのような多くの同時接続数までは必要ないです。

ライブラリを使って今のところプレイヤー同士のメッセージのやりとりまでは成功したのですが

アクション要素のあるゲームでどうやってゲームの同期して遅延を隠するものなのか興味がありました。

Flashでそこまでリアルタイム性が必要な物は作るものではないのでしょうか・・。

回答ありがとうございました。

2010/09/14 02:26:42
id:dfv22 No.3

dfv22回答回数56ベストアンサー獲得回数02010/09/15 00:55:26

ポイント11pt

只今、調べております。

http://www

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません