ページ 11

ネットワーク対戦機能について

Posted: 2010年2月08日(月) 22:43
by シノニム
こんばんわ。いつもお世話になっております

今回はネットワーク機能についてお聞きしたいと思います
まだゲームをプログラミングしているわけではなく企画段階なのですが、大規模ではなく、自分のクラス内規模程度で実装できたらなと思っています

ジャンルはシミュレーションを考えているので、あまりFPSにはこだわっていません
自分で調べたところ、Visual C++.NETを使え、とのことだったのですが、製品版がなかなか考えさせられる値段で困っています

今のところC++のクラス思考が分かる程度ですが、必要なことはどんどん学んでいこうと思ってます

ネットワーク機能について、作ってみた感想や、どの程度スキルが必要か、いいソフト、アドバイスなどあればご教授願います

OSはXPですが、できればVistaとでもネットワークをつなげたらと思っています

一応参考にさせていただいたサイトを貼っておきます
http://msdn.microsoft.com/ja-jp/academic/cc998626.aspx

Re:ネットワーク対戦機能について

Posted: 2010年2月08日(月) 23:10
by たかぎ
とりあえず、スタンドアロンでゲームが作れるだけのスキルは必須でしょう。
それプラスネットワーク関連の知識が必要になります。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 00:12
by array
> 自分で調べたところ、Visual C++.NETを使え、とのことだったのですが、製品版がなかなか考えさせられる値段で困っています

要求を満たしているか分かりませんけど、趣味レベル(興味の範囲)で行うなら、visual studio 2010 bata 2 を使ってみてはでしょう。とりあえず、テスト版ですので料金は発生しませんが、1ヶ月 10日起動だったか、なんらかの制限があったと思います。

http://www.microsoft.com/japan/visualst ... x#download

とりあえず、Ultimateは 最高位エディションだったと思うので機能も最高のパフォーマンスを発揮してくれる
のではないでしょうか。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 00:31
by softya
DirectPlayを使うなら製品版Visual C++.NETは必要ありません。無料版のExpressEdtionで開発出来ます。
ただ、ネットワークの知識が無くては作れるものではありませんし、そもそもたかぎさんの言われる通りネットワークを使わないスタンドアローンのシミュレーションゲームを作れる技術力が無いと話になりません。

参考にしているサイトが理解出来るのなら、すぐに実装してみることは可能だと思います。
その上で問題点を洗い出して行ったらどうでしょうか?

>ネットワーク機能について、作ってみた感想や、どの程度スキルが必要か、いいソフト、アドバイスなどあればご教授願います

私自身はネットゲームは開発したことはないですが、LANとインターネットでは必要とされるノウハウにかなり差があります。インターネットではパケットの遅延が相当でますので、リアルタイムストラテジーやアクション系はかなり辛いですね。1秒間に4~5往復程度とかパケットをやり取り出来ないと思います。
LANだとしても、WinSockなどの通信プログラミングも知らなかったり、パケットキャプチャの使い方も知らない人だと細かい調整はほとんど不可能のちょっとお遊び程度の通信が出来る程度だと思います。

ちなみにサンプルは、見たところそれぞれのPCがサーバーとクライアントとなるLAN用の通信モデルで作られているみたいですね。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 00:58
by Mikan
むかーしに、VisualBasic+Winsockを使用して1:1の対戦オセロを作ったことがあります。
作成時は結構簡単にできるもんだなぁーって思った記憶がありますが、C++となると少し話がかわってくるかと思います。私のは、チャットプログラムの延長線上みたいなプログラムでしたね。

それも1:1ではなく多人数となるとサーバープログラムを用意しなければいけません。
簡単なものでよければVB+Winsockをオススメします。(それでも通信分野の知識は必要ですが)

最初は簡単な1:1でチャットプログラムを作ってみてはいかがでしょうか?
VC++EEとDxLibで出来ますよ。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 02:54
by シノニム
>たかぎさん
ゲーム一本作れる程度には知識はありますが、ネットワーク関係はほとんどノータッチです・・・勉強してみます

