MMORPG 作成
■ このスレッドは過去ログ倉庫に格納されています
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/
0664416 ◆quHoSW/FCI
2006/02/23(木) 12:08:35ID:VbOSNUgb平たく言えば、一極集中型のC/S形式は、機能が増えて処理が多くなると機能ごとにPCを
増設したり、接続者数が増えるたびにさらに増設しないといけないという、個人には厳しい
現状があるわけです。
なので、最低限の機能のみを主鯖に残して、あとの大部分の機能はユーザーのPCで処理
して貰おうというお話。もちろん、自分の判定処理を自身のPCで行わせればチートの温床に
なるので、利害関係のない第三者のPCに判定してもらう形になります。
で、107さんのもHSPなのですね。こちらはまだ土台の設計と検証レベルなので、実働は
まだまだ先ですが骨組みが出来たら公開したいと思います。
それから、658番のクライアントですが、使用ポート番号がドキュメントに記載されていない
ので繋げられないです。まぁ、たぶん鯖は稼動していないんだとは思いますが。
とりあえず、地形レイヤーと位置レイヤーの部分のネットワークの形は決まりました。が、
MOBのレイヤーをどこに組み込むかが課題。MOBはどこに依存させたらよいのやら…。
0665名前は開発中のものです。
2006/02/23(木) 20:38:17ID:bB240Yzr・他人の不幸は蜜の味チート。
・マナーと称してプレイヤー側が圧倒的に有利になるチート。
・負荷が高まるので無条件に拒絶。
等の可能性を考慮する必要がある。
あと、不意に
・回線が切れる。
・電源が切れる。
・地震雷火事親父に見舞われる。
等の可能性も考慮する必要がある。
0666名前は開発中のものです。
2006/02/23(木) 21:03:09ID:8cMLfFEM0667名前は開発中のものです。
2006/02/24(金) 10:13:32ID:IPMIaWirチートに関しては、判定処理は常に3つの第三者によって行うので、結果が異なる接続者は
当該ネットワークから弾き飛ばすという方向で。さすがに同一バージョンのチートが全体の4割
以上を占めるという事態には至らないと予想してます。もしそうなったら、それは別の根本的な
対策が必要かと。
判定処理以外でも1ノードは3つ以上の接続単位にするので、同時に全員が落ちない限りは
当該ネットワークは持続すると予想しています。ただ、接続者は常に同じ処理をほぼ同時に
行うので、バグによってノードが消えるということは充分にありえる話です。その場合でも、
データのやり取りを普段は行っていないだけで、一応全員は認証サーバーと繋がっているの
で復帰の手段はあります。でも、まぁ、バグが原因ならまたすぐ落ちるだろうけど。
一応その点の考慮は「三本の矢」方式で解決を試みてみるのですが、欠点はシンプルな
C/Sタイプより圧倒的に接続形態が複雑になるということですね。使用ポートは1ないし2で
済むのですが(そのあたりFMOの要求っぷりはすごいぞ)、某コレガのルーターだと落ちるか
もしんない…。
>>666
だみやんおめでと。
ネットゲームは当然既存のネットワークを利用するので、設計をきちんとしないと他者に
大迷惑をかけるという側面があります。周知の技術で組むのならある程度はそれらを参考
にして見切り発車できるけど、今回の様に前例が無い手法の場合は慎重すぎるぐらいが
丁度よいかと。
けれど、まぁ、金子氏の書籍のおかげでまったくの手探りじゃなくなったのは正直助かっ
てますのん。
0668名前は開発中のものです。
2006/02/24(金) 10:15:45ID:GGT/StGT0669名前は開発中のものです。
2006/02/24(金) 20:39:08ID:8SrOYlXt議論したいのなら、ネタの後出しは止めたほうがいいな。
指摘に対して解決策を考えたというなら、全く別の話だが。
で、どうしたいの?テスト?だったらクライアントplz
0670416 ◆quHoSW/FCI
2006/02/24(金) 21:05:34ID:IPMIaWirじつのところその部分は
>>662
> まず、ネットワークの維持の強化の為には、複数の参加者(想定3)をひとつのノードとして
>見做し、どれかひとつ欠損しても監視下にある参加者から即補充するという形を取ります。
> データの混乱、つまり不正データや処理に対しては、利害関係の無い第三者複数を判定
>役としてあてがい、異なる結果を出す参加者には、順次適切な処置を加えるという方法で
>対処します。
ですでに書いていたりも。
あと、今、開発費用を蓄えてるのでまとまった時間がとれないのであります。副業三昧。
やっぱり暇とお金は反比例するのでありますよ。
0671名前は開発中のものです。
2006/02/24(金) 21:25:34ID:bxoAq2wsそういう要求がゲームのためのシステム全体の構造と関わってくると
結局そっちの処理がゲームの方の足を引っ張る羽目になる
そもそも悪意のある行為というのは、もしもそれを為そうとする人が0人なら
全くそれについて作業する必要がないという、程度問題なわけで
後で必要なときに必要なだけセキュリティレベルを高められるようにデザインされてることの方が大事
構造としてチートを完全に阻止するというのは不可能である以上
ゲームとしての仕様の実現と、セキュリティレベルの維持というのは
同一のシステムの中にあったら必ず衝突してしまうよ
0672名前は開発中のものです。
2006/02/24(金) 21:46:43ID:8SrOYlXtおおすまん、読み飛ばしていたみたいだ。
で、複数のクライアントで処理するとして、
その結果を各々がサーバーに送信すると、
トラフィックが膨大になりそうなものだが。
0673名前は開発中のものです。
2006/02/24(金) 23:17:44ID:PluvT2vH事前によく考えておかないと後で死にそうな設計ですね
実装としてもキレイに作れるのかなぁ?
0674名前は開発中のものです。
2006/02/24(金) 23:32:59ID:8SrOYlXt単一鯖で処理して無問題だと思うけど、
ネタとしては面白い話なので、新たなる展開待ち。
0675名前は開発中のものです。
2006/02/25(土) 08:27:35ID:f7kKCqjwしかし、散々既出だが、通信に関しての設計が美味く出来ていないと
おはなしにならないものになると思う。
あと、自分でも書いてたと思うが、各クライアントのレスポンスの差を
考えると、どうしても最悪な方向になるので、そこが一番のネックだとおも。
現在のc/sなMMOなら、(直接は)本人が影響されるだけだが、
これでは他クライアントへの影響が大きすぎ。
最悪、つないでもつないでも、遅すぎて蹴られるユーザー出そう。
0676416 ◆quHoSW/FCI
2006/02/25(土) 09:45:14ID:VwLk9pxw国外(非亜)のゲームではPunkBusterを利用する手法が一般的ですが、国内の場合は
別口というとどういう手法をとっているんでしょうね? FMOでは攻撃判定を攻撃者側のPCで
処理しているため、その辺りのチート疑惑でごたごたしているようですが。
チートに対して無関心なシステムはさすがにやばいと思うので、チート対策がやりやすい
システムデザインというのは常に考慮したいと思っています。もちろん目的がチート対策な
システムにならないように注意したいわけですが。
>>672
地形データのやりとりだけでもまじめに行えば相当な量になるというのは想像に難くない
です。今その辺りの解決法を模索しているのですが、「ブリテン銀行前問題(そろそろ新しい
名前考えなきゃ…)」を解決しようとした時に思案していたロジックを利用してみようかと。かな
り乱暴な方法なので、ゲーム性を損失しないかが悩みの種ですが。
0677416 ◆quHoSW/FCI
2006/02/25(土) 10:15:25ID:VwLk9pxw今のところ移動の部分が一番頻雑になると予想しています。つまり移動処理でぶら下げる
ことの出来るクライアントの数は、かなり少ないと想定して設計中。処理の重さよりも通信の
帯域のほうがボトルネックなので、これはどれくらい細い回線ユーザーが多いかにも関わっ
てくるのですが。
4年前にくらべれば格段よくなっていると期待したいのだけれど。
>>674
MMOはとりあえず1000人規模と考えているので、個人ではMOが限度だと。ところが、MO
だと経済システムを取り入れても揺れ幅が大きすぎて破綻するという忠告が。確かに某海の
MMO(β)見てても、それは体感できたり(今はまともになってる?)。
0678416 ◆quHoSW/FCI
2006/02/25(土) 10:32:02ID:VwLk9pxwレスポンスのいい接続者をネットワークの主幹部分にもってくるという方法も考えてはいるん
ですが、それだといつも同じ接続者が同じ機能を担当するということになるわけです。すると、
そのノード(機能)のメンバーが固定になってしまい、チートされやすくなるという弊害が…。
でも、なりよりも、まず、無線ルーターが一番の敵だと思ふ(なんか日本は普及率いいし)。
ちなみにWinnyは匿名性を上げるために、意図的に中継者を増やす(ホップ数が多い)仕様
になっていますが、ゲームの場合は匿名性はほぼ関係ないので、常に最短のホップ数で
接続が可能です。その点では接続の確定率とレスポンスはWinnyよりは高いはず。
>最悪、つないでもつないでも、遅すぎて蹴られるユーザー出そう。
…というか、Winnyでいうところのport0ユーザー…(FMOの判定Bともいう)。
0679名前は開発中のものです。
2006/02/25(土) 16:50:13ID:4kmZTObL1000以上の同時接続は考慮しなくてもいいと思います。
0680名前は開発中のものです。
2006/02/25(土) 17:08:25ID:/I3pIfSKここは他の作者も居るんだし。
0681名前は開発中のものです。
2006/02/25(土) 18:58:48ID:IN45SIb8何のための掲示板だよ。
0682名前は開発中のものです。
2006/02/25(土) 19:12:48ID:kqTZ+fLs場違いだな、おまいは
0683107 ◆a6JcKaYOUI
2006/02/25(土) 20:35:06ID:pS84w52d金曜から今までお仕事してましたorz
416 ◆quHoSW/FCI さん
∧_∧ +
(0゜・∀・) ワクワクテカテカ
(0゜∪ ∪ +
と__)__) +
して待ってます
0684名前は開発中のものです。
2006/02/25(土) 20:56:44ID:ewwhB3wyもしかして無人島の人ですか?
0685名前は開発中のものです。
2006/02/25(土) 21:16:49ID:4kmZTObL個人について詮索するのは良くないと思うんだ。
0686名前は開発中のものです。
2006/02/25(土) 22:37:23ID:ewwhB3wy(´・ω・`) すまない
0687107 ◆a6JcKaYOUI
2006/02/26(日) 00:39:58ID:eg2hQz1Hそんなに重いですか?
1.移動速度が遅い
2.クライアント自体の動作が重たい
0688416 ◆quHoSW/FCI
2006/02/26(日) 04:29:50ID:hheEzEt5ゴメン、なぜ考慮しなくていいのかの説明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計算だけを外でやってもその出力をデータに反映させるのがローカルなら結局意味がなくない?
たとえばステータスボーナスポイントを1消費してstrを1増加させるといった場合
どこか他人のマシンで1+1=2とか2-1=1って計算したところで、
それでstrを2にする処理がローカルで動くなら全く意味がないでしょう?
意味がないというのはチートの標的にできるとということを言っています。
0691名前は開発中のものです。
2006/02/26(日) 08:46:32ID:XWUSpOiB1.3GHZなんですけどfpsは20ちょいですね。
回線はADSL1.5
普通の商用2DMMOなら問題なく動くのですが。
とくにスライムが多い画面だとほぼ操作不可能になります。
0692名前は開発中のものです。
2006/02/26(日) 11:09:45ID:hc0w+0REVRAM 64MB
メモリ 1024MB
回線 モアスペです。
FPS:30出てます。
うちの環境では691さんのような症状はありませんでした。
移動速度はもうちょっと速くても良いかもしれません。
0693416 ◆quHoSW/FCI
2006/02/26(日) 12:18:49ID:hheEzEt5シンプルなC/S型でも同期問題はあります。遅延がある以上完全同期は実現不可能で、
そのあたりのズレは逆算によって推測したり、ある程度で見切りを入れていたりします。
あと、処理結果が複数の解を出してしまった場合は、それをどう判断して最終結果とするか
はデザイナーにゆだねられます。
…という前置きをしつつ。
具体的なシチュエーションが述べられていないのでちと考察がしんどいのですが、遅延に
よって引き起こされる問題としては、攻撃真際のバッフ(能力値の増減効果)でしょうか。
つまり、防御側が攻撃される真際に防御値を上げるなんらかの行動を行った場合、遅延が
少ない判定者は攻撃成功の結果を返し、遅延が多い判定者ではバッフ値が反映されて攻撃
失敗の値が返る可能性があります。
このような0/1判定の場合は、攻撃側有利にするか防御側有利にするかはゲームデザイナー
の判断によりますし、判定者数を奇数にして多数決判断にする場合も考えられます。
あと、0/1ではなく数値の場合、結果値を順列に並べ替えて両端の値を排除した平均値等を
採択するという手法も。
>今更非リアルタイムのMMORPG発表しても1000人もユーザー集まらないだろ?
非リアルタイムMMO(RPG)の存在を知らないので詳細plz。あー、webであった行動を採択
して結果待ちするゲームのことかな。
0694416 ◆quHoSW/FCI
2006/02/26(日) 12:19:56ID:hheEzEt5クライアント側で判定処理をまったく行わないシステムの場合…。
通常の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:hheEzEt5107さんのクライアントの負荷率ですが、私の環境で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:eg2hQz1HPentium 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+0RE0701名前は開発中のものです。
2006/02/26(日) 17:58:44ID:zE2PEv+J0702名前は開発中のものです。
2006/02/26(日) 18:07:35ID:hc0w+0RE重くなるのはしょうがないです。
特に標準命令での描画関係はスペック次第でかなり差が出てしまうので、
DirectXを使った方が描画が安定します。
CPUの負荷が気になっているのであれば低減させるプラグインもありますし使ってみてはどうでしょうか。
0703107 ◆a6JcKaYOUI
2006/02/26(日) 18:13:04ID:eg2hQz1Hここ乗っ取られてますから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おひさ
只今、1〜2ヶ月機能追加停止期間中なので
追い抜けるチャンスはいくらでもあります
ぜひ追い抜いてくださいw
0706名前は開発中のものです。
2006/02/26(日) 19:48:35ID:hc0w+0REtime.hpi
0707107 ◆a6JcKaYOUI
2006/02/26(日) 20:02:38ID:eg2hQz1H(そのうち)試してみます
0708名前は開発中のものです。
2006/02/26(日) 21:30:08ID:c3ploH5fC/SのSを他の第三者のCが完全に肩代わりして永続データの保持もするとなると結局
従来SのDB上にあるものがネット上に分散して(ここでいうところの複数のCa内)
存在するということになりますね。その分散したデータ間相互のやりとりが必要になったときや
全体の中から検索する必要があるときはどうするんでしょう?
たとえば範囲魔法を使って不特定多数のPCにダメージが行く場合とか、
ある名前の人にtellするような場合です
これは認識が間違ってないか確認ですが、処理結果の多数決をとるために、同一の処理を
複数の第三者が行うわけですから、複数のCaが一人のPC用のデータを保持して
常に同期を保つという処理も必要になってくるという理解でいいですか?
0709名前は開発中のものです。
2006/02/26(日) 21:33:09ID:vTljOGfz> デザイナーにゆだねられます。
0710名前は開発中のものです。
2006/02/27(月) 01:22:53ID:ZXuERcpuまだゲームのイベント部分が乗っかっていないので、そのマップが無駄に広いのかどうかは
判断しかねますが、移動速度から見る限りでは広いですね。
名前の表示は独自の表示ではなくてHSPでの装飾でしたか。影付き文字を選択しているよう
ですが、なんかちゃんと影が付いていないみたく。左端ギリギリで表示されると影がつくんです
けどね。
>ちなみにそれはC++製ですか?
いえ、HSPでDirectX未使用ですのん。ちなみにGamDevのWikiにソースあったりします。
ttp://gamdev.org/w/?FrontPage
かなり深いところに埋もれているので探すのがんがれ(w
てか、Wikiの存在を知っている人が少ない気が…。
0711107 ◆a6JcKaYOUI
2006/02/27(月) 01:36:37ID:vwuFL/LB> 名前の表示は独自の表示ではなくてHSPでの装飾でしたか。影付き文字を選択しているよう
> ですが、なんかちゃんと影が付いていないみたく。左端ギリギリで表示されると影がつくんです
> けどね。
gmode 7 で半透明合成してるのですがどうもマイナス座標にはうまく載らないみたい
gamedev今度探してみますw
0712416 ◆quHoSW/FCI
2006/02/27(月) 01:54:40ID:ZXuERcpuWinnyの様な匿名性を高めるためのデータ拡散は必要ないので、検索用のリストを保持する
群ノード(複数のノードが集合しているってことで群)を設ける予定です。ただ、主鯖がかなり遊ん
でいる状態なので、リストぐらいなら主鯖に一任してもある程度の規模ならさばけるは確かです。
まぁ、ある程度を越えたら…というのも課題にあるので、リストもクライアントにお任せする仕組み
にはするつもりですが。
ちなみにWinnyでも回線速度によるノードの上下関係があり、上位のノードは下位のノードが
持つ検索用キーのほとんどを持っているそうです。だから下位ノードが検索するときは上位に
キー収集を依頼するだけでよく、同位もしくは下位には依頼しなくてよいそうで。
範囲攻撃については、動的オブジェクトをエリア単位でリスト化している群ノードがあるので
その部分での処理となります。上の話は全エリアを跨いでの検索なのでよしなに。
tellについては個人的には嫌な処理だなぁと思ったり。いかにもゲーム的で世界観を壊す
可能性がある機能なので(対となるアイテムを持たせるのならともかく)。
実装するなら各エリアに検索キーを飛ばすという回りくどい方法もありますが、実のところ
主鯖(認証鯖)には接続中のPCのIPを全部管理してるんで(でないと担当者が決めれない)、
いきなりそっちに処理を飛ばすというのがスマートだと思います。
0713名前は開発中のものです。
2006/02/27(月) 02:07:58ID:ZXuERcpu>これは認識が間違ってないか確認ですが、処理結果の多数決をとるために、同一の処理を
>複数の第三者が行うわけですから、複数の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/ILBhu0717名前は開発中のものです。
2006/02/27(月) 19:48:17ID:4zf3++To0718名前は開発中のものです。
2006/02/27(月) 19:51:09ID:3yojKXNa0719639 ◆WKezKkIa.w
2006/02/27(月) 21:14:29ID:+0f27gRv∧_∧ + >>695 自作ノ例ノアレ
(0゜・∀・) 公開マッテマスヨ
(0゜∪ ∪ + ワクワクテカテカ
と__)__) +
0720名前は開発中のものです。
2006/02/27(月) 21:23:32ID:4zf3++To0721名前は開発中のものです。
2006/02/28(火) 00:15:01ID:8ild+qgd0722名前は開発中のものです。
2006/02/28(火) 01:55:19ID:3jGlvlOE>動的オブジェクトをエリア単位でリスト化している群ノードがあるので
どういうこと?キャラクタとかのデータをCa達をもってるのわわかったけど、
さらにそいつらが持ってるコピーをまとめて持つノードがいるということ?
というかサーバ役を分散するというのは一クライアントごとにそのクライアントのPCを
一対一で担当するわけじゃなくて、座標というか空間ごとに担うような感じなんだろうか
>>713
バージョン番号をつけるのはいいけど、コピーをもってる全員のバージョンが
一致して完全に同期がとれるまで処理を停止するわけじゃなくて、
見切り発車するということなのかな?古いバージョンを持ってる人の処理は無効ということにして。
そうするとほとんどの時間帯でコピーをもってるノードは役に立たない(多数決に参加できない)
んじゃないかと思うんだけどどうでしょう?
戦闘なんかをした場合なんかを考えれば、一回の変化がすべての第三者へ伝播するよりも
圧倒的に速くに次のバージョンが現れてくると思うのですが、どうですか?
0723名前は開発中のものです。
2006/02/28(火) 02:04:38ID:AnpArEX50724416 ◆quHoSW/FCI
2006/02/28(火) 10:21:31ID:oTylGgKoああ、なるほど、「Winnyの動作のようなMMO」と「WinnyネットワークのようなMMO」という前提
の違いですね。たぶん722さんはWinnyでダウン条件を設置(処理依頼)し、検索リンクを経て転
送リンク(判定者)と接続し、ファイルを取得(結果を得る)というふうに解釈したのでは?
私がWinnyを参考にしているのはファイル取得の手順ではなく、ネットワークそのものの構造
なのです(ノードの上下多重関係、クラスタ化)。Winnyでは匿名性の維持のため検索データの
取得も不定的ですが、匿名性の必要性がなければもっと揺れの少ないネットワークになりま
す。たぶんWinny2でのBBS開発で目指していた内容は、スレッドの制作者の匿名性は破棄
することでより強固な(データにとって信頼のある)ネットワーク網を作ろうと思っていたのだと
想像します。
Winny2のBBSが最終的にどのような形になるのかは現状では知る由も無い(…って書くと
死んじゃった人みたいだな(苦笑))のですが、少し弄ればゲームのネットワーク網にも応用
できるものになっていたのではないかなと。
…という前置きを踏まえつつ 次へ
0725416 ◆quHoSW/FCI
2006/02/28(火) 10:36:58ID:oTylGgKo>どういうこと?キャラクタとかのデータを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ありゃ、やっぱり見つけられなかったか。
とりあえず
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なるほど。回線に高負荷をかけてまで、鯖処理を軽減させたがる理由が判った。
0728639 ◆WKezKkIa.w
2006/02/28(火) 21:52:49ID:elmcelxUHSPにおけるネットワークゲームの大先輩じゃぁありませんか
悲しいのは無人島さん107さん始め 皆さんの話している内容が
サッパリわからない事ですワハハorz
私の近況
ここのところ子供の夜泣きで寝不足です
年子なんでツライワー
夜泣きが終れば時間はどうにかつくれるのですが(といっても睡眠時間削るんですが)
今でさえ頭痛薬を常用してるヤヴァイ状態なので
しばらくは手をつけられそうにないですorz
0729名前は開発中のものです。
2006/03/01(水) 04:57:58ID:LeN+sImJサーバー役の人達が複数のコピーの同期を常に完全に保ちつつ全く同じ処理を並行してやっていく
のは現実的なスピードがだせないと思う
いっそのことさほど効果的でもない多数決システムは無しにして一人のサーバー役クライアントが処理を担当して
その他(ひとつで十分だと思うけど)はデータのミラーリングだけを並行してやっていて、
現処理担当が落ちたときにすぐに入れ替われるように待機しているというのはどうですか
地面の範囲で担当を決めるのはわかったけど、これエリアをPCが跨いだ瞬間には
どういう処理がおこなわれるんだろうか
サーバー役はさっきまで違うエリア担当が処理していたデータをどういう経路で手に入れるんだろうか
クライアントはどうやって今のエリアの担当サーバー役を知るんだろうか
0730名前は開発中のものです。
2006/03/01(水) 06:47:06ID:5JwMFDK/あんまし、クライアントの処理能力に期待しない方が良いと思うが。
正直、今頃そのCPUかよ。ってクライアントも平気で繋いで来るんで。
そいつ本人も劇重になって話しにならなくなるだろうし、
ぶら下がった奴もかわいそう。
処理能力見て振り分けるとすると、それだけで専用のサーバいりそうだし
もしも性能良いマシンの方が不利になるような状態になったりしたら、
誰もやらんのでは?
0731730
2006/03/01(水) 06:49:48ID:5JwMFDK/各クライアントに振り分けられる処理の重さは
同じになるように設計しておいて、そのうえで
その処理に足りない能力しかないマシンは
つなげないように、初めに足切りしておくか。
0732730
2006/03/01(水) 06:54:51ID:5JwMFDK/切るだけでもそのうち安定するかもしれないけど。
それまでラグを目立たないように調整するのが難しそうだな。
以上、独り言スマソ
0733416 ◆quHoSW/FCI
2006/03/01(水) 11:59:51ID:uuYEbgqz>私の近況
いや、それ、チラシの裏だから(w でもまぁ、仕事じゃないんだから無理はせず軽い乗りで。
チラシの裏といえば、『オンラインゲームプログラミング』という書籍を買いました。密林で良書
となってたので、なんか今更だなぁと思いつつ購入。じっさいのところ内容は今更でしたが。
プログラミングはできるけどネトゲーはつかみ所がなくて…という人には最適です。かなり
詳細に書いてあると思います。ただ、ゲーム内容はロビー+p2pの囲碁とか戦車ゲームとかの
類なのでMMO(MO)には手は届きません。ネトゲならではのテクというのも無かった気が。
#DNS鯖が逝ってるのか経路が腐ったのか板が見れたり見れなかったり。
#2重カキコになってたらsry
0734416 ◆quHoSW/FCI
2006/03/01(水) 12:13:41ID:uuYEbgqz>サーバー役の人達が複数のコピーの同期を常に完全に保ちつつ全く同じ処理を並行して
>やっていくのは現実的なスピードがだせないと思う
扱うデータの中には極力同時・同一性を計らなければならないもの(攻撃判定)と、それほど
神経質になる必要の無いもの(発言など)とにわかれます。また、行動にディレイを設けること
によって、必要とされる速度を緩和する手法も有ります。
けれどまぁ、回線の品位がある程度は保証され、チートの存在も無い状態で厳密なチェック
を繰り返すというのは、行過ぎた処理であるのも指摘のとおり確かです。判定役にプライマリティ
を設けて、普段は単一処理、必要に応じて複数でのチェック処理を行うというのはどうでしょうか。
ただ、送信手段にUDPを利用した場合は、ある程度の確率でパケットの損失が起こります。
通常、受信側で不足分の再送信を要求しますが、経路が複数ある場合、他方からの取得も
期待できるため該当回線からの再受信を待たずに処理に移れるという利点もあります。TCP
でもエラーによるリトライ遅延を軽減することも(Cbから異常により150ms、Ccからは正常に
50msだとCcを有効にして処理が可能とか)。
0735416 ◆quHoSW/FCI
2006/03/01(水) 12:23:29ID:uuYEbgqz>地面の範囲で担当を決めるのはわかったけど、これエリアをPCが跨いだ瞬間には
>どういう処理がおこなわれるんだろうか
これは普通のMMOと同じ処理になります。他のMMOも広大なフィールドを一定範囲で仕
切り、複数のサーバーで管理しています。プレイヤーは認知できませんが、境界線を跨ぐ
時は認証とデータの受け渡しが行われています。
#その辺りを利用したアイテムの複製チートは有名な手法。
>クライアントはどうやって今のエリアの担当サーバー役を知るんだろうか
エリアの担当者は周辺の隣接するエリアの担当者を知っていることになります。エリアの
担当者は主鯖もしくは隣接の担当者からこの情報を手に入れます。これはルーターの経由
処理と同じ仕組み。あ、ちと違うか。でも相手を探せるのはIPの仕組みだから、まぁ、よしと
すべし(ぉぃ。
0736416 ◆quHoSW/FCI
2006/03/01(水) 12:41:29ID:uuYEbgqz想定しているクライアントの処理能力の分岐点は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:XjUyel4Ittp://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テストデータを集めているのなら、どんな行動をしてほしいとか事前に言ってもらえると
助かりますですよ。
雑談としてラグ処理なんですが、FPSならともかくRPGに厳密な遅延対策が必要なのかなぁ
と思っていたりします。
FPSでの命中判定は、鯖とクライアントとの遅延時間を定期的に計測し、クライアントからの
データをその値から「何ms前に発行されたモノ」として一定時間のさかのぼり判定を行って
います。キャラクターの位置データは一定時間分バッファとして記録して、遅延分バックロー
ルして判定しなおすわけです。
一方RPGは表示が3Dで自由な位置に立つことができても、大抵の場合は一定範囲をマス
で区切ったグリッド単位で位置処理をしています。加えてRPG系でFPSのようなピクセル単位
での当り判定を行っているものはほぼ皆無なので、グリッド間の移動に掛かる時間のおよそ
半分の時間遅延ならば、とくに専用の処理を施さなくても特に問題は無いということに。
さらに大抵のタイトルは戦闘にターゲットシステムを用いているので、あまり深く考えずに
組むことができるともいう。
0741名前は開発中のものです。
2006/03/04(土) 15:33:29ID:Fs8bbryc嘘を書き込まないでほしい。
0742名前は開発中のものです。
2006/03/04(土) 15:45:07ID:ghpl6ht+0743911 ◆dUgCMabcts
2006/03/04(土) 17:16:39ID:JCn5l93n0744911 ◆dUgCMabcts
2006/03/04(土) 17:54:18ID:JCn5l93n0745107 ◆a6JcKaYOUI
2006/03/04(土) 19:37:31ID:RbJSojcz> テストデータを集めているのなら
あまり考えていなかったんだけどね
あえて言うなら通信ラグとかかな
0746911 ◆dUgCMabcts
2006/03/05(日) 02:05:21ID:QDHtmBT8>741
ラグ処理は種類によって違うみたいです。
昔遊んだS.I.Nとかは指摘処理で、CS2とかは両方タイプです。
詳しい名前とかは知らないです。
(昔)
クライアントだけの判定 ・・・ 遅延が起き難いが判定精度が個々に頼る。(メモリーチートが簡単)
サーバーだけの判定 ・・・ 遅延が起き易いが判定精度は確実。
(今)
両方(6:4ぐらい)の判定 ・・・ 近頃は性能上がったのでメモリー監視でこのタイプが多いらしい。
全てが嘘ではないと思いますが・・どのタイプか書いた方が良かったかもです。
0747107 ◆a6JcKaYOUI
2006/03/05(日) 15:01:54ID:ktK2ZYer→ウエイト変えてみますた
ということで鯖の負荷テスト実施中
一応24時間起動するつもりでつ
変更した鯖PCはたまにリセットがかかりますorz
落ちていたらスレで報告ヨロです
0748名前は開発中のものです。
2006/03/05(日) 15:18:49ID:UgR865cr0750名前は開発中のものです。
2006/03/05(日) 20:20:30ID:u25uAxXP0751107 ◆a6JcKaYOUI
2006/03/05(日) 20:50:02ID:ktK2ZYerついでに
”戦闘がつまらん”とか
”他のマップないのー”とか
言ってくれると助かります
0752名前は開発中のものです。
2006/03/05(日) 21:33:55ID:u25uAxXPさすがにそこまではもとめてないよ。
つまらんかどうかすら機能してないし、
ゲームになっていない以上マップ増やすつったって
背景素材の問題でしかないし。
0753107 ◆a6JcKaYOUI
2006/03/05(日) 21:40:09ID:ktK2ZYer0754名前は開発中のものです。
2006/03/05(日) 22:05:20ID:8IIddgmgいきなり、2マス先に進んだり
斜めに進んだりします
0755名前は開発中のものです。
2006/03/05(日) 22:09:05ID:E7slZqC80757911 ◆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:GWuTsgjj0760名前は開発中のものです。
2006/03/09(木) 15:55:44ID:gHnyFj85うまくいかない
ゲームのサーバー提供してくれる場所とかない?
0761名前は開発中のものです。
2006/03/09(木) 16:09:30ID:u4VYh69qでもきっと大企業向けだと思うよ。
個人でするなら自分でやるしかない。
0762名前は開発中のものです。
2006/03/09(木) 22:51:24ID:sxWZAi78MMORPGなんてつくれないと思うのですが
0763名前は開発中のものです。
2006/03/10(金) 08:34:01ID:eDyAepNd■ このスレッドは過去ログ倉庫に格納されています