カテゴリー

アクセスカウンター


since 1996/06/14

Count per Day

  • 25今日の訪問者数:
  • 24昨日の訪問者数:
  • 702月別訪問者数:
  • 0現在オンライン中の人数:

通信制御

blog-2007-06-24-dx11 今回は一連のDirectXがプログラミングの続きですが、DirectXとはあまり関係ないプログラムのネタです。通信対戦ゲームやMMORPGのようなゲームには、ネットワーク経由での通信制御が必要です。では、通信をどうやって実現しようか…?
今回考えた候補は以下の通り。

  • DirectPlay(DirectXのモジュールの一つで、ネットワーク通信専用モジュール。
  • フリーのソレっぽいモジュール(今回はHawkNLを使ってみた)
  • 気合いで一から書く。

まぁ、最近blogでこのネタを扱わなかったのは、この辺でモンモンとしていたからです。
まず、DirectPlay。これは評判が悪いですね。何でかよく知らないけど。
まぁ、でも評判云々の前に、まるで通信対戦の概念を知らない私が選り好みをしてる方がアフォっぽいので、コーディングしてみた。
結果は、まず参考となるサイトが少ないですね。DirectX SDKのサンプルとかチュートリアルも、今使っている2007/Febには付いて無くて、2003/Summerまで遡ってGETしましたが、参考になるのがソレとHELPくらいしか無いので、非常に辛いです。サーバ/クライアントで繋がるくらいまで組んだけど、よく分からない分制御がしづらいのでDirectPlayはやめにしました。
次は、HawkNL。英語サイトしか無いのでわからん(笑。
まぁ、コードは組んだけど、せっかくこういうモジュールを使うなら、完全なブラックボックスで、あまり中身を意識しなくてもいいような使い方をしたい。SocketとかMulti Threadとかの機能があるけど、結局通常のAPIの焼き直しっぽくて、、、まぁ、不採用。

で、結局Socket(winsock)を使って自前で組みました。winsockのプログラミングって過去にやった記憶があったので本棚を漁ったら→こんな本を発見(リンク先は最近の本だけど、うちにあったのは同じやつの1998年度版)。既に10年近くの本だけど、winsock自体の仕様がほとんど変わってないってのは嬉しいね。
とりあえず、思いだし程度に1、2時間程度でサラっと読み返して、後はインターネットでサンプルコードを探してコーディング。いきなり現状のクライアントに組み込むのもアレなので、テストクライアントも作成って感じです。
現状はここまで。
簡単な通信は実現できたから、あとはマルチタスク化して多量の通信でも難なくこなせるような仕組みにしたいな。まだもうちょっといろいろと時間がかかりそうです。
以下、買ってないけど参考になりそうな本。これからこういうプログラミングをする人は参考にしてみて下さい。

 

 

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>