キャラクター

キャラクター

Seba Stes

Mandragora [Meteor]

このキャラクターとの関係はありません。

フォロー申請

このキャラクターをフォローしますか?

  • 0

なぜ詠唱中に敵の向きを追いかけて向く仕様になったのに、視線切りが発生してしまうのか!その2

公開
前回の続きです。

さて、本題に戻して、詠唱の視線切りが発生してしまう理由を書きます。
※個人の独断と偏見、および冗長な説明を避けるため、細かい前提はカットしてかいてます

そもそも、視線切りとはスキル詠唱完了時に対象(MOB等)が自分の向きにいない場合にスキルの発生がキャンセルされる現象です。
(自分の向きとは、自分のむいている方向から一定の角度(30度くらい?)、この範囲を視線といいますね)
詠唱開始時には基本的に対象を向くのですが、対象が詠唱完了時までに視線から出てしまうとおこります。


上図ですと、
①の時に詠唱開始で敵を向くけど、
②の詠唱完了までに敵がうごいちゃって、視線から出てしまうので詠唱キャンセル
これが、視線切りです。

ところがどっこい、どっかのアップデートで、詠唱中にも移動している対象を追いかけて向きを変える。
というような仕様に変更されました。

これだけ見ると、視線切りなど起きようがないと思います。
詠唱完了まで敵を向き続けてくれるのだから。

さらにところがどっこい、現状ではそれでも視線切りは発生します。
なぜだヨシダ!

ここで前回の記事を思い出しましょう。
画面上に見えている(クライアント上の)キャラの動きと、実際(サーバ上)の動き(位置も)に時間差があるからです。
画面上でどんなにキャラがスムーズに向きを変えていても、実際にはサーバ上では一定の間隔でしか向きを変えてないので、カクカクカクと向きを変えています。
敵の動きももちろんそうで、この「一定の間隔」というのがネットゲームやっかいなところです。

実際にはどんなことがクライアントとサーバで行われているか考えてみます。


上図(わかりやすいように極端な距離で書いています)のように、敵が左から右に移動し続けている状態で、詠唱している状態だとします。

画面上、すなわちクライアント上には①の状態が表示されているとき、サーバでは何がおきているでしょうか。

まず、敵の動きですが、敵が動いた場合にどのような処理になるかというと、

※C:クライアント S:サーバ

S:敵が動く
 ↓
C:動いた情報を受け取り、画面上に表示

ここで、「↓」が発生しているため、サーバ上の動きをクライアントの表示が後追いする形になります。
もっと書くと、

S:敵が動く
 ↓
C:動いた情報を受け取り、画面上に表示と同時に、S:敵はもっと先に動く

つまり、画面上の敵は残像みたいなもんです。
そして、その残像を追いかけて、①の向きを向くわけです。
①の向きを向いた時点で、敵は実際(サーバ上)には、すでに①+の位置にいるわけです。
上図、極端な例として書きましたが、この時点で詠唱完了してしまうと、見事に視線から外れているわけです。
「敵が視線にいないよ」、とサーバ上で判定され、詠唱はあえなくキャンセルになるというわけです。

さらに、過去のことも鑑みてみましょう。

先ほどと同様に、クライアント上には①の状態が表示されているときどうなるかというと、

C:敵の方向を向く
 ↓
S:敵の方向を向いたという情報を受け取り、サーバ上でのキャラクターの向きを変える

やっぱり、「↓」が発生しているため、向いている向きがサーバ上に反映されるまでに間隔が発生するわけです。
自動で追尾するため、自分で操作しているわけではないですが、瞬時(ぬるぬる)で追尾して向きを変えているということは、クライアント上で処理されているっぽい、そして、前記事でも書きましたが、自分の動きはサーバよりも先に表示されているわけです。
つまり、なにが言いたいかというと、画面上で①の向きを向いている時には、サーバ上ではまだ①-の向きを向いている、ということです。


実際(サーバ上)の視線は、①の方ですらなく。
赤い、①-の方。

ですので、上図で①の向きはフェイクで、実際のサーバ上では、キャラクターは①-の向き、敵の位置は①+の位置ということになります。
この時点で詠唱完了!となると、サーバ上では「敵が視線にいないよ」と判定され、詠唱キャンセルとなるわけです。

サーバ上が実際の時間だと考えると、クライアント上の敵の位置は過去のもの。自分の位置(向き)は未来のもの、となるわけで。
この差が視線の範囲外に出た場合、キャンセルとなるようです。
もちろん、この二重の差が小さい場合(敵の動きが遅い、敵の移動する位置が遠い、即ち、一定時間にキャラクターが追尾して向き直る角度が小さい)は、ちゃんと詠唱完了でスキル発動します。

最悪、敵が高速で自分の真上をまたぐ場合なんて、180度近く向き直るわけですからね。

我ながら説明下手だと思いましたが、クライアント上の表示は、
敵の動きは過去
自分の動きは未来
が表示されている。ということだけ理解すればなんとなくわかるかなぁと思います。

さて、ここで開発・ヨシダを問い詰めたいのは、「敵が視線にいないよ」という判定を残した点です。
ぶっちゃけ、自動追尾で向き変えるようにした時点(近接のAAもどこ向いてても発生するようにした時点)で、「敵が視線にいないよ」という判定が削除されると思っていました。
ぶっちゃけ、どこ向いてても詠唱スキルが発動するようにすればよかったんです。
実際は自動追尾で向き変えるので、あんまり不自然なキャラクターの動きにならないと思いますし。

何かこの判定を残した理由でもあるのでしょうか・・・・
・それも難易度のうち!→ センスないなやめてよ
・こういう現象を認識してない!→ (´・ω・`)
・削除しちゃうと、私の知らないような不具合がおこる→ ありそう
どれだろう。

こういうの、フォーラムってのにかくのがいいのかな。
怖いからやめとこう。

なお、似たような現象で、近接のINSTANTスキルでも、一瞬スキルが発生したように見せかけて、敵が遠くに高速で移動して範囲外に飛び出て、スキルキャンセル、という場合もありますよね。
近くを高速で移動する敵に、スキル連打してぶちこもうとするも、ピクピピクピク動くだけでスキルでないあれです。
あれも、同じような原理で発生します。こっちは、視線(角度)でなく距離の問題かな。

いろいろ、前提をはしょってますが、ざっくりとはこんな感じだと思われますな記事でした。
コメント(0)
コメント投稿

コミュニティウォール

最新アクティビティ

表示する内容を絞り込むことができます。
※ランキング更新通知は全ワールド共通です。
※PvPチーム結成通知は全言語共通です。
※フリーカンパニー結成通知は全言語共通です。

表示種別
データセンター / ホームワールド
使用言語
表示件数