トップページgamedev
994コメント406KB

MMORPG 作成

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆dqOqxR1c 01/11/06 19:00ID:???
MMORPG 作成 I
 http://natto.2ch.net/netgame/kako/1001/10012/1001227519.html
MMORPG 作成 II
 http://game.2ch.net/test/read.cgi/netgame/1002000791/l50

プロジェクトページ
 http://freeweb2.kakiko.com/mmorpg/
0688416 ◆quHoSW/FCI 2006/02/26(日) 04:29:50ID:hheEzEt5
>>679
 ゴメン、なぜ考慮しなくていいのかの説明plz。

>>687
 接続しました。

 当方の環境 athlon2500+2GB+Radeon9600XT なのでクライアントの重さは確認できません。
fpsは常に30でした。

 移動ですが、マップスケール対して歩行速度が遅いので、これはかなりストレスになると思い
ます。
 あと、移動と移動のつなぎ目に応答遅延によると思われる妙な間があるのも気になりました。
移動の終了を待って次の移動情報を鯖に送っていると予想しますが、移動中でも移動工程の
半分を過ぎたら次の移動処理に取り掛かってもいいと思います。

 それからMOBの名前表示の部分にバグを発見。右端でもなると思いますが、とりあえず左側
で名前を見切れさせると、文字の影(?)だけズレて表示されています。
0689名前は開発中のものです。2006/02/26(日) 05:09:11ID:Rurjq0Cr
同期問題が悲劇的でリアルタイム処理ができない。

プレイヤーの操作
├→異なるPC上での異なる通信時間による異なる処理結果─┐
├→異なるPC上での異なる通信時間による異なる処理結果─┤
├→異なるPC上での異なる通信時間による異なる処理結果─┤
├→異なるPC上での異なる通信時間による異なる処理結果─┤
├→異なるPC上での異なる通信時間による異なる処理結果─┤
├→異なるPC上での異なる通信時間による異なる処理結果─┤
└→異なるPC上での異なる通信時間による異なる処理結果─┤
                                      ↓
              処理結果が一致する可能性は果てしなく零に近い。

今更非リアルタイムのMMORPG発表しても1000人もユーザー集まらないだろ?

0690名前は開発中のものです。2006/02/26(日) 06:59:27ID:c3ploH5f
416 ◆quHoSW/FCI さん
計算だけを外でやってもその出力をデータに反映させるのがローカルなら結局意味がなくない?
たとえばステータスボーナスポイントを1消費してstrを1増加させるといった場合
どこか他人のマシンで1+1=2とか2-1=1って計算したところで、
それでstrを2にする処理がローカルで動くなら全く意味がないでしょう?
意味がないというのはチートの標的にできるとということを言っています。

0691名前は開発中のものです。2006/02/26(日) 08:46:32ID:XWUSpOiB
重い重いといってたの私です。
1.3GHZなんですけどfpsは20ちょいですね。
回線はADSL1.5
普通の商用2DMMOなら問題なく動くのですが。
とくにスライムが多い画面だとほぼ操作不可能になります。
0692名前は開発中のものです。2006/02/26(日) 11:09:45ID:hc0w+0RE
Pen3  1.2GHz
VRAM  64MB
メモリ 1024MB
回線  モアスペです。
FPS:30出てます。
うちの環境では691さんのような症状はありませんでした。

移動速度はもうちょっと速くても良いかもしれません。
0693416 ◆quHoSW/FCI 2006/02/26(日) 12:18:49ID:hheEzEt5
>>689
 シンプルなC/S型でも同期問題はあります。遅延がある以上完全同期は実現不可能で、
そのあたりのズレは逆算によって推測したり、ある程度で見切りを入れていたりします。
あと、処理結果が複数の解を出してしまった場合は、それをどう判断して最終結果とするか
はデザイナーにゆだねられます。

 …という前置きをしつつ。

 具体的なシチュエーションが述べられていないのでちと考察がしんどいのですが、遅延に
よって引き起こされる問題としては、攻撃真際のバッフ(能力値の増減効果)でしょうか。
 つまり、防御側が攻撃される真際に防御値を上げるなんらかの行動を行った場合、遅延が
少ない判定者は攻撃成功の結果を返し、遅延が多い判定者ではバッフ値が反映されて攻撃
失敗の値が返る可能性があります。
 このような0/1判定の場合は、攻撃側有利にするか防御側有利にするかはゲームデザイナー
の判断によりますし、判定者数を奇数にして多数決判断にする場合も考えられます。

 あと、0/1ではなく数値の場合、結果値を順列に並べ替えて両端の値を排除した平均値等を
採択するという手法も。


>今更非リアルタイムのMMORPG発表しても1000人もユーザー集まらないだろ?

 非リアルタイムMMO(RPG)の存在を知らないので詳細plz。あー、webであった行動を採択
して結果待ちするゲームのことかな。
0694416 ◆quHoSW/FCI 2006/02/26(日) 12:19:56ID:hheEzEt5
>>690
 クライアント側で判定処理をまったく行わないシステムの場合…。

 通常のC/S型は、鯖(S)がプレイヤーの数値を持っていてクライアント(C)の要求に応じてSで
計算し、結果のみをCに返すという動作をします。
 当該の場合も、SはCaにCbの判定を一任して、CbのデータをCaに預けます。SはCbにCaが
担当者だと通知し、CaはCbに対して計算を要求してCaが計算、結果をCbに返すわけで。

 どちらの型もクライアントは自分自身のデータは持っていないという点で共通します。


 ただ、既存のゲームではそれだと鯖側の負担が大きすぎるため、ある程度の判定はクライ
アントのみでもできるように具体的な数値を送ったりしています。
 けれども当該の場合は、クライアントはあくまでも判定者への判定依頼とその結果値の
モニターに終始すると考えてください。
0695416 ◆quHoSW/FCI 2006/02/26(日) 12:27:00ID:hheEzEt5
>>691
 107さんのクライアントの負荷率ですが、私の環境でCPU40%使用しています…オモイヨ、コレ。
