- 1 名前:名前は開発中のものです。 [01/12/20 06:48 ID:WLADMjH3]
- ネットワーク対戦型(対話型)ゲームだよ!
おそまきながらネットワークの時代だとおもうんだ! やっぱ相手がいるから熱くなると思う。 1player型だって良く考えれば作者と対戦しているといえる。 それと人が相手だと飽きない。 2チャンネルだってゲーム性の弱いゲームだけど、 人が集まるとこれほどに面白くなるという好例だよ。
- 83 名前:名前は開発中のものです。 mailto:sage [01/12/23 09:25 ID:???]
- 納豆ゲームだったのか!!!
- 84 名前:1(シコシコ手を動かすのみ!) mailto:sage [01/12/23 12:03 ID:???]
- >>82
クライアント1000個くらいで耐えられるかテストしてみるよ。 いまの7個程度の応答テストじゃあ正直自信ないしね。 ところで8個くらいで開発環境がハングッてしまった。蛾蝶ー >>83 納豆食しないでくれ。(オヤジギャグさぶー) ネットって漢字変換できねえだけだす。 サーバーのほうはなんとかなりそうだから クライアントのほうも考えるだす! 対戦画面は1対1だよな。 RPGのようなマップはなし。 3Dは面倒だし第一できーん。 魔法、アイテムはどうしよう? まあ基本的なものを取り揃えておくか。
- 85 名前:名前は開発中のものです。 mailto:sage [01/12/23 12:19 ID:???]
- ん?horb使ってる?
リアルタイムじゃないなら、horbもいいかもNE!
- 86 名前:1(独り言は(・∀・)イイ!) mailto:sage [01/12/23 12:19 ID:???]
- つうかそれだけじゃ面白くねえから
なんかアイディア出さなくては・・・
- 87 名前:1(独り言は(・∀・)イイ!) mailto:sage [01/12/23 12:21 ID:???]
- >>85
使ってないYO! もし今の方針でダメなら考えるYO!
- 88 名前:1(独り言は(・∀・)イイ!) mailto:sage [01/12/23 12:34 ID:???]
- アイディアかあ。
戦闘シーンを脱衣で・・・ いかんいかん下ネタに頼ろうというのは邪道だす。
- 89 名前:1(人でもやるぞ) mailto:sage [01/12/23 14:11 ID:???]
- あうううう
40クライアント以上にするとソケットエラーになる。 レスポンスは8msだからいいとして ソケットエラーの原因はなんだ?
- 90 名前:名前は開発中のものです。 mailto:sage [01/12/23 15:04 ID:???]
- >>89
Win98でやってるから。
- 91 名前:1(人だとダメなときもある) mailto:sage [01/12/23 15:14 ID:???]
- >>90
ありがとー。 そういうことだったのか。 一人で悩んでても無駄だったのか(TT)。
- 92 名前:1(Linux初心者) mailto:sage [01/12/23 15:18 ID:???]
- >>90
linuxでテストしてみるか・・・・。
- 93 名前:1 mailto:sage [01/12/25 20:54 ID:???]
- クリスマスは・・・でした。
趣味再開。
- 94 名前:名前は開発中のものです。 mailto:sage [01/12/26 22:17 ID:???]
- 再開した?
- 95 名前:1 mailto:sage [01/12/27 00:38 ID:???]
- こんな奴でも年末は大変だ。
ていうか年賀状書いてねえ。絵描こ・・・。
- 96 名前:名前は開発中のものです。 mailto:sage [01/12/28 00:43 ID:???]
- 実際の話、
何でもかんでもネット対戦にすれば 面白くなるなんて考えてる奴は厨房だよな。 なぁ、>>1よ。
- 97 名前:名前は開発中のものです。 mailto:sage [01/12/28 22:02 ID:???]
- >何でもかんでもネット対戦にすれば
そうそう。みんなこれやってくれると、ネットゲー全般が腐っちゃう。 一時期の何でもゲーム化すりゃいいみたいなクソゲー時代はもうこりごり。
- 98 名前:1 mailto:sage [01/12/28 23:21 ID:???]
- >>96
>>97 禿げしく銅管 ネット+面白いアイディアが必要ってことだと思う。 ところでサーバーの開発状況だが、今産みの苦しみ状態。 プロトコルの拡張。 mm::group 仲間が誰が調べる それに対して差分データを返すのは et::id[,id][,id][...]加わった仲間 ex::id[,id][,id][...]離れた仲間 dtを前置修飾するコマンド。rt::dtid::group 仲間に対して集計リクエスト それに対して tt::dtid::group データ集計
- 99 名前:名前は開発中のものです。 mailto:sage [01/12/29 00:49 ID:???]
- >>97
市販モノだけに限定しなければもうすでに腐ってますが、何か?
- 100 名前:1 mailto:sage [01/12/30 00:00 ID:???]
- 最近進みが遅いがここで練っておくと後で楽する。
断続送信なんかできるようにしとこう。 送信受信バッファが必要だ。 そして断続送信インターバルの計算式を考えておく。
- 101 名前:1 mailto:sage [02/01/07 19:28 ID:???]
- 密かに再開しますか。
12/30から一歩も進んでないぜ。 年末からいままでずっと遊んでたということだ。 ようし今日は何をしようかな?
- 102 名前:1 mailto:sage [02/01/10 21:44 ID:???]
- なかなか進まんので、別のゲーム作りに逃避している。
現在悩んでいるところ ・サーバーの負荷を減らすための断続送信 ・集計処理 ・クライアントがダウンした場合 ・集計元がダウンした場合 ・集計先がダウンした場合
- 103 名前:g mailto:sage [02/01/10 21:52 ID:???]
- 参考にさせてもらうつもりです。
気負わず、まったりと頑張ってください!
- 104 名前:1 mailto:sage [02/01/10 22:45 ID:???]
- >>103
どもー。 参考になれば幸いですが・・・、 あっさりとしか言っていないので(開発の内実は泥沼です)
- 105 名前:名前は開発中のものです。 [02/01/13 02:43 ID:rJSwrpds]
- このスレおもろいね。もっとやれ(藁
- 106 名前:名前は開発中のものです。 mailto:sage [02/01/13 03:23 ID:???]
- 情報交換したくて立てたのに
オナーニスレになっちゃってるのね。カワイソ
- 107 名前:名前は開発中のものです。 mailto:あげてみたりして [02/01/14 01:21 ID:???]
- とりあえず、ソースを晒すといろいろ盛り上がると思われ。
- 108 名前:名前は開発中のものです。 mailto:age [02/01/20 06:23 ID:???]
- これは良いスレですね
是非C++でやってほしい今日この頃
- 109 名前:名前は開発中のものです。 [02/01/20 13:21 ID:BSuwq+vF]
- >>108
C++でCS形式のネトゲを作るときに参考にさせて欲しい。 漏れもc++でキボンヌ
- 110 名前:名前は開発中のものです。 mailto:sage [02/01/20 14:24 ID:???]
- 1は逃げたんだろ。そっとしといてやれよ。無理にageんな。
- 111 名前:1 mailto:sage [02/01/27 12:38 ID:???]
- 久々に来たよ。
逃げたというのは当たり、逃避して別のゲームを作っていた。 つうか最近このスレを見失っていた。 やっぱ自分のHPでやるべきことなのかもね。 毎日カキコするほど熱入れてやるなら別だけど。
- 112 名前:1 mailto:sage [02/01/27 12:41 ID:???]
- あくびがでるほどのんびり進めるつもり。
- 113 名前:プログラム未経験 [02/01/29 08:03 ID:g/7F6xBo]
- あの、質問させていただきたいのですが、
FFアドベンチャやサッカスタリオン等のようなネトゲは、 どの言語で書くのが良いのでしょうか? 将来的に、上記のようなネトゲを作りたいと思っているので、 これらに向いている言語を教えて下さい。 C言語を勉強中の友人には、「JAVAでいんじゃない?」と言われました。 よろしくお願いします。
- 114 名前:名前は開発中のものです。 mailto:sage [02/01/29 10:51 ID:???]
- >>113
えーと、それは「エベレスト登りたいんだけど、登山用具はどこで買うの?」 みたいな質問なんで、最初はどこでもいいです。 どうせ貴方がそんなネトゲを作れるころには、他の知らない言語なんか 仕様書2時間読めば覚えられるようになってますよ。
- 115 名前:名前は開発中のものです。 mailto:sage [02/01/29 10:51 ID:???]
- C
- 116 名前:名前は開発中のものです。 mailto:sage [02/01/29 17:32 ID:???]
- >>114の言ってる事は、>>115の言語を最初に覚えることが前提に
なってる。
- 117 名前:Unknown name mailto:sage [02/01/30 17:15 ID:???]
- すげえよ >>1
草葉の陰で見守ってるからな
- 118 名前:1 mailto:sage [02/01/31 19:35 ID:???]
- >>113
クライアント側とサーバー側とは別の言語でもいい。 自分の場合 クライアントjava サーバーcまたはc++(現行のローカルテストではjava)の予定。 作りやすさではjavaだろうね。 データベースならばjavaでさほど問題にならない実行速度も ゲーム作るとなるとホントに遅いよ。
- 119 名前:名前は開発中のものです。 mailto:age_te_yaru [02/02/01 10:33 ID:???]
- スレッドをバリバリ使う必要がありそうなところを考えると、
サーバはJavaが安全だろうなぁ。 ただ、GCとかがどれくらい影響してくるかがちょっと不安かもね。 全部オブジェクトプールにすれば、そんなにGCかからないかな? クライアントは、アプレットがいいなぁ(ユーザとして)。 アプレットの場合、アプレットダウンロードのトラフィックが ゲーム本体を邪魔しないかどうかが問題になりそう。
- 120 名前:1 mailto:sage [02/02/01 21:09 ID:???]
- 信用に足らないサイトからダウンロードした実行ファイル
は怖い。ハードディスク全部消すプログラムは簡単に書けるからね。 アプレットはその点安全だからいいよね。
- 121 名前:名前は開発中のものです。 mailto:sage [02/02/01 21:48 ID:???]
- ただJava2Dor3Dでどのくらいパフォーマンスが出るかが問題だな。
- 122 名前:名前は開発中のものです。 mailto:sage [02/02/02 02:21 ID:???]
- >>121
pc.2ch.net/test/read.cgi/tech/1002160815/244-245
- 123 名前:名前は開発中のものです。 [02/02/03 13:03 ID:MJ0ExQJf]
- ガンダム凄いね。
よく動いてる。
- 124 名前:名前は開発中のものです。 mailto:sage [02/02/03 13:09 ID:???]
- >>123
java.sun.com/docs/books/tutorial/extra/fullscreen/ Java1.4から新設されたAPIだね。
- 125 名前:1 mailto:sage [02/02/10 20:23 ID:???]
- JAVA1.4使おうかな・・・
- 126 名前:1 mailto:sage [02/02/17 06:20 ID:???]
- JXTA
- 127 名前:1 mailto:sage [02/02/20 14:31 ID:???]
- なんか知らんけど書き込めない
- 128 名前:1 mailto:sage [02/02/20 19:36 ID:???]
- 規制?
- 129 名前:クソスレまじん mailto:はじめまして [02/02/27 22:58 ID:???]
- ぼく、クソスレまじん。ゲームせいさくばんの、ちていおくふかくから
やってきたんだ。 ちじょうには、たくさんヒトがいるとおもったのにここには みわたすかぎりなんびきかのわなびーしかいないみたいだね。 なんだかネットゲームばんのほうからこうばしいかおりがしてきた。 ちょっといってみるね。んじゃ。
- 130 名前:名前は開発中のものです。 mailto:sage [02/02/28 01:49 ID:???]
- 記念カキコ
- 131 名前:名前は開発中のものです。 mailto: [02/04/12 16:01 ID:???]
- JAVAでやろうか。
- 132 名前:名前は開発中のものです。 [02/04/12 16:13 ID:NNAMDqSw]
- ひろゆきっぽい。>>間人
- 133 名前:416(HSP) ◆HoSW/FCI [02/05/07 00:47 ID:XKfkToEo]
- ということで、スレ乗っ取りです。
ネットゲーム特有の技術や制作、アプリケーションプロトコルや、送受信ルーチン、並列処理、ラグ対策などについて気軽に語り合いましょう。 あのネットゲームのあのデータはこう処理している!…だろう、という想定ネタもok。それだとあれがこうなって、というツッコミもokです。 これからネットゲームを実際に作ってみようと考えているけど、なにをどうしたらいいのかわからない人もどうぞ。名前のところに使用言語を書いて、以後、番号+(言語)、場合によってはトリップを使ってください。 なお、当方、HSP使いなので大抵の質問には答えられない自信はありますがw。
- 134 名前:361(C++/VB) ◆fiQMk5WM [02/05/07 01:13 ID:V16cWMtg]
- ども、416さんに引っ張られて参りました。
私どもアマチュアネトゲ制作者としては、サーバ選択プログラム、差分ダウンロードプログラムなどがほしいところでもあります。 取りあえず、自分のを作りつつ差分ダウンロードプログラムでも手がけてみようかと思っておりますが、誰か持ってたら提供してくださいハハー。
- 135 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 01:18 ID:???]
- で、差分サーバの仕様ですが、いろいろ考えると面倒なのでとりあえずWin用で良いでしょうか。
C++で作成して、iniファイルの中身をみてクライアントから送信されてきたバージョンに対応するダウンロードファイル(lzhで一個をイメージ。無ければクライアントのバージョンより古い物に対応した最新差分)を送信。 差分ダウンロードのクライアント側は自分のディレクトリにそれを解凍すると。 ディレクトリ構造などは圧縮時に指定しておくと。 サーバはcgiの方がいいかな?あ、何か簡単にできそうだな。
- 136 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 01:21 ID:???]
- ??????????/diff.cgi?=ゲーム名&=バージョン
とかでhttpではなくlzh返せば良いんですよね。掲示板とかとおなじか。 すると後は解凍プログラムだけか。
- 137 名前:416(HSP) ◆HoSW/FCI [02/05/07 01:32 ID:XKfkToEo]
- >>134
サーバ選択ソフトは汎用性が高いので、共同制作してもいいんじゃないかと考えています。差分取得ソフトもかな。 今、ホスト登録用CGIを制作依頼しているんですが、…どこまで出来てるんだろ。 hyper6.amuser-net.ne.jp/~hidden/2c/wforum.cgi?mode=allread&no=59&page=0 「部屋名」「ゲーム名+バージョン」「IPアドレス+ポート」「最大参加人数」「参加人数」だけでokと想定してるんですが、他にやり取りしたほうがいいデータ項目はあるでしょうか? 差分の方は、既存の差分更新プログラムを利用するのはダメですかね?
- 138 名前:RUR [02/05/07 01:42 ID:qX5uc02I]
- 416さんに引っ張られてネトゲ板より参戦します。
- 139 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 02:19 ID:???]
- いやー、既存のがうまくみつけられなくて。
何か良いのありますかね。
- 140 名前:416(HSP) ◆HoSW/FCI [02/05/07 02:41 ID:XKfkToEo]
- >>138
ようこそです。ネットワークプログラマー探しのRURさんという認識であってますかw。 >>139 差分更新といっても、アーカイブに変更分を梱包して上書き展開という方法と、「WDiff」みたいな感じにプログラムの変更部分だけ抽出して組み込み更新という方法が。 前者は仕様に大幅な変更があって、大部分を更新しないといけない場合、後者はちょっとした修正で実行ファイルがちょっとだけ変わったというときに便利。どちらも対応としておくと便利かも。
- 141 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 03:17 ID:???]
- 後者に手を出すと切りがないので前者の気分でいますハハー。
どうせそんなにでかいプログラムには手は出さないし、出すなら専用のを書くでしょう。
- 142 名前:416(HSP) ◆HoSW/FCI [02/05/07 05:22 ID:XKfkToEo]
- game.2ch.net/test/read.cgi/gamedev/1018534410/366
|また、送信間隔ですが、ログを見てみると30msとか何ですか? |ひょっとして。よけいな御世話かも知れませんが、タイムラグを |考えればもっと間隔を広げても良さそうな気が・・・接続可能数に |直結しますよね?拙作では100msです。 30fps(33ms)で、受信バッファに溜まっている全員(n人)のデータを取得(n回)して、解析(コマンド数により不定。ただし、最大n*n回以下)、全員に送信(n回)しています。なお、ホストは60fps(16ms)で回転しています。 当然、データが無ければスキップしますし、送信もされません。 で、30fpsはあくまでも1秒間に30回送信できる可能性(機能)があるだけで、実際に30回毎にデータを送信しているわけではありません。単に届いたデータはできるだけ早く送りたいだけです。 受信ルーチンを抜けた直後に届いた運の悪い(?)データは、ウェイト時間分待機することになりますから、100ms待機すると、 Ca ─(ラグa)→ S ─(ラグb)→ Cb の遅延時間が最大、((ラグa/2)+(ラグb/2))+100ms になるということに。
- 143 名前:416(HSP) ◆HoSW/FCI [02/05/07 05:26 ID:XKfkToEo]
- ちなみに、とあるバージョンではミスって、1秒間に60回フルに黒ジエン4匹分の位置データを送ってしまったこと(1秒間に240コマンド送信、これプラス通常のコマンドも)があります(爆。
ホスト500MHz(ADSL)、クライアント500MHz(56K)だと処理しちゃってました。さすがにホスト333MHzはダメだったみたいで(w。 単純に考えて1秒間に6歩制限だと、40人は処理できるんではないかと推測。ただし、窓9x系だとどうも40個以上のソケットは作れないらしく…。 なお、コマンドの長さは「24(TCPヘッダ)+14(AP)」38バイトです。
- 144 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/07 05:36 ID:???]
- 差分での自動バージョンアップは、オンラインでの頒布ゲームでも活用できるネタなので、雑談スレで煮詰めてもらうのがよいかも。
私個人では素直に「WDiff」を利用しようと考えていましたが。 「WDiff」で差分ファイル(実行型)制作 ↓ Webにあぷ ↓ 更新ソフトが比較して取得した後、差分ファイル実行 ↓ 各種データが最新版に ↓ (゚д゚)ウマー
- 145 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/07 05:53 ID:???]
- あ、今ソース思い出したら4匹×60回じゃなくて5匹×12回の60コマンドでした。
…じゃなくて、await 1で回してたって言ってたから、1000/5か。200コマンドですね。もしも、順次方式じゃなくて一括処理だったら5000回発行してたのか…。処理落ち必至だから絶対5000は行かないけど。
- 146 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 08:56 ID:???]
- >((ラグa/2)+(ラグb/2))+100ms になるということに
全くその通りですが、HPの減算処理、将来の回復処理を入れたとき、サーバーで計算するので全遅延時間に占める通信ラグ部分が大きくなると回復が間に合わなくて死ぬ事が多くなるかなーと。 通信ラグがまぁ100msとすると、100msに一回ダメージ/回復処理を解決することでラグのせいで回復が間に合わなかった、が避けられるかと思って。 ラグがたとえば130msと200msでどれぐらい操作感に違いがでるかですが、ローカルでのレスポンスを上げ、遅延の分はアニメーションでごまかせば誤差範囲かと考えました。 どんなもんでしょうか。 拙作はクライアントは200msに一回データを送信しており、50msに一回受信しています。描画は50msごとに行っていて、順調に動いているときは通信間隔200msごとに4駒のアニメーション(今のところ移動の補完だけですが)を行ってます。 サーバからのデータがラグなどでまとまって着くと、アニメーションを飛ばして早送りで処理してます。 サーバは受信は最大速度で行い、100msごとに受信したデータ(最大でクライアント数n。各クライアントから複数回は受信せずソケットバッファにためてます)をまとめて処理し、n回送信してます。 これでどんな感じに動くか、っていうのはさわってもらえばいいのですが今Geoが動いてないので後ほど・・・。 WDiffいいですねー。WinDiffと誤解しておりました。
- 147 名前:名前は開発中のものです。 mailto:age [02/05/07 11:15 ID:???]
- 差分でやると更新時に送るデータが少なくて良いんですが、
しばらくゲームをやってなかったりすると更新が貯まってて 差分パッチをあてるだけで数時間待ちとかなりかねないので、 マイナーバージョンアップは差分方式、メジャーバージョンアップは 通常のダウンロードという混在方式がよいかと思われ。 #まぁ、作る手間は2倍ですが。
- 148 名前:RUR [02/05/07 14:11 ID:qX5uc02I]
- >>140
(笑)優秀な人材は常時募集中です。
- 149 名前:DXスレの417 mailto:sage [02/05/07 14:31 ID:???]
- こんなところにネトゲスレが…。
あちらでは少しスレ違いな雰囲気があったのでこちらで質問させてください。 game.2ch.net/test/read.cgi/gamedev/1016276254/417 最初は、メッセージを受け取ってキューに貯めるスレッドと、 そのキューから少しずつ取得するスレッド(ゲームのメインスレッド)でよいと思っていたのですが、 上の発言の通りDPN_MSGID_INDICATE_CONNECTのところで躓いてしまいました。 素直にDPN_MSGID_RECEIVE以外は受け取ったスレッドで処理しちゃえばよいのかなぁ。
- 150 名前:150(c++ Winsock) ◆Iam..... [02/05/07 16:19 ID:urzcE23c]
- ネットワークプログラミング初心者ですが、参加してよいですか?
開発環境はBCC、winsockという金無しプログラミングです。
- 151 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 19:46 ID:???]
- >149
すんません力になれません。 >150 俺も同じですよ。BCCです。 取りあえず作りかけの物を一度披露しておきます。 www.geocities.co.jp/SiliconValley-Oakland/2840/vbvc_020507_srv_cli.lzh サーバとクライアントセットです。 クライアントはVBで作っていますが、5なのでWin95以外のほとんどの方はランタイムをダウンロードする必要はないと思います。
- 152 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 19:51 ID:???]
- あ、サーバマシンは用意できないんですよ。ケーブルなもので。
テストは友人マシンで行ってますが、他人のIPを晒すわけにも行きませんのでご勘弁を。
- 153 名前:416(HSP) ◆HoSW/FCI [02/05/07 23:30 ID:3mKZAWWI]
- >>146
ネットゲームって同期方法によって次の3つに分類できると思うのね。 ・完全同期型…ターン制及び内部カウンタを取るなど、全員のデータがそろってから結果を出す仕様。 ・不完全同期型…一定間隔で処理を行うが、未達のデータは未来予測などで補完して結果を出す仕様。 ・非同期型…到達したデータから順次結果を出していく仕様。 「無人島forHSP」では非同期型で、ホストに到達したデータが現在でかつ真実であると割り切って処理しています。だから一刻でも早くデータを受信して、一刻でも早く送信する方法を取っていて、全体としての整合性は無視していますw >>147 そうしましょう。
- 154 名前:416(HSP) ◆HoSW/FCI [02/05/07 23:30 ID:3mKZAWWI]
- >>149
HSPはシングルスレッドなので、受信・処理・送信ともに人数分回す感じになっています。 概念で表すと ┌─┐ │ ↓ │入力 [TCP受信]×人数→UDP受信→[[UDP解析]×コマンド数]×パケット数 │ ↓ │処理 [[コマンド解析・実行]×コマンド数]×人数 │ ↓ │出力 [UDP送信]×人数→[TCP送信]×人数 └─┘ V0.3は受信+処理・送信ですが、V0.2だったかなぁ、受信+処理+送信だったから、 16人接続してバトル始めたらホストが落ちたのはw。 つまり、プレイヤー1のデータを受け取ったら、解析実行で他の全員に送信、プレイヤー2のデータを受け取ったら…で、1ターンで人数^2の送信を行っていたといふ(16*16だから16msで256回送信…)。 でも、落ちた直接の原因はバッファオーバーかも。 |素直にDPN_MSGID_RECEIVE以外は受け取ったスレッドで処理しちゃえばよいのかなぁ。 悩むよりトライ&エラーのほうが早い場合も。
- 155 名前:416(HSP) ◆HoSW/FCI [02/05/07 23:31 ID:3mKZAWWI]
- >>151
ホストが異様に重いのは当方窓98無印だから? メモリは256MBですが、なんか使いきっている感じ…。他のソフトがカクカクになるるる。 で、クライアントがのたうちながら立ちあがるんですが、接続ボタンを押すとエラーが出て終了してしまいます。なぜに。 一応エラーダイアログのメッセージは CLIENT の 10H 例外です。 モジュール : MSVBVM50.DLL ホストのメッセージは「Socket Recv Error at HIBYTE 10054」です。
- 156 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/07 23:58 ID:???]
- 98ではそんなになりますか・・・スレッドがらみがうまくいってないのかな。
多分そうだろうな。メモリではなくてCPUを使い切ってるのだと思います。 95系持ってないので試せないんですよ。面目ないです。 クライアントのエラーメッセージも斬新ですなぁ。あ、DirectX7が必要なんですわそういえば。 結構要求高いかなぁ。 ホストのエラーメッセージは「1バイトも受信できねーよ」っていみですハハー
- 157 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/08 00:29 ID:???]
- >>156
ちなみにDirectXは8.1(4.08.01.0881)が入ってます。
- 158 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/08 00:34 ID:???]
- もきゅきゅ
友人からも98では起動しないと言う話が・・・なんでやねーんねーんねーん
- 159 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/08 01:12 ID:???]
- 95系が無いなどと抜かしておきながらよく思い出してみれば98と200のデュアルブートでした。アホですか俺は。
いちおうこちらの98ではある程度まともに動くように改造し、さっきと同じ www.geocities.co.jp/SiliconValley-Oakland/2840/vbvc_020507_srv_cli.lzh に上げました。 あきれていなければお試しください。 なお、よくわからないんですがWin2000に比べて圧倒的に描画がぎこちないです。 サーバーを起動したときもマウスポインタが消えちゃって、Alt+Tabしないとフォーカス切り替えられません。 なんだかなぁ。
- 160 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/08 01:40 ID:???]
- >>159
話がVB寄りになってるので…ううん、専用スレが無い。雑談スレに移動します。 game.2ch.net/test/read.cgi/gamedev/1005039431/969
- 161 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/08 02:16 ID:???]
- えーっと、使用ポートが2345になっていますが、
www.iana.org/assignments/port-numbers で調べると、登録済みのポートでした。dbmってなんだろ。たぶん衝突はしていないはずなんですが、一応、Unassignedのポートを使用するようにしてください。 あと、待受けソケットを作った後、接続要求があってから新たにポートかソケットを作る流れだと思うのですが、作った後に充分な待ち時間はとっていますか? 作り立てのソケットに間髪入れずに送受信を行うと、取りこぼしとかが起こるみたいです
- 162 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/08 02:43 ID:???]
- 登録済みのポート。全くしかりです。
面倒だったので・・・変更しますハハー。 >待受けソケットを作った後、接続要求があってから新たにポートかソケットを作る流れだと思うのですが、 >作った後に充分な待ち時間はとっていますか? なんと。そうでしたか。十分というと・・・100msぐらいですかね?
- 163 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/08 06:18 ID:???]
- >>150
人は多いほどよいぞ。金無しプログラミングはHSP+pcbnetも同じだし。 >>162 ソース見直したら「wait 10」…1000msもマッテタ(藁。本来はソケットが確立して、通信可能状態か調べるのが礼儀正しいかと。 しかし、まあ、あれだ、マルチスレッドならそのまま休憩、シングルスレッドならその間空転ということで。 マルチスレッドで思い出したけど、「Tonyu(豆乳)」っていうプログラミングツールは期待してるぞ。まだ通信には対応していないみたいだけど、ゲーム作るのはHSPより楽々かも。 game.2ch.net/test/read.cgi/gamedev/1015143101/l50
- 164 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/08 06:27 ID:???]
- >>159
動きがぎこちないのは、一時停止命令(HSPではwaitやawait、CだとSleep)がなくてOSにタスクが回っていないのかも。窓9x系は擬似マルチタスクだから。 あと、画面を更新する描画系命令をそのまま使うと、1つ描くたびに垂直同期を待って更新されたりするぞ。描画するけど画面にはまだ反映させないという命令を使うか、バッファに描画して絵を完成させ、一気に転送するとか。
- 165 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/08 08:38 ID:???]
- >164
正論ですな(一時停止命令無し)。最初のサーバがえらく重かったのはSleep(0)でブン回していたからで、 Sleep(10)にしたらまともになりました。 描画についてはちゃんとバックバッファリング行っておりますハハー。 まぁ、そもそもうごかないみたいなのでニンともカンともですが。
- 166 名前:名前は開発中のものです。 mailto:sage [02/05/08 09:09 ID:???]
- > 窓9x系は擬似マルチタスクだから。
9xでもWin32アプリはプリエンプティブマルチタスク。
- 167 名前:名前は開発中のものです。 mailto:sage [02/05/08 13:48 ID:???]
- > ネットゲーム特有の技術や制作、アプリケーションプロトコルや、送受信ルーチン
> 並列処理、ラグ対策などについて気軽に語り合いましょう。 ↓このスレでも100-くらいから真面目に話し合ってたみたい(過去形) game.2ch.net/test/read.cgi/gamedev/1005040802/
- 168 名前:130 ◆v3R1XL8M mailto:sage [02/05/09 00:06 ID:???]
- あの、顔出しついでに質問なんですが、
回線速度がUP 256kのAさんと、DWN 128KのBさんが居た場合、 AからB宛てに、毎frameウェイト無しで256kbit分のデータを送信した時に、 Bさんは全てのデータを1frameで落としきる事は出来ませんよね? しかしA側はそんな事を知らずに、また256kbit分のデータを送信する・・。 これだと、Bさんが受信し切れなかったデータが何処かに溜まっていくような構図が 頭を悩ましているのですが、実際どこに溜まっているのでしょうか? ・・なんていうか、これって同期・非同期通信と関係があることなんでしょうか。
- 169 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/09 00:36 ID:???]
- まず、そんなに大量にはどうせ送れないですよ。
まぁ、それはわかってるでしょうけど。 で、データ送る速さが受信より早いとどうなるか、ですが、最終的にデータは受信側のソケットのバッファにたまります。 で、取り出す速さが遅いのでやがてソケットのバッファはあふれ、「ソケットのバッファあふれたよ」エラーがでることでしょう。
- 170 名前:130 ◆v3R1XL8M mailto:sage [02/05/09 01:53 ID:???]
- はい、数値はあくまで仮定です。(笑
うーんと、"取り出す速さ"は関係あるのかよく理解出来ないです。 基本的に1frameにつき、受信バッファのデータは"全て"処理しています。 なのでバッファが溢れるような事は無いと思うんです。 ・・・・・あ。送信バッファは全て処理してたっけ・・・。 あれ、なんか・・・忘れているような・・(´ー`)? ・・・なにかこれは、受信では無く送信部分に酷い問題が潜んでいるような気がしてきました。(((( ;゚Д゚)))ヤ、ヤッチャッタヨ・・ 361さんありがとうございました。早速検証してみますー。
- 171 名前:684 ◆MxrMc/mk mailto:sage [02/05/09 07:23 ID:???]
- >>168
そういう時には、データは送信側のバッファに溜まっていきます。256kbitのデータを 一度に送ると言っても、IP層の制限で大体1500bytes毎(だったと思う)のパケットに分割されて送信されてしまうので おそらく伝送路の途中(128kbpsになるところ)でパケット損失が起こって再び再送されるはずです。 今はTCPも賢くなってスロースタートとか云う技術があるみたいで、パケット損失を起こすことも 少なくなってるとか。 あ、間違ってたらゴメンなさい(ばく
- 172 名前:名前は開発中のものです。 mailto:sage [02/05/09 14:49 ID:???]
- >>168
受信側の読み取り速度が遅い場合、 UDPなら受信側のバッファがいっぱいになり次第、データは問答無用で捨てられる。 TCPならデータは捨てられない。(もちろんIPレイヤーではドロップ、再送信は起こってるが) で、TCPで受信側が受信しきれない場合はどうなるかというと、 TCPの送信制御によって送信側がデータを送れない状態になる。 具体的にいえば、送信側で ・ソケットに対しての書き込みがエラーになる ・ソケットに対しての書き込み処理が、そのデータをすべて送信し終えるまで (受信側がすべて読み取るまで)終わらない(実行がストップする)。 のどちらかの事が起こる。(どちらが起こるかはソケットの非同期書き込み設定による) こんなんでわかるかな?
- 173 名前:130 ◆v3R1XL8M mailto:sage [02/05/10 20:18 ID:???]
- プロバイダの回線調整でレスが遅くなりました、ごめんなさい。
あー何だか凄くよく分かったような気がします。 ようするに送信側のバッファに溜まるんですね〜 という事は・・、非同期設定にしていると相手が受信を完了してなくても こちらからは送信バッファにノンストップで送れるワケですよね? とすると、最低限必要と思われる通信速度を持っていないクライアントは あらかじめチェックをして接続を切ってしまうべきなんでしょうか・・ あ、でも、ソケットに対しての書き込みがエラーになってから切断、 のほうが良心的なのかな。(笑
- 174 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/11 12:11 ID:???]
- みぎゃあああああ。VB5ランタイム突っ込んだら「Easy CD Creator」がお亡くなりにぃぃ。
- 175 名前:416(HSP) ◆HoSW/FCI [02/05/11 23:22 ID:ubPKqzXU]
- データの種類によっては完全同期は非現実的なんだろうけど、以下の方法でホストとクライアントの時間を合わせることはできるかと。
・ホスト起動時にPCを起動してからの時間(ms)を取得。その値をスタートにしてゲームタイム(以下gt)を設定。 ・クライアントが接続してきたら、接続確立後、ping値を複数回(10回前後)計測 ・計測したping値をソートし、真ん中の数個から平均値を算出。 ・現在のgtとping計測による平均ラグ値を送信 ・クライアントもPCを起動してからの時間(ms)を取得し、gtにping計測値を加算した値から減算し、クライアントからみたスタート値を取得。 ・以後、送受信データにgtを付加し、ping計測値を加えた値から経過を算出。 基本的に送受信データは「gtxxxに敵aを出現させる」といった予定コマンドの発行が中心になるかと。例えば「gtxxxに命中予定」とか。
- 176 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/11 23:23 ID:???]
- 死亡問題にしても、死亡したのgtより以前のgtをもつ回復コマンドが到着した(あった)ら、生存回復が確定。なければ死亡確定ということで。
なお、ゲーム中「あー、ラグったぁ」というラグと、通信速度からくる常時ラグは別物なので注意。前者は障害ラグかと。
- 177 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/11 23:24 ID:???]
- あ、そうそう。送信側が16msのテンポで送信命令を発行しても、実際のデータは16msの間隔で送信されなかったりしますし、受け取るほうも当然16ms毎に届くわけでもなく。
「1コマンド1パケットで〜」を想定しても、TCPではバッファ内で複数のコマンドがくっついたりしますし、長すぎるコマンドは分断されることも。 1500バイトっていう具体的な数値は、実質設定されている値ではあるんですが、実働ではそれ以下で分断されたりするみたいです。100KBの長いデータを送信すると、最初は500バイト前後のパケットで様子をみて1500バイトになったり、途中で800とかゆれ幅があったり。 途中で経由するルーターの混雑具合をみて、適切なデータ長をやり取りしているんではないかと推測。httpでhtmlファイルとかを取得しているときはそんな感じでした。
- 178 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/12 02:58 ID:???]
- ひとつ提案なんだけど、ここで作るネトゲはどのみちポートもアプリケーションプロトコルも公開することになると思うから、各ゲーム間でとりあえずチャットデータが送れるようにしてはどうだろう。
もちろん、ユーザーの意思として特定のゲームで遊んでいるプレイヤーにメッセージが送れるというだけのもので、他のゲームの会話が流れこんでくるというものではなく。 イメージとしてはPSOのメールみたいな物で、ID(カード)を交換したもの同士のみがおりとりできるというもの。 ホスト一覧CGIが完成したら、他のゲームのホスト情報も一応は取得できるわけで、今このホストでID○○は居るか? というやりとりをおこなったりする。 必要なのは、ホスト間の一時的なコネクションと、ホスト間でやりとりされるコマンドの制作と、共通IDの生成…だろうか。
- 179 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/12 05:18 ID:???]
- >130氏
先に書き込んだことがちんぷんかんぷんなことに成っていてすみませんハハー。 受信バッファあふれエラーは自分で作成してました。 >416氏 EasyCDCreaterが亡くなったのはおれのせい??面目次第もございません。 共通チャット、なかなか意欲的ですねー。可能かなぁ。ゲームIDとゲーム無いIDがわかれば可能と言えば可能か。 もうちょっと膨らませて、あるゲームで取れる特別なアイテムが渡せるとかあっても良いかも知れないですなー。 クリア必須アイテムや、便利アイテムなどが違うゲームをやってる人からしかもらえないとかね。ただどうやって知り合うのかっちゅーのが・・・。 なお私は仲間内のテストで「受信側当たり判定は駄目駄目、サーバで行うべし」といわれ、サーバを一から作成し直しております・・・。
- 180 名前:RUR [02/05/13 02:48 ID:523o0yKA]
- >>178
実際のゲーム会社でもできないようなことを(政治的な理由だけど) 2chでやろうとする意欲に幸多からん事を。
- 181 名前:150(Winsok||DX8.1||c++) mailto:sage2002 [02/05/13 13:30 ID:???]
- 最近、BCCつらいのでVC++に乗り換えようかと考え中。
(DirectX8が気持ちよく動かんのですよ・・・) 学生なのでアカデミックパックウマ−なはずが Visual.netだと推奨環境が高すぎて無理。 こんなことなら早めにVC++6.0Proアカデミック買っておくんだった・・・ VC++のみインストールでも家のボロPCでは動かないかな>.net >共通チャット イイですね。あんまり難しいことはわかりませんが 何か協力できることがあればさせていただきます。
- 182 名前:416(HSP) ◆HoSW/FCI [02/05/14 05:49 ID:7TFNrLEk]
- >>179
Easy CD CreaterはベクターにあったVB5の新めのを入れたら復帰しました。でも、サンプルのほうは相変わらず10Hのエラーです。当方がCeleronだから? レイテンシが高いから? メモリとFBSが66Mhzだから? ウワァァァァァァン、メンドシノがバカにされてるヨー ← 古っ 共通チャットは、アイテムとかゲームバランスに影響を与えるモノは、ひとまず抜きにしたほうがよいかと。 とりあえずグローバルチャットと名付けまして、GCメッセージを送信したプレイヤーのいるホストが、他のホストに問い合わせを次々に行うP2Pタイプにするか、専用のホストを立てて、CG-IDをもつプレイヤー情報を一気に集約して管理するC/Sタイプにするか考え中です。 P2Pタイプの利点は、常時稼動のホストが不用であることなんですが、欠点として通信コストが高いこと(相手を見つけるまでに手間取る)です。 C/Sタイプは、相手をすぐに見つけられるんですが、常時稼動のホストが必要なことと、CG-IDを収集するためセキュリティの面でちと不安があります。 稼動ゲームが少ないうちはP2Pで、スポンサーが見つかったらC/Sがいいんじゃないかと思う曇り空の朝。
- 183 名前:416(HSP) ◆HoSW/FCI [02/05/14 05:50 ID:7TFNrLEk]
- >>180
実験してなんぼのフリーなネットゲームですしね。 ほんとはホストプログラムの余残パワーを利用して共通ロビーを構築し、そのネットワーク網で共通チャットを実現するのが近道な気もするんですが、インターネット網のような安定性を得るにはどうしたらいいか、まだちょっと考える暇が無いんで…。
|

|