

毎回、お世話になっています。
開発環境: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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
C#でTreeViewのCheckBoxのサイ...
-
C言語 列挙型(enum型)変数について
-
VisualStudioでC++クラスを追加...
-
Windows Formアプリからコンソ...
-
visual studio 2022でのC#プロ...
-
c言語
-
スタックフレームの消滅
-
C# で 数式文字列処理を処理す...
-
UART通信の取説で,left floati...
-
C++でデスクトップGUIアプリ開...
-
c#のTLS1.2での通信について
-
C言語 バッファについて。
-
C言語について(初心者)
-
VisualStudioで、コードを印刷...
-
VisualStudio2022でC言語プログ...
-
gcc13.2のバグ?
-
C言語でファクト関数を使わずに...
-
【C言語】全角文字の配列を、全...
-
大量のデータを読み込んで表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ソケットを使ったプログラムに...
-
ゲームプログラミングのネット...
-
Windows端末でのsyslog受信につ...
-
Linuxでパケットのデータ部分を...
-
ネットワーク上に存在しないIP...
-
「シェーピング」って何ですか。
-
C言語でTCPの3way handshake
-
パケット数のカウント方法
-
C++言語でのWinsock2を使用した...
-
LinuxでIPモジュールとデバイス...
-
ユニックス時間(秒)を普通の日...
-
セグメンテーション違反
-
F-09D
-
ネットワークの学習方法
-
パケットの中身について。 始点...
-
構造体のメンバをfor文で回したい
-
batファイルでtelnetを起動⇒文...
-
mailto:の本文に文字数制限はあ...
-
Wi-Fiが繋がらなくなりました N...
-
アクセスで有給休暇管理表を作...
おすすめ情報