win32app winsock で1:Nクライアント/サーバープログラムを実現するには?

解決


MenPin  2010-05-16 18:28:05  No: 71604  IP: [192.*.*.*]

VC++2008Expressでwin32appとwinsockの勉強に、時間が掛かってもいいから、本格的にネットワークゲームを作りたいと思っています。
1台のサーバーに複数のクライアントが接続します。
自宅のPC(7,8年前のPen4 2.0GHz Memory:768MByte)をDDNSで公開し、
サーバープログラムを走らせて、同時に日常の作業にも使いたいので、
なるべく軽くなるように作りたいと思っています。

動作は、クライアントがサーバーのロビーに接続し、1秒毎にサーバーからロビー状況を受信します。
クライアントが新規に部屋を作った場合、サーバーは部屋を作ります。(複数部屋が立つこともあります)
クライアントは既にある部屋に入ることが出来ます。(8人まで)
部屋が出来たら、サーバーはタイマのイベントで部屋状況を変化させます。
クライアントは、アクションを起こすと、サーバー部屋状況を変化させます。
部屋に居るプレイヤーは部屋状況を参照したり変化させたりした時、
部屋状況を受信し共有します。
プレイヤーデータはサーバー側で一括管理します。(CSVファイル等に)

自宅PCをDDNSで公開し、サーバープログラムを動かそうと思っています。
PCは数年前に買ったPen4 2.0GHz Memory 768Mです。
サーバーはなるべく軽い動作にしたいのですが、その場合、winsockをどのように使えばいいのかアドバイスを希望しています。
疑問点で思い浮かぶのは、同期/非同期やスレッドを使うか、同時にソケットを複数開くか、通信の度ソケットを作り終わったら破棄するか等です。
よろしくお願いします。m(_ _)m

編集 削除
tetrapod  2010-05-17 13:13:17  No: 71605  IP: [192.*.*.*]

http://okwave.jp/qa/q5898075.html
とか。

編集 削除
MenPin  2010-05-17 16:11:58  No: 71606  IP: [192.*.*.*]

その質問をもう少し詳しく教えて欲しいのです。
よろしくお願いします。m(_ _)m

編集 削除
Yossi  2010-05-19 21:10:19  No: 71607  IP: [192.*.*.*]

通信に関してはコネクションを張らない UDPを選択する手もありますね
ゲームの詳細な内容にもよりますけどひとつの選択肢として

また、サーバ側のデータ管理はデータベースを使うと SQLコマンドで
処理できるし SQLの知識はこの道で生活しようと思うなら将来きっと
役に立つので勉強のきっかけにされたらよいと思います。
まもなくクラウドの時代が来るので特にそういえます。
SQLサーバも Express版だと無料で使えますからね

編集 削除
MenPin  2010-05-19 21:27:19  No: 71608  IP: [192.*.*.*]

回答ありがとうございます。
SQLできたら便利ですよねー。考えてみます。
ファイルに保存とSQLサーバだと、どちらが処理軽いですか?

編集 削除
επιστημη  URL  2010-05-19 22:01:26  No: 71609  IP: [192.*.*.*]

> ファイルに保存とSQLサーバだと、どちらが処理軽いですか?

軽ぅいのがお望みなら SQLite(http://www.sqlite.org/) ってテがあります。
# サーバ不要。ライブラリをリンクするだけでstand-aloneで動きます。

編集 削除
MenPin  2010-05-19 22:08:07  No: 71610  IP: [192.*.*.*]

回答ありがとうございます。SQLite、見てみます。
PCが非力なので、なるべく軽いほうがいいのです。
負荷の差が微々たる物ならば本家SQLサーバもいいなと思います。
(英語が苦手なのも相まって

編集 削除
MenPin  2010-05-28 21:37:41  No: 71611  IP: [192.*.*.*]

みなさん助言や回答ありがとうございました。

編集 削除