691さんの環境だと常駐物の量などによっては処理落ちするかも。

 それに対して自作の例のアレを立ち上げてみたのですが、鯖とクライアントを合わせて
CPU使用率…0%からたまに1%…orz

 まぁ、グラフィックの密度差もありますが、なんか妙なところで処理を食っている可能性は
ありますね。
0696名前は開発中のものです。2006/02/26(日) 14:02:31ID:vTljOGfz
> デザイナーにゆだねられます。
複数の他鞍からの順不同かつ異なる位置情報に基づく判定結果が、
他の判定鞍と同じに結果になりうるという、
素敵メカニズムを設計してくれるデザイナーを募集するスレは此処ですか?


> 107氏
Athlon1G+GeForce4でCPU使用率90%程度。

0697107 ◆a6JcKaYOUI 2006/02/26(日) 14:42:29ID:eg2hQz1H
Athlon 2500 / 2GB / Radeon9600XT : FPSは常に30, CPU使用率40%
Pentium 3 1.2GHz / 1GB / VRAM:64MB / モアスペ : FPSは30
? 1.3GHz / ? / ? / ADSL1.5 : FPSは20ちょい(とくにスライムが多い画面だとほぼ操作不可能)
Athlon 1GHz / ? / GeForce4 / ? : CPU使用率90%程度

>>691
CPUは Athlon? Pentium 3?

あーめちゃスペックを要求するゲームでつねorz
開発マシンは Athlon X2 3800+ / 1GB / GeForce 6800 / ADSL 12M? なんで
はるかに早いですorz
サーバーにしようと思っているマシンでも試してみます
0698107 ◆a6JcKaYOUI 2006/02/26(日) 14:43:37ID:eg2hQz1H
>  移動ですが、マップスケール対して歩行速度が遅いので、これはかなりストレスになると思い
> ます。
まだ遅いですか....
マップが広すぎなのかな

>  あと、移動と移動のつなぎ目に応答遅延によると思われる妙な間があるのも気になりました。
> 移動の終了を待って次の移動情報を鯖に送っていると予想しますが、移動中でも移動工程の
> 半分を過ぎたら次の移動処理に取り掛かってもいいと思います。
なるほどそういう手がありますしたか

>  それからMOBの名前表示の部分にバグを発見。右端でもなると思いますが、とりあえず左側
> で名前を見切れさせると、文字の影(?)だけズレて表示されています。
これはHSPのバグと思われます
未確認ですが右端では多分ならない気がします

>  107さんのクライアントの負荷率ですが、私の環境でCPU40%使用しています…オモイヨ、コレ。
> 691さんの環境だと常駐物の量などによっては処理落ちするかも。
>  それに対して自作の例のアレを立ち上げてみたのですが、鯖とクライアントを合わせて
> CPU使用率…0%からたまに1%…orz
ちなみにそれはC++製ですか?
>  まぁ、グラフィックの密度差もありますが、なんか妙なところで処理を食っている可能性は
> ありますね。
DirectX使っていないのでグラフィックが激重かと
あとアニメーションとか
0699名前は開発中のものです。2006/02/26(日) 15:54:51ID:hc0w+0RE
107氏はHSPを良く知らないのでは?
0700107 ◆a6JcKaYOUI 2006/02/26(日) 16:25:05ID:eg2hQz1H
>>699
ほうほう、たとえば?
0701名前は開発中のものです。2006/02/26(日) 17:58:44ID:zE2PEv+J
五年前のスレ……
0702名前は開発中のものです。2006/02/26(日) 18:07:35ID:hc0w+0RE
HSPでゲームを作ると実行負荷の高い命令ばかり使ってしまうようになるので
重くなるのはしょうがないです。
特に標準命令での描画関係はスペック次第でかなり差が出てしまうので、
DirectXを使った方が描画が安定します。
CPUの負荷が気になっているのであれば低減させるプラグインもありますし使ってみてはどうでしょうか。
0703107 ◆a6JcKaYOUI 2006/02/26(日) 18:13:04ID:eg2hQz1H
>>701
ここ乗っ取られてますからw

>>702
> CPUの負荷が気になっているのであれば低減させるプラグイン
kwsk
0704639 ◆WKezKkIa.w 2006/02/26(日) 18:29:10ID:AP41JBeV
ごぶさたしてます〜

近況

自作機のオーバークロックにはまり中の為開発停滞中orz
あと子育てが・・・

私のライバル>>107

進行が完全に抜かれちまいましたww
これからもガンガッテくだちぃ

>>416

是非あなたの作品を未完成でもいいから体験させてくだちぃ!
107氏も私のも(私のは現在鯖停止してますが)、ここと前のスレを使って
それこそ単なるログインとチャット程度から公開してました。


>>416氏 も 是 非 ! ! ! ! ! !
0705107 ◆a6JcKaYOUI 2006/02/26(日) 18:33:56ID:eg2hQz1H
>>704
おひさ
只今、1〜2ヶ月機能追加停止期間中なので
追い抜けるチャンスはいくらでもあります
ぜひ追い抜いてくださいw
0706名前は開発中のものです。2006/02/26(日) 19:48:35ID:hc0w+0RE
>107氏
time.hpi
0707107 ◆a6JcKaYOUI 2006/02/26(日) 20:02:38ID:eg2hQz1H
ほうほう、MIAさんのですか
(そのうち)試してみます
0708名前は開発中のものです。2006/02/26(日) 21:30:08ID:c3ploH5f
>>694
C/SのSを他の第三者のCが完全に肩代わりして永続データの保持もするとなると結局
従来SのDB上にあるものがネット上に分散して(ここでいうところの複数のCa内)
存在するということになりますね。その分散したデータ間相互のやりとりが必要になったときや
全体の中から検索する必要があるときはどうするんでしょう?
たとえば範囲魔法を使って不特定多数のPCにダメージが行く場合とか、
ある名前の人にtellするような場合です

