プロが教えるわが家の防犯対策術!

毎回、お世話になっています。

開発環境:Visual Studio 2005 Visual C++
開発言語:C/C++ + Win32API + DirectX9

現在、上記の環境・言語でゲームプログラムを作成中です。
そのゲームに、ネットワーク対戦を導入したいと思っています。
そこで質問なのですが、どのように実装すればよいでしょうか?

質問が非常に抽象的で申し訳ないのですが、まずは、DirectPlayやWinSockなどのライブラリの中で、何を使えばいいのか、をアドバイスしていただければと思います。
また、出来ましたら簡単に仕組みを解説していただければ幸いです。
その後、具体的な導入方法について自身で調べてみることにします。

通信の特徴として、
・1vs1の通信対戦
・一回のデータ量は少ないが、ほぼリアルタイムに送信
という感じです。

ネットワークプログラミングにはあまり触れたことがないこともあり未熟な身ですが、ご存知の方がいましたらご教授よろしくお願いします。

A 回答 (1件)

WinSockで良いと思います。


(DirectPlayを使うメリットってほとんどないと思います。
自分で作スレッドをったりしなくてよかったり
ロビーのシステム等が使えるのですが後で応用がききにくいです。
DirectPlayの部分に関しては更新もされていないようですし。)

>・1vs1の通信対戦
>・一回のデータ量は少ないが、ほぼリアルタイムに送信
>という感じです。
TCPは1回のパケットのオーバーヘッドがでかいため
UDPも使った方がいいのですが最初はTCPのみで組むことをすすめます。
UDPはルーター越えの事を考慮する必要もありますしデフォルトでUDPがふさがれている場合や
パケットがロストすることもあり混乱すると思います。
もちろん最終的には環境によってUDPとTCPを自動切換するのがよいです。
TCPとUDPの違いについてはネットで調べてみてください。
(もしパケットの詳細を知りたいのなら「マスタリングTCP/IP」という本がおすすめです。)


>出来ましたら簡単に仕組みを解説していただければ幸いです
WndProcで非同期モードにする場合と通信部分を別スレッドで実行する方法があるのですが
どちらかの方法をとります。
(前者はパケットを受信するとウインドウメッセージが送られる仕組みで
後者は別スレッドでパケットがくるまで待機するという仕組みです。)
最初は「猫でもわかるネットワークプログラミング」という本がお勧めです。
チャットのサンプルコードもあるので参考になるでしょう。

あと余裕があるなら「WinSock2プログラミング-Windows Socket APIによるネットワークプログラミングのすべて」
もあわせて買うとよいと思います。こちらはWinSockの各APIの詳細な説明が書かれています。
    • good
    • 0
この回答へのお礼

お礼が送れて申し訳ありません。

なるほど、詳しく教えてくださり、助かりました。
WinSockを使用して通信部分を組むことにします。
頑張ってみます。ありがとうございました。

お礼日時:2007/02/11 17:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!