ゲームプログラミングでのネットワーク対戦の実装方法

このQ&Aのポイント
  • ゲームプログラミングでネットワーク対戦を実装する方法について教えてください。
  • ネットワーク対戦を導入するためのライブラリや仕組みについて教えてください。
  • ゲームの通信特性やデータ送信の方法について教えてください。
回答を見る
  • ベストアンサー

ゲームプログラミングのネットワーク対戦

毎回、お世話になっています。 開発環境:Visual Studio 2005 Visual C++ 開発言語:C/C++ + Win32API + DirectX9 現在、上記の環境・言語でゲームプログラムを作成中です。 そのゲームに、ネットワーク対戦を導入したいと思っています。 そこで質問なのですが、どのように実装すればよいでしょうか? 質問が非常に抽象的で申し訳ないのですが、まずは、DirectPlayやWinSockなどのライブラリの中で、何を使えばいいのか、をアドバイスしていただければと思います。 また、出来ましたら簡単に仕組みを解説していただければ幸いです。 その後、具体的な導入方法について自身で調べてみることにします。 通信の特徴として、 ・1vs1の通信対戦 ・一回のデータ量は少ないが、ほぼリアルタイムに送信 という感じです。 ネットワークプログラミングにはあまり触れたことがないこともあり未熟な身ですが、ご存知の方がいましたらご教授よろしくお願いします。

noname#75566
noname#75566

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

WinSockで良いと思います。 (DirectPlayを使うメリットってほとんどないと思います。 自分で作スレッドをったりしなくてよかったり ロビーのシステム等が使えるのですが後で応用がききにくいです。 DirectPlayの部分に関しては更新もされていないようですし。) >・1vs1の通信対戦 >・一回のデータ量は少ないが、ほぼリアルタイムに送信 >という感じです。 TCPは1回のパケットのオーバーヘッドがでかいため UDPも使った方がいいのですが最初はTCPのみで組むことをすすめます。 UDPはルーター越えの事を考慮する必要もありますしデフォルトでUDPがふさがれている場合や パケットがロストすることもあり混乱すると思います。 もちろん最終的には環境によってUDPとTCPを自動切換するのがよいです。 TCPとUDPの違いについてはネットで調べてみてください。 (もしパケットの詳細を知りたいのなら「マスタリングTCP/IP」という本がおすすめです。) >出来ましたら簡単に仕組みを解説していただければ幸いです WndProcで非同期モードにする場合と通信部分を別スレッドで実行する方法があるのですが どちらかの方法をとります。 (前者はパケットを受信するとウインドウメッセージが送られる仕組みで 後者は別スレッドでパケットがくるまで待機するという仕組みです。) 最初は「猫でもわかるネットワークプログラミング」という本がお勧めです。 チャットのサンプルコードもあるので参考になるでしょう。 あと余裕があるなら「WinSock2プログラミング-Windows Socket APIによるネットワークプログラミングのすべて」 もあわせて買うとよいと思います。こちらはWinSockの各APIの詳細な説明が書かれています。

noname#75566
質問者

お礼

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

