/kamikaze (仮)

ADMIN
« 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31  »
#35/Server and Client2008.05.14
今日は位置ズレについて。


自分も最近になってPv等でちょくちょく使うようになったけど、既にGvで使ってる方も居るみたいですね。

システム上仕様と言わざるを得ないけど、故意にやると不利益等出てくるのでご利用は計画的に。





・位置ズレの仕組み。

まず最初に、ROではプレイヤーキャラクター(以下PC)の座標をサーバーとクライアントの二つによって管理されています。

サーバー側では今現在PCの存在する正確な座標、クライアント側では見た目上でのみの座標がそれぞれ管理されています。

このサーバー側の座標とクライアント側の座標が異なっている状態を、「位置ズレ」と言います。

よくMobの攻撃を受けた時等にマスの中にPCが綺麗に移動しない事がありますが、これは移動中に披ダメージモーションが割り込み、移動モーションが中断されて位置がズレている状態になります。

最近流行りの位置ズレアンクルは、罠の射程がクライアント上でのみ管理されている特性を利用し、故意に位置ズレ起こし離れた位置から罠を置くというものです。



・位置ズレの起こし方。

次に位置ズレの起こし方について。

位置ズレが起きる要因は色々ありますが、そのほとんどが他モーションの割り込みに寄るものです。多分。

つまり、とりあえず移動中にサーバー側の座標だけ止める事が出来れば、故意に位置ズレを起こす事が出来るという事になります。


その方法として最も簡単なのが、モーションディレイ中に別のモーションを割り込ませる、というものです。

これの有名な手順として、「応急手当→移動キャンセル→モーションディレイ中に応急手当」というものがあります。


これをサーバー側で見ると「応急手当→移動→応急手当」となり、すぐ隣で応急手当を使用した扱いになるため、座標は2回目の応急手当を使用した位置になります。

しかしクライアント側で見ると「応急手当→移動」となり、キャラクターは移動する際にクリックした位置まで滑っていきます。

これはモーションディレイがクライアント側で管理されているために起こる現象で、ディレイ中に応急手当を使用した扱いとなり、スキル使用のモーションが発生しない状態です。


要はスキルを使用した際のモーションを移動でキャンセルし、直ぐに再度使用すれば位置ズレを故意にズラす事が出来る、という事です。



・対策

相手の位置がズレている場合、近くに居るように見えても実際は離れた位置に居るため、自分の位置と相手のサーバー上の位置との距離がスキルの射程より大きければ当然スキルは発動しません。

そのような時に相手の位置を修正する手段は2つあります。


まず第1に、「ノックバックスキルの使用」。

ノックバックスキルを用いる事によって、相手の位置をサーバー上、クライアント上共に強制的に修正する事が出来ます。

しかしこの方法はノックバックのないシーズモードや、ストロングシールドを持った相手には使用できません。


第2に、「相手を攻撃するように左クリックする」。

相手を左クリックすることによって、自分から見たクライアント上の相手の位置のみ、相手のサーバー上の位置に修正されます。

この時修正されるのは自分のクライアント上の位置のみで、相手のPCや、第三者のPCから見た位置はズレたままの状態になります。

こちらはシーズモードでも使用可能で、尚且つ実際に攻撃する訳ではないので、石化や凍った相手を割ったり、LAを消すこともないです。



・その他

応用としてIWとの併用等がありますが、今さら感も強いので割合。

ちなみにIWはサーバーとクライアントの両管理なので、位置ズレしたPCのどちらをIWで埋めても身動きを封じる事が出来ます。





このくらいかなぁ。


斜線切ったりPCに重なる位置で止めたりすると結構楽しいです。

あと、対人で使うんだったら応急手当よりクローキングお勧め。


理系なんで読みにくかったらさーせん。
/ro | /comments(3) |  | 

/COMMENT

Posted by もこ。
位置ずれって他クライアントにも影響があるってのが不思議。
普通はサーバで処理された内容をクライアントで表示されるものなんだから、自PCで位置ずれしてもサーバ内の座標は正規の位置ってことは、他PCが他キャラの位置を把握するならサーバの情報を使うのが普通なような。
画面内の位置情報とかのパケットの流れって
自クライアント→サーバ→他クライアント
じゃなくて
自クライアント→サーバ+他クライアント
ってことなのかな?
画面外に出ればきちんと表示されるんだったら、定期的な画面リフレッシュ動作でもあればいいのに。

と真面目に考えてみた。ちぷ考察が結構面白かったりするから困る。(´・д・)
2008/05/17/02:09 | URL | EDIT | 
Posted by chipp_
もこさんここ見てたのか(

パケットに関しての知識はないけど、鯖キャン等の挙動から見るに多分自クライアント→サーバー→自クライアント+他クライアントなんじゃないかな。
同じパケットを受信して同じクライアントで処理するから、他PCでも位置ズレが生じてると妄想。

定期的ななんたらでキャラがテレポしまくってる様子が目に浮かんだ。
2008/05/18/02:55 | URL | EDIT | 
Posted by chipp_
ああ書いてる事一緒だったっていう。

要はクライアントがポンコツなんだよ!
2008/05/18/02:57 | URL | EDIT | 

/COMMENT POST

 管理人にのみ表示