自分でプレイをしながら他の人の状況を表示するだけの(互いに影響を及ぼさない)
簡単な通信対戦のサンプルを作ってみました。
一応うまく動いたのですが、もっとここをこうすればいいなどのアドバイスがもしありましたら
教えていただければありがたいです。
ただし、「ソースを分割した方がいい」というのは無しでお願いします。
[hr]
この状態ではサーバーを含めて4人までつなげますが、MAX_PEOPLEの定義をいじることにより変更できます。
UDPを使っているので、テストのときはUDPのポートの開放をお願いします。
[hr]
現在、クライアントがつながっている状態でサーバーを閉じると、クライアントがフリーズしてしまいます。
これはどのようにするのがいいでしょうか?
簡単な通信対戦
簡単な通信対戦
- 添付ファイル
-
- netvstest.zip
- プログラムです。
- (24.19 KiB) ダウンロード数: 132 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 簡単な通信対戦
少し改良しました。
- 名前一覧の実装
- クライアントの強制ログアウトの実装(クライアントが強制終了したとき用)
- 添付ファイル
-
- netvstest_2.zip
- プログラムです。
- (24.63 KiB) ダウンロード数: 111 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 簡単な通信対戦
さらに改良しました。
- 時間で強制ログアウトさせるようにした(10秒アクセスがない場合)
- 受信したデータの送信元(IPアドレス)をチェックするようにした
- でたらめのIPアドレスを入力しても(接続できない時)フリーズしないようにした
- サーバーを先に落としてもフリーズしないようにした
- 添付ファイル
-
- netvstest_3.zip
- プログラムです。
- (25.13 KiB) ダウンロード数: 103 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 簡単な通信対戦
さらに改良版です。
何でもいいのでとりあえず返信をいただけるとありがたいです。
- サーバーから一定時間(10秒)応答がない場合に終了するようにした
- IPアドレスでチェックしてはじくようにした
- サーバーをドメインで入力できるようにした
- ダイアログの項目の入力チェックを追加
何でもいいのでとりあえず返信をいただけるとありがたいです。
- 添付ファイル
-
- netvstest_4.zip
- プログラムです。
- (26.45 KiB) ダウンロード数: 105 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 簡単な通信対戦
観戦モードの不都合を改善しました。
- 添付ファイル
-
- netvstest_5.zip
- プログラムです。
- (26.49 KiB) ダウンロード数: 158 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 簡単な通信対戦
さっきダウンロードして試してみましたがすごいですね。
こういう通信ができるなんてうらやましいです。
私は、こういう通信関係のプログラミングができないのでアドバイスとかできません。すみません。
勉強になると思うのでソースを参考にさせて頂きます。
こういう通信ができるなんてうらやましいです。
私は、こういう通信関係のプログラミングができないのでアドバイスとかできません。すみません。
勉強になると思うのでソースを参考にさせて頂きます。
Re: 簡単な通信対戦
とりあえず作ったけどまだうpしていないReadMeを載せておきます。Ciel さんが書きました:これどう使うんですか?
すごい興味はあるんですけど、使い方がわかりません;
・UDP使用。テスト時にはUDPのポートを開放すべし
・改造・再配布無断でOK。商用もOK。煮るなり焼くなり好きにして。
・矢印キーで移動
・サーバーはIPアドレスとドメインどちらでもOK。
・10秒通信がないとログアウトさせられます。
・ログアウトは×orAlt+F4でOK。
最初に出てくるダイアログボックスに次の項目を入力します。
名前:表示される自分の名前
サーバー:接続先サーバーのIPアドレスかドメイン
ポート:接続先サーバーのポート(サーバーで指定したものと同じものを指定します)
ラジオボタンを「クライアント」にします。
「OK」を押します。
サーバーにつながれば色がついた×印が出てきます。
接続に失敗した場合、10秒で終了します。
自分の×印は矢印キーで動かせます。
左には参加中のメンバー一覧が出ています。
・観戦モード(サーバーに接続し、見ているだけ)のとき
最初に出てくるダイアログボックスに次の項目を入力します。
サーバー:接続先サーバーのIPアドレスかドメイン
ポート:接続先サーバーのポート(サーバーで指定したものと同じものを指定します)
ラジオボタンを「観戦」にします。
名前は入力する必要がありません。
「OK」を押します。
サーバーにつながれば色がついた×印が出てきます。
接続に失敗した場合、10秒で終了します。
左には参加中のメンバー一覧が出ています。
・サーバー(接続を待ち受ける側)のとき
最初に出てくるダイアログボックスに次の項目を入力します。
名前:表示される自分の名前
ポート:接続を待ち受けるポート
ラジオボタンを「サーバー」にします。
必要に応じて「ポート開放」をします。(詳しくはググってください)
ダイアログボックスで指定した番号のUDPのポートを開放してください。
Windowsファイアウォールの画面が出てきたら「ブロックを解除する」を押します。
「ブロックする」を押してもローカルならつながるかもしれません。(直接は未確認)
色のついた×印(黒含む)が出てきます。
左には参加中のメンバー一覧が出ています。
自分の×印は矢印キーで動かせます。
他にわからないことがありましたらまた聞いてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)