関連するQ&A

  • ゲームの通信のお勧めの参考書は?

    ゲームの通信のお勧めの参考書は? ゲームを作っているんですが、通信対戦を実装させたいので ネット技術を学ぼうと思っています。おそらくWinSock等を使うと思います。 何かお勧めの参考書、またはHP等はありますか? ゲームジャンルはシミュレーションRPGでターンごとに進むので、 リアルタイム性は必要ないです。使用言語はC++とDirectXです。 また、そのほかの技術でおすすめはありますか?

  • ゲームのネットワーク処理のAPIは?

    DirectXを使うオンラインのゲームを作ろうとおもうのですが、 調べたところDirectPlayは8以降から更新されていないそうですが、(廃止?)もう使わない方がいいのでしょうか? その場合、他に通信処理ができるAPI(コンポーネント?)がありましたら、ご教授の方お願いします。

  • C++とゲームプログラミング

    ■C言語とWin32APIでしばらくコーテイングしていましたが、 最近、C++言語を始めた者です。 ■勉強の為、C++とWin32APIで書かれゲームプログラムを探しています。 ■DirectXなどは使用してない物を希望します。 適当なHP(教材)を教えて下さい。

  • ネットワークプログラミング

    初心者の質問です。 C言語に限らず、ネットワークを介したプログラミン グを勉強したいと思っています。 そのような書籍を検索したり、本屋に行って探してい るのですが、高いのでどれを買っていいのかわかりま せん。 初心者にオススメの、ネットワークの理論や、C(V Bでも構いません)を使用したネットワークプログラ ミングの書籍があれば紹介してください。 あとそのような解説があるサイトについても紹介して ください。 ちなみにですが、開発環境はwindows me , Visual C++6.0 , Visual Basic6.0等を使用しています。 追加の質問ですが、ネットワークの勉強するならやっ ぱりLinuxがいいですかね?

  • Cでネットワークプログラミングをするには?

    C++とwin32APIを勉強中の者です。 早速質問なのですが、C言語でネットワークプログラミングを行うにはどうしたらいいのでしょうか? 通信にも色々あるのでしょうが、例えばサーバーに接続したりだとか、PC同士で通信(遠距離や近距離)を行ったりだとかするソフトはどのように実装されているのでしょうか。場合によっては自分でサーバーを開設しなければならないといったこともあるんですかね? というのも将来作りたいと思っているソフトがあって、そのソフトがサーバーから情報を取得したりPC同士での通信(電話みたいなことをしたい)を行うようなプログラムなのですが、通信についてはまったくの素人で、何から勉強したらいいのか分からない状態です。 主な通信にはこんな技術が使われていて、それをプログラムで使うにはこんな知識が必要、みたいなことを教えていただけたら幸いです。 回答よろしくお願いします。

  • ActionScriptでリアルタイムの通信対戦ゲームやMMOは開発可能でしょうか?

    ActionScriptでリアルタイムチャット、リアルタイムでオセロや将棋などの通信対戦ゲーム、さらに大規模なMMOなど開発することはできますでしょうか。また、ActionScriptでオセロや将棋などCPUと対戦するための人工知能(AI)でも作れますでしょうか。 現在、ActionScriptがJavaやCに置き換わってクライアントで動作する点があって、サーバに負荷が少なく、開発がしやすいため、これからは需要が伸びていくと思いますがどうでしょうか。 ラグナログオンラインとかActionScriptで大規模なMMOを開発できそうな感じとか実際にActionScriptでMMOを提供しているゲームはありますでしょうか。 しかし、ラグナロクオンラインなどのMMOはDirectXに対応しているため、それはActionScriptやJavaではなくC言語と開発されたとしか思えませんが…。 分かる方はご回答をお願いします。

    • ベストアンサー
    • Flash
  • 自作ネットワークゲームを作るには

    対人ネットワークゲームを作成しようと考えています といってもゲーム内容は七並べやばばぬき程度のもの(カードを作成し、それを手札に配り、画面上で移動させられればよい)です。 最大の問題と考えているのは誰か別の人とネットワーク接続すること、およびほぼ無料で作成、設置できること、そしてできればプライベートIPアドレス同士でも対戦できることです。 対戦は知り合い同士で行うことができればよいです。 また通信は完全にリアルタイムではなく、1秒間隔くらいで相手のデータを受け取れれば問題ないです。 このようなゲームを作成するにはどのような言語を選択しするのが妥当でしょうか。 プログラム経験はC言語を最初のところだけ(ifとかforとか配列など)学んだ程度です。 よろしくお願いします。

  • ネットワークゲーム

    こんにちは。自分はプログラミングに関してはほとんど初心者に近い者で、学校の授業でVBとJavaをほんの少しかじった程度の経験しかありません。今回お聞きしたいことは、JAVAとC言語の特徴の違いです。というのも、自分はプログラミング初心者ではありますが、ネットワーク対戦型の簡単な(?)ゲームを作ってみたいと考えていて、どの言語が適しているのか知りたいのです。近所の本屋ではC言語の本はどれも分厚くてとっつきにくそうなのですが、JAVAの本は比較的容易な感じで実際に「ネットゲームを作って覚える」といった名前の書籍も見つかました。ですが、実際どの言語でどのレベルまでのゲームが作れるのかわからないので是非ご助言くださいm(_ _)m

    • ベストアンサー
    • Java
  • ゲームを製作する

    windows向けのPCゲームを、Cで作ろうと思うのですが、 ゲーム(TVゲームも含め)を作る際、スクリプト言語(Lua)を使うのは一般的なのでしょうか。 またC + Lua + Directxの環境とC + Lua + OpenGL + OpenALという環境と、どちらがいいのでしょうか。 ちなみにvisual studioを使用しています。

  • ネットワークプログラミングについて

    このたびWinSock2を使用し、ネットワークゲームを制作している者ですが、分からないことがあるので質問します。 通信はTCPで行っていて、メッセージはウィンドウのコールバックに渡しているのですが、連続でSendすると最初のメッセージしか届いていないようです・・・ 特にエラーは出ていないようですし、原因が分からなくてこまっています。あらゆる条件で行いましたが同じでした。 連続でSendというのは、 send("a",2,0); send("b",2,0); send("c",2,0); というようにです。 一定の間隔をあけて送信すればちゃんと届くのですが・・ これは仕様で仕方がないのでしょうか・・・ とてもこまっています、どなたか回答をお願いいたします。