これは認識が間違ってないか確認ですが、処理結果の多数決をとるために、同一の処理を
複数の第三者が行うわけですから、複数のCaが一人のPC用のデータを保持して
常に同期を保つという処理も必要になってくるという理解でいいですか?
0709名前は開発中のものです。2006/02/26(日) 21:33:09ID:vTljOGfz
>>708
> デザイナーにゆだねられます。
0710名前は開発中のものです。2006/02/27(月) 01:22:53ID:ZXuERcpu
>>698
 まだゲームのイベント部分が乗っかっていないので、そのマップが無駄に広いのかどうかは
判断しかねますが、移動速度から見る限りでは広いですね。

 名前の表示は独自の表示ではなくてHSPでの装飾でしたか。影付き文字を選択しているよう
ですが、なんかちゃんと影が付いていないみたく。左端ギリギリで表示されると影がつくんです
けどね。

>ちなみにそれはC++製ですか?
 いえ、HSPでDirectX未使用ですのん。ちなみにGamDevのWikiにソースあったりします。

ttp://gamdev.org/w/?FrontPage

 かなり深いところに埋もれているので探すのがんがれ(w
 てか、Wikiの存在を知っている人が少ない気が…。
0711107 ◆a6JcKaYOUI 2006/02/27(月) 01:36:37ID:vwuFL/LB
>>710
>  名前の表示は独自の表示ではなくてHSPでの装飾でしたか。影付き文字を選択しているよう
> ですが、なんかちゃんと影が付いていないみたく。左端ギリギリで表示されると影がつくんです
> けどね。
gmode 7 で半透明合成してるのですがどうもマイナス座標にはうまく載らないみたい

gamedev今度探してみますw
0712416 ◆quHoSW/FCI 2006/02/27(月) 01:54:40ID:ZXuERcpu
>>708
 Winnyの様な匿名性を高めるためのデータ拡散は必要ないので、検索用のリストを保持する
群ノード(複数のノードが集合しているってことで群)を設ける予定です。ただ、主鯖がかなり遊ん
でいる状態なので、リストぐらいなら主鯖に一任してもある程度の規模ならさばけるは確かです。
まぁ、ある程度を越えたら…というのも課題にあるので、リストもクライアントにお任せする仕組み
にはするつもりですが。
 ちなみにWinnyでも回線速度によるノードの上下関係があり、上位のノードは下位のノードが
持つ検索用キーのほとんどを持っているそうです。だから下位ノードが検索するときは上位に
キー収集を依頼するだけでよく、同位もしくは下位には依頼しなくてよいそうで。

 範囲攻撃については、動的オブジェクトをエリア単位でリスト化している群ノードがあるので
その部分での処理となります。上の話は全エリアを跨いでの検索なのでよしなに。

 tellについては個人的には嫌な処理だなぁと思ったり。いかにもゲーム的で世界観を壊す
可能性がある機能なので(対となるアイテムを持たせるのならともかく)。
 実装するなら各エリアに検索キーを飛ばすという回りくどい方法もありますが、実のところ
主鯖(認証鯖)には接続中のPCのIPを全部管理してるんで(でないと担当者が決めれない)、
いきなりそっちに処理を飛ばすというのがスマートだと思います。
0713名前は開発中のものです。2006/02/27(月) 02:07:58ID:ZXuERcpu
>>708
>これは認識が間違ってないか確認ですが、処理結果の多数決をとるために、同一の処理を
>複数の第三者が行うわけですから、複数のCaが一人のPC用のデータを保持して
>常に同期を保つという処理も必要になってくるという理解でいいですか?

 はい、必要です。能力値や移動とかですが、これらには変更があるたびに1づつ増加する
カウンターを設けて、例えば214番目と215番目を比較しないように処理します。また、定期的
に実数値もしくは項目やデータが多ければ連続させた文字列のハッシュ値で不正値がないか
の確認も行います。

 なお、判定者ですが、処理のたびに集結して処理が終わったら解散するのではなく、定期的
な入れ替えはありますが、まぁ、背後霊みたくくっついていると想像してください。3人くらい。
0714416 ◆quHoSW/FCI 2006/02/27(月) 05:45:45ID:ZXuERcpu
 地形データの管理方法に目星が付いたのでご報告をば。

 最初は1エリア(n×nマス)毎に管理群ノードを設置しようと考えていたのですが、

ttp://gamdev.org/up/img/4805.jpg
(最上にあるボックスは主鯖。3ノードで1群ノードを示し、同色範囲を管理)

グリッドの端っこに位置すると複数のエリアから不足分のデータを転送しないと
いけなくなります。すると最大4群ノードから転送されるわけで膨大なトラフィック
を生む原因になると。


 なので、孤立したエリア毎に群ノードを割り当てるのではなく、各エリアに重複
部分を持たせて、1エリアは1ノードで管理するようにしました。

ttp://gamdev.org/up/img/4806.jpg
(グリッドは一画面分の領域を示す。小さなボックスはノード)

 整合性確認を行わない転送なら、常にどのエリアからでも1ノードからのみの
転送で済み、整合性の確認も重複している3ノードで判定可能です。
0715名前は開発中のものです。2006/02/27(月) 08:52:19ID:6MMJrpp9
ゲームつくるのは時間ない忙しいからできない。
でも、こういう概念図つくったり
お客さん一杯きたらどうしようとか、チートされたらどうしようとか
皮算用するのはすごく得意そうだね。
がんばってね。
0716名前は開発中のものです。2006/02/27(月) 08:57:38ID:3e/ILBhu
>>715の嫉妬の炎が俺には見える!
0717名前は開発中のものです。2006/02/27(月) 19:48:17ID:4zf3++To
>>715が皮肉に見えた漏れは心が荒んでるのか。。。
0718名前は開発中のものです。2006/02/27(月) 19:51:09ID:3yojKXNa
むしろ皮肉に見えないほうがどうかしてるだろ。
0719639 ◆WKezKkIa.w 2006/02/27(月) 21:14:29ID:+0f27gRv
>>416 ◆quHoSW/FCI さんへ

  ∧_∧  + >>695 自作ノ例ノアレ
 (0゜・∀・)   公開マッテマスヨ
 (0゜∪ ∪ +  ワクワクテカテカ
 と__)__) +

