毎回、お世話になっています。
開発環境:Visual Studio 2005 Visual C++
開発言語:C/C++ + Win32API + DirectX9
現在、上記の環境・言語でゲームプログラムを作成中です。
そのゲームに、ネットワーク対戦を導入したいと思っています。
そこで質問なのですが、どのように実装すればよいでしょうか?
質問が非常に抽象的で申し訳ないのですが、まずは、DirectPlayやWinSockなどのライブラリの中で、何を使えばいいのか、をアドバイスしていただければと思います。
また、出来ましたら簡単に仕組みを解説していただければ幸いです。
その後、具体的な導入方法について自身で調べてみることにします。
通信の特徴として、
・1vs1の通信対戦
・一回のデータ量は少ないが、ほぼリアルタイムに送信
という感じです。
ネットワークプログラミングにはあまり触れたことがないこともあり未熟な身ですが、ご存知の方がいましたらご教授よろしくお願いします。
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の詳細な説明が書かれています。
お礼が送れて申し訳ありません。
なるほど、詳しく教えてくださり、助かりました。
WinSockを使用して通信部分を組むことにします。
頑張ってみます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Switch向けにpcでc言語でゲームを作っているのですが、開発環境はWindows10のvisua 1 2022/04/02 07:04
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- C言語・C++・C# visual studio 2019 についての質問です 1 2022/09/21 09:58
- Java 助けでください!!!!!!!!!!!! 4月から働き始めた新人SEです。 皆さんの体験談等を教えてい 7 2022/07/28 23:50
- IT・エンジニアリング ITエンジニアの勉強時間や勉強方法について 初めまして閲覧いただきありがとうございます。 当方25歳 4 2022/06/09 18:51
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- 労働相談 合意済み仕様の商品納入後における仕様変更要求への対応について 5 2023/04/19 09:41
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Windows 10 Windows10の回復環境 2 2023/02/03 19:13
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のことです。写真(見にく...
-
c++の勉強方法を教えてくださ...
-
Cのプログラムからアクセスでき...
-
写真のプログラムは、1からnま...
-
C言語 1から20までの逆数の和を...
-
gccを行ってもexeファイルが生...
-
Windows Formアプリからコンソ...
-
10進数からN進数に変換するプロ...
-
0 == False はいいけど
-
プログラミング言語でアプリや...
-
gcc13.2のバグ?
-
c言語でイベントフラグを使った...
-
アプリ開発について 初心者です...
-
c言語
-
VisualStudio2022でC言語プログ...
-
どうして+3
-
C#でログファイルにファイルパ...
-
C# でソフト開発をした事のある...
-
C言語 バッファについて。
-
大量のデータを読み込んで表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語でTCPの3way handshake
-
ネットワークカード2枚挿し TC...
-
Windows端末でのsyslog受信につ...
-
無線LANで任意のパケットを作成...
-
ゲームプログラミングのネット...
-
ソケットを使ったプログラムに...
-
「シェーピング」って何ですか。
-
ネットワーク上に存在しないIP...
-
パケット数のカウント方法
-
任意のTCPパケットを送信するプ...
-
C++言語でのWinsock2を使用した...
-
構造体のメンバをfor文で回したい
-
mailto:の本文に文字数制限はあ...
-
Wi-Fiが繋がらなくなりました N...
-
batファイルでtelnetを起動⇒文...
-
アクセスで有給休暇管理表を作...
-
「ナスネ」がPS4と繋がらないの...
-
EXCEL VBA でユーザー定義型デ...
-
outlookのアドレス帳について
-
逆引き権限委譲とは?
おすすめ情報