>arrayさん
今はまだ企画段階ですが、もし製作が決定すると長期間(3~4カ月)にわたって製作することになると思います。期限がきれる前にネットワーク関係のみ完成させても、後半いじれなくなるというのは少し厳しいかと

>softyaさん
的確な意見、ありがとうございます!とりあえず参考書を買って、1からオンラインについて勉強してみます

>Mikanさん
なるほど・・・確かにオンライン対戦のゲームにチャット機能は必須ですし、それなら試作にもいいかもですね。了解です。とりあえずチャットできるようにしてみます


みなさん稚拙な質問に付き合っていただきありがとうございます。手始めにチャットするプログラムから始めてみようと思います

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 08:08
by Dixq (管理人)
ところでサーバーは用意出来るのでしょうか?
プレイしてくれる人が多くなった場合、そのサーバーの管理費もかなり大変になってきそうです。
専用サーバー一台で目安として何人位のデータまで扱う事が出来るのかとかは知りませんが・・。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 11:31
by softya
>ところでサーバーは用意出来るのでしょうか?

1対1のサーバー・クライアントモデルでプレイするなら専用サーバーは不要です。
多人数プレイでもMMO・RPGじゃない限り専用サーバーはマッチングするだけですので、大規模なサーバーは不要でしょう。サーバーを必要としないP2Pで組むことも考えられます。

>自分のクラス内規模程度で
って部分を私は学校のクラス内って意味に取ったんですが違いますかね?
それだとLANですのでサーバーとかは考えなくて良いのかなと思いました。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 12:06
by Ma
>って部分を私は学校のクラス内って意味に取ったんですが違いますかね?
私は、人数的にクラス規模だととらえました。
自宅にかえって、それぞれが接続するもので、学校内でやるものではないと。
いずれにせよ、言い方がややこしかったかもしれませんね。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 21:16
by Dixq (管理人)
ん、、、起きてすぐに書き込んだので色々と寝ぼけていたようです^^;
私は、改めて読んでみると学校の閉じたLAN内でやるって意味じゃないかなと思いましたがどうなんでしょう?


実は私も初めてsocketプログラムを勉強した時、なんちゃってオンラインゲーム作りました。
なんちゃってオンラインゲームといっても相手のIPアドレスわざわざ事前に調べて入力しないと遊べない実用的ではないものでしたが。

オンラインゲームとなると相手と自分のPCが同じ状態でないといけないので、その辺の同期処理がややこしかったりしますよね。

>手始めにチャットするプログラムから始めてみようと思います

いいですね。私も初めてはチャットでした。
相手からのデータ受信の関数で処理が止まってしまうとゲームにならないので、
マルチスレッドで待機するように処理を書いてみるとよいと思いますよ。

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 21:36
by Ma
ネットゲームについてはくわしくありませんが、IPがないと。。。と読んで、ふとアイディアがおもいついたのでかきこしてみます。
あと、socket とか未学習ですw

DXライブラリとレンタルサーバーとCGIを組み合わせると、相手のIP情報を事前に入力しなくても、MMOのようなオンラインゲームが作れそうですね。

オンラインになったらCGIにそのユーザーのIP情報を送って、txtファイルにででも登録してもらって、すでにオンラインの人は定期的にそのtxtファイルを参照すれば他のユーザーがオンラインかもしれないIPアドレスを取得することができます。
(私が作ったゲームにランキングシステムとして使ってみたので実証済み)

ただ、あまり高速な通信手段ではないと記憶しているので、常時オンラインユーザーを確認というわけにはいかないかもしれません。
もちろん、もっといい方法はいくらでもありそうですがねw

Re:ネットワーク対戦機能について

Posted: 2010年2月09日(火) 22:39
by softya
MMORPGはサーバー上であるていど仮想世界のシミュレートを行っているので、レンタルサーバー上だと難しいと思います。
格闘ゲームやFPS・TPSのユーザーマッチングは、ホストやゲストのPCを決めて、そちらに参加者のIPアドレスを渡すだけ(後はゲーム中の多量のパケットはホストPCとゲストPCが直接通信)ですので貧弱なレンタルサーバでもある程度の人数はカバーできます。
FF11とかが専用サーバーで運用されているのは、サーバー側の負荷が高いからですね。