0720名前は開発中のものです。2006/02/27(月) 21:23:32ID:4zf3++To
理論に自信あるなら後は実証あるのみだもんな。がんばれ416。
0721名前は開発中のものです。2006/02/28(火) 00:15:01ID:8ild+qgd
>グラフィックの密度差
0722名前は開発中のものです。2006/02/28(火) 01:55:19ID:3jGlvlOE
>>712
>動的オブジェクトをエリア単位でリスト化している群ノードがあるので
どういうこと?キャラクタとかのデータをCa達をもってるのわわかったけど、
さらにそいつらが持ってるコピーをまとめて持つノードがいるということ?

というかサーバ役を分散するというのは一クライアントごとにそのクライアントのPCを
一対一で担当するわけじゃなくて、座標というか空間ごとに担うような感じなんだろうか

>>713
バージョン番号をつけるのはいいけど、コピーをもってる全員のバージョンが
一致して完全に同期がとれるまで処理を停止するわけじゃなくて、
見切り発車するということなのかな?古いバージョンを持ってる人の処理は無効ということにして。
そうするとほとんどの時間帯でコピーをもってるノードは役に立たない(多数決に参加できない)
んじゃないかと思うんだけどどうでしょう?
戦闘なんかをした場合なんかを考えれば、一回の変化がすべての第三者へ伝播するよりも
圧倒的に速くに次のバージョンが現れてくると思うのですが、どうですか?
0723名前は開発中のものです。2006/02/28(火) 02:04:38ID:AnpArEX5
てすと
0724416 ◆quHoSW/FCI 2006/02/28(火) 10:21:31ID:oTylGgKo
>>722
 ああ、なるほど、「Winnyの動作のようなMMO」と「WinnyネットワークのようなMMO」という前提
の違いですね。たぶん722さんはWinnyでダウン条件を設置(処理依頼)し、検索リンクを経て転
送リンク(判定者)と接続し、ファイルを取得(結果を得る)というふうに解釈したのでは?

 私がWinnyを参考にしているのはファイル取得の手順ではなく、ネットワークそのものの構造
なのです(ノードの上下多重関係、クラスタ化)。Winnyでは匿名性の維持のため検索データの
取得も不定的ですが、匿名性の必要性がなければもっと揺れの少ないネットワークになりま
す。たぶんWinny2でのBBS開発で目指していた内容は、スレッドの制作者の匿名性は破棄
することでより強固な(データにとって信頼のある)ネットワーク網を作ろうと思っていたのだと
想像します。
 Winny2のBBSが最終的にどのような形になるのかは現状では知る由も無い(…って書くと
死んじゃった人みたいだな(苦笑))のですが、少し弄ればゲームのネットワーク網にも応用
できるものになっていたのではないかなと。

 …という前置きを踏まえつつ 次へ
0725416 ◆quHoSW/FCI 2006/02/28(火) 10:36:58ID:oTylGgKo
>>722
>どういうこと?キャラクタとかのデータをCa達をもってるのわわかったけど、
>さらにそいつらが持ってるコピーをまとめて持つノードがいるということ?

 恒久的にもっているのは主鯖です。主鯖がCaの判定役として無作為に数人(Cb、Cc、Cd)
選び、彼らにCaのデータを渡して、あとは一任します。判定役(Cc)が離脱したら主鯖は補充
の要請をうけて新たに判定役を決め(Ce)、CeへのCaのデータ転送は主鯖ではなくCbまたは
Cdから行われます。そしてCaがログアウトしたらCaのデータは判定者から主鯖に転送され
ます。
 もちろん判定役を選任する機能も、それぞれのクライアントのデータも、主鯖ではなくクライ
アント自体にまかせることも可能ですが、それが可能なネットワーク規模は相当なものになる
と予想します。逆にネットワーク規模が大きくなればそうせざるをえないとも言えますが。

>というかサーバ役を分散するというのは一クライアントごとにそのクライアントのPCを
>一対一で担当するわけじゃなくて、座標というか空間ごとに担うような感じなんだろうか

 そうです、限定的な範囲、限定的な関係をクライアント同士で処理するわけです。この
限定的な範囲というのがWinnyでいうクラスタ関係で、限定的な関係がp2pでの結びつきに
なるわけです。
0726416 ◆quHoSW/FCI 2006/02/28(火) 10:54:18ID:oTylGgKo
>>719
 ありゃ、やっぱり見つけられなかったか。

 とりあえず
ttp://gamdev.org/w/?%5B%5B%A5%B8%A5%A8%A5%F3%A4%CE%CC%B5%BF%CD%C5%E7%5D%5D

 まとまった時間が長期間とれるなら、正直こっちに手をつけたい今日この頃。
 …学生っていいよなぁ…って今マジデオモッテル。
0727名前は開発中のものです。2006/02/28(火) 19:53:49ID:RZk53d9r
>>726
なるほど。回線に高負荷をかけてまで、鯖処理を軽減させたがる理由が判った。
0728639 ◆WKezKkIa.w 2006/02/28(火) 21:52:49ID:elmcelxU
おー無人島さんでしたか!

HSPにおけるネットワークゲームの大先輩じゃぁありませんか

悲しいのは無人島さん107さん始め  皆さんの話している内容が
サッパリわからない事ですワハハorz

私の近況

ここのところ子供の夜泣きで寝不足です
年子なんでツライワー

夜泣きが終れば時間はどうにかつくれるのですが(といっても睡眠時間削るんですが)
今でさえ頭痛薬を常用してるヤヴァイ状態なので
しばらくは手をつけられそうにないですorz
0729名前は開発中のものです。2006/03/01(水) 04:57:58ID:LeN+sImJ
416 ◆quHoSW/FCIさん
サーバー役の人達が複数のコピーの同期を常に完全に保ちつつ全く同じ処理を並行してやっていく
のは現実的なスピードがだせないと思う
いっそのことさほど効果的でもない多数決システムは無しにして一人のサーバー役クライアントが処理を担当して
その他(ひとつで十分だと思うけど)はデータのミラーリングだけを並行してやっていて、
現処理担当が落ちたときにすぐに入れ替われるように待機しているというのはどうですか

