- 1 名前:名前は開発中のものです。 [01/12/20 06:48 ID:WLADMjH3]
- ネットワーク対戦型(対話型)ゲームだよ!
おそまきながらネットワークの時代だとおもうんだ! やっぱ相手がいるから熱くなると思う。 1player型だって良く考えれば作者と対戦しているといえる。 それと人が相手だと飽きない。 2チャンネルだってゲーム性の弱いゲームだけど、 人が集まるとこれほどに面白くなるという好例だよ。
- 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
実験してなんぼのフリーなネットゲームですしね。 ほんとはホストプログラムの余残パワーを利用して共通ロビーを構築し、そのネットワーク網で共通チャットを実現するのが近道な気もするんですが、インターネット網のような安定性を得るにはどうしたらいいか、まだちょっと考える暇が無いんで…。
- 184 名前:416(HSP) ◆HoSW/FCI [02/05/14 05:50 ID:7TFNrLEk]
- >>181
DirectX8.1って…3Dばりばりですか。うちの貧疎なオンボードのグラフィックアクセラレーターでは、多分動かないですよ…。PSO動かなかったし(RADEON差して動いた)。 共通チャットはとりあえず置いといて、まずは動くモノを作りましょうヨ。 まずは、複数人接続->チャット->退室 がきちんとできる通信エンジンを作ってみてはどうでしょぅか>ALL それから自分の作るゲームに適したアプリケーションプロトコルを考案して、どれをTCPにしてどれをUDPにするか決めると。 一気に組み上げないで、動く物に少しずつ手を加えていくほうが、テストプレイヤーも参加できますし、なによりバグの温床を防ぐことができます。
- 185 名前:名前は開発中のものです。 mailto:sage [02/05/14 06:39 ID:???]
- >共通チャット
自分で作らないで、IRC利用しちゃうとかね。
- 186 名前:名前は開発中のものです。 mailto:sage [02/05/14 07:03 ID:???]
- 実にどうでもいいことだが、416はでしゃばりすぎ。
- 187 名前:名前は開発中のものです。 mailto:sage [02/05/14 07:07 ID:???]
- >>184
まず作る、っていうのはどうかと思うぞ。 設計をしっかりとしておけばバグはかなり減るよ。 Tryal & Error なんて開発効率が下がるだけ。
- 188 名前:名前は開発中のものです。 mailto:sage [02/05/14 16:46 ID:???]
- 416ウザイ
- 189 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/14 20:35 ID:???]
- >184
それぐらいならできておりますハハー。攻撃もできます。 今作り直してますがねー。通信はTCP/IPオンリーです。ソケットの数がもったいないような気がして。 って、「エンジン」ですか。DLLか何かにしようと?上から構造体を渡すと向こうで受け取れるとかそういうのですか。 一般化は難しいですなー。やるならクライアント側は取りあえずWindowsのDLLでいいでしょうが、サーバ側はUnixなんかになることも考えたソースをかかねばなりませんな。 >187 Tryal&Errorだと開発効率は下がるかもしれないですが何かはできるけど、設計をしっかりしてからと考えるといろいろ考えちゃって結局何も作れないヘタレなので、作っておりますハハー
- 190 名前:名前は開発中のものです。 [02/05/14 21:37 ID:.e.pT2og]
-
- 191 名前:名前は開発中のものです。 [02/05/14 22:17 ID:7jsYbZuU]
- 416は無人島forHSPという実績を残しているので
そこまででしゃばってないよ。 むしろうざいのは何もやらんで あっちのほうががいい・こっちがいいと口だけだすシッタカクン。
- 192 名前:ゴルメガ [02/05/14 22:44 ID:fiICSFq6]
- 11時にショウーブしようよ
- 193 名前:名前は開発中のものです。 mailto:sage [02/05/15 03:48 ID:???]
- >>187
仕事でやるんなら確かにその方が良いし、そうするべきだと思うが、 2ch、特にこの板でそれをやると確実に荒れるので 渡来&エラーを繰り返しつつ話を進めていくやり方の方が 結果的にはよいように思うナリ。 そもそも明確な目標が無いので設計段階で曖昧な部分が多いし そんな状態で汎用的に使えるものを作っていくと 形になる前に力尽きるかと。 #成果が目に見えて現れる方がやる気が出るでしょ?
- 194 名前:名前は開発中のものです。 mailto:age [02/05/15 03:49 ID:???]
- >>186 >>188はゲハ厨ケテーイ
- 195 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/15 04:49 ID:???]
- >>184
設計をきちんとしようにも通信に関する知識と経験がないから手探り状態なんですよ。 いわゆる「はじめて」の領域だから雛型作りを1からしているみたいなもので。 >>189 TCPだと接続数+1だけソケットが必要ですが、UDPならソケットは常に1つで済みますよ。 ただ、ローカルテストのためにポートが2つ必要というのは難点かなぁ。今、ローカルで2接続以上のテストが出来なくて困ってます。…って、ポート可変にすればいいのか。 通信エンジン部はDLL化するほど大げさじゃないと思いますよ。実質的な送受信部分は十数行で済む代物ですし。エラー時の処理が今のところ課題かなぁ。 >>192 aaさぬのところで待ってたのに来ないしw
- 196 名前:ゴルメガ [02/05/15 18:24 ID:pu341VSY]
- そんときゃやめてた
- 197 名前:ゴルメガ [02/05/15 18:26 ID:pu341VSY]
- キョウーハ夜七時〜夜10時
- 198 名前:名前は開発中のものです。 [02/05/15 18:30 ID:pu341VSY]
- イマヤテルーヨ
- 199 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/15 21:14 ID:???]
- そうか、UDPだとソケットは一個で良いのか。
ちょっと勉強してみないと駄目だなー。
- 200 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/16 07:55 ID:???]
- TCPとUDPの違い
TCP…コネクション型プロトコルとも呼ばれ、「送信元確立要求」「受信応答と受信先確立応答」「受信応答後のデータ送信」と3回のパケットのやり取りを経てデータを送り出す。 また、コネクションの確立、エラー制御、フロー制御の機能を有し、24バイトのヘッダが付加する。 UDP…コネクションレス型プロトコルとも呼ばれ、パケットの転送のみを行い到達の保証は行わない。8バイトのヘッダが付加する。
- 201 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/17 05:02 ID:???]
- FF11online(関連のスレ)を眺めつつ思ったこと。
ID認証とかの登録手続きは、サービス開始1ヶ月前から受け付けたほうがよさげ。FF11の場合、HDD込みで済ませておいたほうがよかったのでは? Webmoney多重引き落としはちょっとやばげ。 んで、相当数の鯖死亡中らしく。各鯖200人前後の入りだと書かれてるけど、なぜに落ちますか。初日鯖落ちはある種のお約束ではありますが。 まぁ、MMORPGの場合、ゲームに必要なデータ転送がゲーム開始(入室)時に集中するからねぇ。その辺りの分散処理が不充分だったのかなと無責任に呟いてみるテスト。
- 202 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/18 21:50 ID:???]
- だめだ、サーバーメインに直していたら、BCCじゃ辛いわ。TurboDebuggerの使い方がわかんねー。
さっぱり進まなくなってしまった。
- 203 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/20 23:27 ID:???]
- 歩いて喋るところまで復活。
戦闘可能なところまで戻る前に戦闘の仕様を考えねば・・。
- 204 名前:361(C++/VB) ◆fiQMk5WM [02/05/21 00:02 ID:5wws19LA]
- 人集めage
- 205 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/21 00:07 ID:???]
- >>204
VBのランタイムは同じバージョンでもリリースされた日が違うモノがあるみたいなので、今度あぷするときは再配布可能なDLLも付けてくだしぃ。ハヤクプレイシタイヨ ウワァァァァン!
- 206 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/21 01:31 ID:???]
- いやー、ランタイムの問題ではないようです。
こちらでできなかった人間はDirectXなど対応して皆できるようになりました。 10H例外はドライバがあってないとでるとか、そういううわさです。 取りあえずクライアントはほとんど作り直してないので・・・最新版でもたぶん動かないでしょうな。 VBのランタイムは確かにたくさん種類がありますけど、バグのあるところは使ってないのでたぶんどれでも本当は動きます。 ところで上げておいて上げた目的を忘れておりました。 たぶん416さんもだと思いますが、 ○○○○○○ドッター募集しておりますーー○○○○○○○○○○○ 探しても見つからないので、ゲーム制作板を訪れる絵描きさんの方、 フリーの素材ページとか持ってませんかーー?
- 207 名前:130 ◆v3R1XL8M mailto:sage [02/05/22 18:56 ID:???]
- 10H例外、検索してみました。
www.google.co.jp/search?q=cache:9YfajatD9msC:members.tripod.co.jp/tatuken/windows_ERA.htm+10H%E4%BE%8B%E5%A4%96%E3%80%80%E5%AF%BE%E5%87%A6&hl=ja&ie=UTF8 私は良くワカラナイのですが、浮動少数点がなんとか。らしいです。
- 208 名前:361(C++/VB) ◆fiQMk5WM mailto:sage [02/05/22 21:25 ID:???]
- 検索までしてもらって面目ないです。
ただ、VBレベルからは出そうと思っても出せないんですよ。 直そうにもどこを直せばよいのかさっぱりわからないのです。 私フリーソフトも作っている人間ですが、そのソフトでもやはり10H例外がでると言う報告が特定の人物から入ったことがあります。 バージョンアップしてもらったら直ったのですが、問題のエラーが何故出たのかはさっぱりわからずじまい。エラーが出る点とバージョンアップ時に変更した点は全く関係なかったのです。 特定のバージョンで報告が重なったことがあったので、何らかの原因があるであろう事はわかるんですけどねぇ。
- 209 名前:名前は開発中のものです。 [02/05/22 21:36 ID:Ls4F1cac]
- age
- 210 名前:416(HSP) ◆HoSW/FCI mailto:sage [02/05/23 13:22 ID:???]
- >>206
DirectX関連なら、うちのオンボードグラフィックアクセラレーターは120%、DirectX8.1に対応していないから、そのあたりでエラーが出ていると思われ。DirectDrawが無くなって、全部3Dに統合されたからねぇ。 手持ちのRadeonを差せばokなんだろうけど、いかんせんPCIなやつなんで、主要で使っている某3Dソフトがダメダメになっちゃう罠。 ただ、HSPからDirectX使う分には大丈夫なのよねぇ。なんか特殊な命令つかってり?
- 211 名前:361(C++/VB) ◆fiQMk5WM [02/05/23 14:36 ID:yfO3OUYo]
- DirectX7しか使ってないですなぁ。
- 212 名前:名前は開発中のものです。 [02/05/23 16:07 ID:R08HfVdk]
- ごめんなさいって言えておりこうさんね
- 213 名前:130 ◆v3R1XL8M mailto:sage [02/05/23 21:14 ID:???]
- >>212
ごめんなさいヽ(´ー`)ノ
- 214 名前:416(HSP) ◆HoSW/FCI [02/05/24 06:22 ID:btbuBamk]
- ホスト(サーバー)プログラムを稼動させて、クライアントを待つとなるとドメイン持っていない人はIPアドレスを公表しないといけない…という問題が、satoshiさんの作ってくれたホスト登録CGIで解決しそうです。
まぁ、DirectPlayの待ちうけロビーを使えばOKとかいう話もありますが、あれ、重いし。 HTTPでCGIへ以下のデータを送信すれば、大抵のネットゲームで利用できるはず。
|

|