地面の範囲で担当を決めるのはわかったけど、これエリアをPCが跨いだ瞬間には
どういう処理がおこなわれるんだろうか
サーバー役はさっきまで違うエリア担当が処理していたデータをどういう経路で手に入れるんだろうか
クライアントはどうやって今のエリアの担当サーバー役を知るんだろうか
0730名前は開発中のものです。2006/03/01(水) 06:47:06ID:5JwMFDK/
ざっくりしか読んでないけど書きコ
あんまし、クライアントの処理能力に期待しない方が良いと思うが。
正直、今頃そのCPUかよ。ってクライアントも平気で繋いで来るんで。
そいつ本人も劇重になって話しにならなくなるだろうし、
ぶら下がった奴もかわいそう。
処理能力見て振り分けるとすると、それだけで専用のサーバいりそうだし
もしも性能良いマシンの方が不利になるような状態になったりしたら、
誰もやらんのでは?
07317302006/03/01(水) 06:49:48ID:5JwMFDK/
もし動的に判断して振り分けるんで無いなら、
各クライアントに振り分けられる処理の重さは
同じになるように設計しておいて、そのうえで
その処理に足りない能力しかないマシンは
つなげないように、初めに足切りしておくか。
07327302006/03/01(水) 06:54:51ID:5JwMFDK/
簡単に、多数決時にタイムアウトするようなクライアントを
切るだけでもそのうち安定するかもしれないけど。
それまでラグを目立たないように調整するのが難しそうだな。

以上、独り言スマソ
0733416 ◆quHoSW/FCI 2006/03/01(水) 11:59:51ID:uuYEbgqz
>>728
>私の近況

 いや、それ、チラシの裏だから(w でもまぁ、仕事じゃないんだから無理はせず軽い乗りで。

 チラシの裏といえば、『オンラインゲームプログラミング』という書籍を買いました。密林で良書
となってたので、なんか今更だなぁと思いつつ購入。じっさいのところ内容は今更でしたが。
 プログラミングはできるけどネトゲーはつかみ所がなくて…という人には最適です。かなり
詳細に書いてあると思います。ただ、ゲーム内容はロビー+p2pの囲碁とか戦車ゲームとかの
類なのでMMO(MO)には手は届きません。ネトゲならではのテクというのも無かった気が。

#DNS鯖が逝ってるのか経路が腐ったのか板が見れたり見れなかったり。
#2重カキコになってたらsry
0734416 ◆quHoSW/FCI 2006/03/01(水) 12:13:41ID:uuYEbgqz
>>729
>サーバー役の人達が複数のコピーの同期を常に完全に保ちつつ全く同じ処理を並行して
>やっていくのは現実的なスピードがだせないと思う

 扱うデータの中には極力同時・同一性を計らなければならないもの(攻撃判定)と、それほど
神経質になる必要の無いもの(発言など)とにわかれます。また、行動にディレイを設けること
によって、必要とされる速度を緩和する手法も有ります。

 けれどまぁ、回線の品位がある程度は保証され、チートの存在も無い状態で厳密なチェック
を繰り返すというのは、行過ぎた処理であるのも指摘のとおり確かです。判定役にプライマリティ
を設けて、普段は単一処理、必要に応じて複数でのチェック処理を行うというのはどうでしょうか。
 ただ、送信手段にUDPを利用した場合は、ある程度の確率でパケットの損失が起こります。
通常、受信側で不足分の再送信を要求しますが、経路が複数ある場合、他方からの取得も
期待できるため該当回線からの再受信を待たずに処理に移れるという利点もあります。TCP
でもエラーによるリトライ遅延を軽減することも(Cbから異常により150ms、Ccからは正常に
50msだとCcを有効にして処理が可能とか)。
0735416 ◆quHoSW/FCI 2006/03/01(水) 12:23:29ID:uuYEbgqz
>>729
>地面の範囲で担当を決めるのはわかったけど、これエリアをPCが跨いだ瞬間には
>どういう処理がおこなわれるんだろうか

 これは普通のMMOと同じ処理になります。他のMMOも広大なフィールドを一定範囲で仕
切り、複数のサーバーで管理しています。プレイヤーは認知できませんが、境界線を跨ぐ
時は認証とデータの受け渡しが行われています。

#その辺りを利用したアイテムの複製チートは有名な手法。

>クライアントはどうやって今のエリアの担当サーバー役を知るんだろうか

 エリアの担当者は周辺の隣接するエリアの担当者を知っていることになります。エリアの
担当者は主鯖もしくは隣接の担当者からこの情報を手に入れます。これはルーターの経由
処理と同じ仕組み。あ、ちと違うか。でも相手を探せるのはIPの仕組みだから、まぁ、よしと
すべし(ぉぃ。
0736416 ◆quHoSW/FCI 2006/03/01(水) 12:41:29ID:uuYEbgqz
>>730
 想定しているクライアントの処理能力の分岐点は500Mhzを想定しています。とりあえず、
全部が全部鯖処理をする必要はないので、あまりにも低い場合はクライアント処理のみと
なると。ただ、その割合が多すぎると破綻するでしょうね。
 そのあたりは実は完成できてもン年後だろうということから、あんまり問題にはならない
だろうなと楽観しているのも事実。

 ちなみに無人島は333Mhzで開発、後期で500Mhzだったと思う。で、テストのために鯖1つ
とクライアント3つを同時に立ち上げてテストしていた…って中身スカスカだったのね。あれ
でも普通のRPG(趣味で作る範囲ね)よりは重い処理してるのだが。
 それよりも回線ですよ。当時(2002年)携帯から繋げてくる猛者がいるとは…。
0737416 ◆quHoSW/FCI 2006/03/01(水) 12:51:23ID:uuYEbgqz
 さて、食後のコーヒータイム。

 皆さんからツッコミがあるおかげで、漠然としていたイメージの設計もほんの少しずつ形に
成ってきたような気がします。各人のご指摘に感謝。まだ、骨格部分がなんとか稼動可能な
状態になってきたかな? という段階なので、動くプログラムを提示することはできませんが。

 まだまだその骨格に乗せるデータ形式も考えないといけないし、そのデータをもとにクライ
アントでどういう処理(おもに表現・グラフィック)が可能がというのも検討しなきゃならないわ
けです。
 でもまぁ、なんとか暇を作って、ネットワークが構築していく様を視覚でわかるようなシミュ
レーターか実際のソフトをうぷしたいなぁとは思っています。

 んじゃ仕事に戻る ノシ
0738416 ◆quHoSW/FCI 2006/03/02(木) 11:43:08ID:XjUyel4I
 地形データの管理と能動データ(PCとかMOBとか)の管理

ttp://gamdev.org/up/img/4830.jpg

 ただ、管理範囲を可変とする手法もありうるので暫定案です。

 あとは受動データ(アイテム類)の管理だなぁ。専用のノードは設けずに管理したほうが
よいのだろうか。はてさて。
0739107 ◆a6JcKaYOUI 2006/03/04(土) 09:32:22ID:RbJSojcz
鯖立てました

寝不足で死にそうなんで寝ます
0740416 ◆quHoSW/FCI 2006/03/04(土) 12:27:18ID:VO0Dphw3
>>739
 テストデータを集めているのなら、どんな行動をしてほしいとか事前に言ってもらえると
助かりますですよ。


 雑談としてラグ処理なんですが、FPSならともかくRPGに厳密な遅延対策が必要なのかなぁ
と思っていたりします。

 FPSでの命中判定は、鯖とクライアントとの遅延時間を定期的に計測し、クライアントからの
データをその値から「何ms前に発行されたモノ」として一定時間のさかのぼり判定を行って
います。キャラクターの位置データは一定時間分バッファとして記録して、遅延分バックロー
ルして判定しなおすわけです。

 一方RPGは表示が3Dで自由な位置に立つことができても、大抵の場合は一定範囲をマス
で区切ったグリッド単位で位置処理をしています。加えてRPG系でFPSのようなピクセル単位
での当り判定を行っているものはほぼ皆無なので、グリッド間の移動に掛かる時間のおよそ
半分の時間遅延ならば、とくに専用の処理を施さなくても特に問題は無いということに。
 さらに大抵のタイトルは戦闘にターゲットシステムを用いているので、あまり深く考えずに
組むことができるともいう。
0741名前は開発中のものです。2006/03/04(土) 15:33:29ID:Fs8bbryc
>FPSでの命中判定は、
嘘を書き込まないでほしい。
0742名前は開発中のものです。2006/03/04(土) 15:45:07ID:ghpl6ht+
お花畑。
0743911 ◆dUgCMabcts 2006/03/04(土) 17:16:39ID:JCn5l93n
えー107氏クライアントどこにあるのでしょうか;
0744911 ◆dUgCMabcts 2006/03/04(土) 17:54:18ID:JCn5l93n
あークライアントありました。
0745107 ◆a6JcKaYOUI 2006/03/04(土) 19:37:31ID:RbJSojcz
>>740
> テストデータを集めているのなら
あまり考えていなかったんだけどね
あえて言うなら通信ラグとかかな
0746911 ◆dUgCMabcts 2006/03/05(日) 02:05:21ID:QDHtmBT8
>740
>741
ラグ処理は種類によって違うみたいです。
昔遊んだS.I.Nとかは指摘処理で、CS2とかは両方タイプです。
詳しい名前とかは知らないです。

(昔)
クライアントだけの判定 ・・・ 遅延が起き難いが判定精度が個々に頼る。(メモリーチートが簡単)
サーバーだけの判定  ・・・ 遅延が起き易いが判定精度は確実。
(今)
両方(6:4ぐらい)の判定 ・・・ 近頃は性能上がったのでメモリー監視でこのタイプが多いらしい。

全てが嘘ではないと思いますが・・どのタイプか書いた方が良かったかもです。
0747107 ◆a6JcKaYOUI 2006/03/05(日) 15:01:54ID:ktK2ZYer
鯖変えてみたらCPUが100%近く行っていたorz
→ウエイト変えてみますた
ということで鯖の負荷テスト実施中
一応24時間起動するつもりでつ

変更した鯖PCはたまにリセットがかかりますorz
落ちていたらスレで報告ヨロです
0748名前は開発中のものです。2006/03/05(日) 15:18:49ID:UgR865cr
グラボのデバイスドライバで落ちるPCと落ちないPCってあるよね。。。
0749107 ◆a6JcKaYOUI 2006/03/05(日) 15:40:10ID:ktK2ZYer
>>748
いやたぶんHDDの熱暴走かなと
ドライバの可能性もありますね
0750名前は開発中のものです。2006/03/05(日) 20:20:30ID:u25uAxXP
小なりともゲームになってればなぁ。
0751107 ◆a6JcKaYOUI 2006/03/05(日) 20:50:02ID:ktK2ZYer
>>750
ついでに
”戦闘がつまらん”とか
”他のマップないのー”とか
言ってくれると助かります
0752名前は開発中のものです。2006/03/05(日) 21:33:55ID:u25uAxXP
皮肉?じゃないと思ってマジレスすると
さすがにそこまではもとめてないよ。
つまらんかどうかすら機能してないし、
ゲームになっていない以上マップ増やすつったって
背景素材の問題でしかないし。
0753107 ◆a6JcKaYOUI 2006/03/05(日) 21:40:09ID:ktK2ZYer
orz
0754名前は開発中のものです。2006/03/05(日) 22:05:20ID:8IIddgmg
移動の際少しバグがあるようです
いきなり、2マス先に進んだり
斜めに進んだりします
0755名前は開発中のものです。2006/03/05(日) 22:09:05ID:E7slZqC8
ラグでねーか?
0756911 ◆dUgCMabcts 2006/03/06(月) 18:25:52ID:IMQsPCcT
>>754
ラグですね。
クライアント側で補間してないからかな・・・
0757911 ◆dUgCMabcts 2006/03/06(月) 18:48:41ID:IMQsPCcT
あー斜めに進んだりってのを見落としてたのでそうでもないか。
>>107氏がんばってくださーい!
おらおらでひとりえぐも。
0758名前は開発中のものです。2006/03/08(水) 02:18:38ID:bw0dDJz/
まず、現段階でのラグをどうにかする必要があるな。
(この重さではやる気も失せる)
あと、小なりともゲーム性が必要。
アクション系RPGにするのか、
ただの生活ゲーにするのか・・

課題はいくらでもあると思うのだが
0759名前は開発中のものです。2006/03/08(水) 08:40:18ID:GWuTsgjj
モンスや自分が死んだりリスポーンしたりって実装されてるの?
0760名前は開発中のものです。2006/03/09(木) 15:55:44ID:gHnyFj85
MMORPGつくろうとPCを自宅サーバーにしようと思ってルーターの設定とかいじってたんだけど
うまくいかない
ゲームのサーバー提供してくれる場所とかない?
0761名前は開発中のものです。2006/03/09(木) 16:09:30ID:u4VYh69q
検索すればあるんじゃね、
でもきっと大企業向けだと思うよ。

個人でするなら自分でやるしかない。
0762名前は開発中のものです。2006/03/09(木) 22:51:24ID:sxWZAi78
正直 ルータの設定を含めて自宅鯖の構築も出来ないのでは
MMORPGなんてつくれないと思うのですが
0763名前は開発中のものです。2006/03/10(金) 08:34:01ID:eDyAepNd
そういえば、UPnPで設定できると簡単で良いよね
0764名無しXPG ◆dffLbwc7XE 2006/03/10(金) 14:32:50ID:qn6WiK0s
>>416さん
P2PでMMOをやるなら、近くにいるプレイヤー全てと単段クロスバー結合にして、
なおかつ、通信するときに、相手先だけでなく、結合してる全ノードそれぞれを経由する多重通信をすれば、
レイテンシーも低く、信頼性も確保できてなかなか面白いと思います。
問題は各クライアントの通信負荷が100から1000倍程度になることですが。
今から作り始めて5から10年後に完成とかなら夢でもないんじゃないかな。
0765名前は開発中のものです。2006/03/11(土) 03:47:00ID:Q+mVDSLW
済んだ話を蒸し返すのはどうかと思う。
コテハンなんだし、
早く「無かったことにしたい」と思っているだろう。
0766名前は開発中のものです。2006/03/11(土) 09:14:04ID:ksPcgVfo
>>765
まぁまぁ。
ただのシッタカ君にマジレスするのはどうかと。
07677602006/03/11(土) 10:15:51ID:LhO1MJ3q
自宅鯖立てようとがんってることにした
NetGenesis使ってるんだけどIPマスカレードテーブル設定でポート番号設定して
再起動するだけでok?
0768416 ◆quHoSW/FCI 2006/03/11(土) 10:48:50ID:E9SNKN8S
>>764
 試算せずに言うのはなんだけど、通信負荷が100から1000倍にも跳ね上がったら、C/Sの幹
問題と同じになっちゃって、p2pにするメリットがないと思うのです。でも、ちょっとしたアイデア
で負荷が激減できるということもあるんで、考察することは大切。

 んで、多重通信の問題点は、その情報は「既に得ている/まだ得ていない」のフラグをどう
するか、ではないかな。pop数は制限するとしても、ルーティングをきちんとしないと、無駄に
データを送り付けあうという状況は容易に想像できるような。ん? もしかして一直線に連結?
0769416 ◆quHoSW/FCI 2006/03/11(土) 11:01:39ID:E9SNKN8S
>>767
 「IPマスカレードテーブル設定」であってるはず。
 『NetGenesis』に対して設定したポートへの送信があった場合、指定のローカルIPをもつPC
にデータを渡すという動作です。だから鯖にしたいPCに割り当てているIPを「変換IPアドレス」
に入力してください。
07707602006/03/11(土) 12:29:25ID:AIbUPWr7
友人と試したけどやっぱりできなかった
相手もポート開けないとだめ?
0771416 ◆quHoSW/FCI 2006/03/11(土) 13:46:15ID:E9SNKN8S
>>770
 相手がファイアウォールで遮断してしまっているという可能性は?
 OSがXPなら内蔵のファイアウォールが遮断している場合があります。

 あと、プロバイダー等からちゃんとグローバルIPが割り当てられていますか? CATVなどでは
グローバルではなくローカルIPが割り当てられていることがあります。この場合、業者側による
設定がなされないとサーバーになることができません。
0772名無しXPG ◆dffLbwc7XE 2006/03/11(土) 17:31:19ID:hESeZxkl
>>768
プレイヤーの数が数千になっても、一般的なパソコンでサーバーが建てられるのと、
プレイヤー同士が直接繋がりあうことによって、場合によってはレイテンシをC/Sよりも低くできることで、
P2Pのメリットが出てくると思います。
コスト以外にもC/Sより優れている点が無いと、全然面白くないですよね。

多重通信は、既に情報を得ているとか関係なく送ります。
一見無駄に思えますが、不正な通信を防いだり、レイテンシを削減するのに有効かと思いました。
関係してるクライアントでお互いを監視しあいつつ、有効な情報を最短時間で反映させるような感じです。
0773名前は開発中のものです。2006/03/11(土) 17:54:22ID:VDK/OEpB
416が微妙理論をロクに検証もせずに大口叩くあたりが、
このスレの進行を狂わせてるわけだが、

・重要度の高い通信
サーバー←→全プレイヤー

・重要度の低い通信(通行人とか、エフェクト
サーバー─→パーティーのリーダー┬→パーティーメンバー
..                     ├→パーティーメンバー
..                     └→パーティーメンバー

くらいの構成なら検討の余地あるな。俺的に。
ただしパーティーリーダーがポート空けなくちゃ行けないので、
よほどうまく啓蒙しないと、実装は90%無理だw。
0774名前は開発中のものです。2006/03/11(土) 17:56:42ID:VDK/OEpB
不毛に上げてしまった。スマソ
0775名前は開発中のものです。2006/03/12(日) 02:25:51ID:v/iGtfpN
少しは減るだろうな
しかし親が落ちると同時に子は切れてしまう
0776416 ◆quHoSW/FCI 2006/03/12(日) 13:00:37ID:xOjlq3NU
>>772
 それを実現するネットワーク網のスタイルですが、「近くにいるプレイヤー全てと単段
クロスバー結合」の「近く」を、どの基準で判断して流動的なネットワーク網を構築するかが
問題になるんじゃないでしょうか。接続数の上限と下限の設定も必要かも。

>>773
>ただしパーティーリーダーがポート空けなくちゃ行けないので、
>よほどうまく啓蒙しないと、実装は90%無理だw。

 MMOではないですけど、PSOやFMOはポート開放をユーザーに求めています。厳密には
PSOはコンシューマー発なので、PC版が出るまではポート問題は接続業者レベルの問題
でしたが。FMOのPC版もUPnP機能が正常に働かないと、手動での開放となります。

 一応商用でもp2pは扱われているので、その関係図の実装は可能だと思います。MMOだと
どれくらいの負荷の減少に繋がるかは、実装範囲を含めて未知数ですが。
0777名前は開発中のものです。2006/03/12(日) 15:48:50ID:Jb3sbf/J
サーバはやっぱり自宅サーバが普通なのかな?
なんとか外部でやってくれないかと探してるんだけど…。
この辺どうかな?

さくらインターネット(sakura.ad.jp) 専用サーバ
http://www.sakura.ad.jp/services/dedicated/dedicated/
初期費用:5万〜10万程度
月額:1万程度(10MBベストエフォート)

さくらインターネット(sakura.ne.jp)専用サーバ
http://www.sakura.ne.jp/ss/02.shtml
初期費用:29800円
月額:6800円

WebARENA SuitePRO
http://web.arena.ne.jp/suitepro/index.html
初期費用:5250円
月額8820円
0778名無しXPG ◆dffLbwc7XE 2006/03/12(日) 15:53:26ID:wnXFFpyX
>>776
それはゲーム世界内の距離(たとえば250m)で判断するのが妥当でしょうね。
近くにいるのに情報が送られてこないとかになってはまずいので、上限は設けない方がいいでしょう。
クライアントが処理しきれなくなったら、処理しきれなくなったクライアントから切断していけば、
接続数が自動的に減るので安定すると思います。
監視システムを機能させるために接続数の下限(100以上)は必要でしょうね。
数人+多重起動のチートツール使用で、チートが通ってしまったり、
ゲーム内の過疎地に行けばチートの使い放題になっては意味が無い。
0779名前は開発中のものです。2006/03/12(日) 16:17:20ID:n1qpEX5W
>>777
レンタルサーバで、サーブレットとかjsp動かせるとこって
そうそう無いと思います
cとかのプログラムだともっと無いと思う
なので、レンタルサーバだとサーバプログラムを動かす事が
出来ない → 自宅サーバ
っていう選択にどうしてもなっちゃうと思います
0780名前は開発中のものです。2006/03/12(日) 16:34:55ID:DajtUR+K
MMOでServletだのJSPだの言ってる奴はどんなシュールギャグですか?
httpの仕組み理解してますか?
0781名前は開発中のものです。2006/03/12(日) 16:51:00ID:n1qpEX5W
>>780
うん、サーブレットとかは一回処理したらそれで終わり
クライアントからのアクセスを待つだけで、サーバからクライアントに
データとかを送ることは出来ないからね
ただ、一例として挙げただけです

java(アプリケーション)やcがサーバ上で実行出来ないから
レンタルサーバじゃ無理なんじゃないかっていう事が言いたかった
0782名無しXPG ◆dffLbwc7XE 2006/03/12(日) 17:12:38ID:wnXFFpyX
>>779 >>781
>>777のレンタルサーバーはどれも1台貸切なので(SuiteProは仮想サーバーだけど)、CだろうがJavaだろうが動かせると思いますが。
家でやるのと比べてどちらが安いか、サーバーのスペックが足りるかなどが問題ですね。
0783名前は開発中のものです。2006/03/12(日) 17:19:24ID:n1qpEX5W
>>782
へぇ、動かせるんだ・・・無知でごめんなさい

まぁ家なら電気代ぐらいでいけるかな・・・
ドメインは無料取得で何とかなると思うし
0784911 ◆dUgCMabcts 2006/03/12(日) 18:35:37ID:TsAe4hGm
>>777
通信容量の制限でひっかかりますよ・・・httpとかftpベースを考えてるはずですし。
データーベースとして利用するなら恐らくおkでしょう。
0785名前は開発中のものです。2006/03/12(日) 21:01:41ID:Jb3sbf/J
転送量の制限はどれも基本的には無いみたいです。
あまりにも高負荷だとダメかもしれないけど。

あと、自分はまだあまり詳しくないのですが、
ネトゲの通信プロトコルってhttpやftpなのですか?
独自プロトコルなのかと思ってた。
0786名前は開発中のものです。2006/03/12(日) 21:05:59ID:yDWOLFOO
TCP
UDP
0787911 ◆dUgCMabcts 2006/03/12(日) 21:50:46ID:TsAe4hGm
基本的にサーバーはメンテが届く位置にあるほうがいいですよ。
再起動・アップデート・監視・SNMP情報保存とか・・・
それにポート空けるとなると、専用サーバーでも難しい気が。(ルーター設定の方が簡単


ネトゲは基礎がTCPで適当に独自プロトコルのはず。
■ このスレッドは過去ログ倉庫に格納されています