2015年5月15日金曜日

EVE Online 94日目 AlignとWarpの謎

・今日のスキルキュー  Target Navigation Prediction Lv4
・資産(ISK):454Misk

・覚えたスキル
  • Shield Rigging Lv3
  • Armor Rigging Lv3
  • Capacitor Management Lv4
  • Heavy Missiles Lv3

きっかけはEFTをいじっていた時のこと。
ワープ速度のアイコンの上にマウスをホバーしたときに出るこれ。



アラインが5秒で、ワープアウトが 6秒 ってどういうこと?
というか、アラインが 5.9秒 でもワープアウトは同じく 6秒 じゃないか…。

ということで、なぜこうなるのか調べたら色々と面白なことが判明。


要約すると、


・実は ワープ、デクローク、ロックオンなどの操作は、サーバ側で1秒に1回の周期でまとめて処理している。

・例えばワープの場合だと、クライアント側の操作パケットがサーバに届いてから、最初の処理周期タイミング(tick 1)でアライン処理がはじまる。

・tick 1からアライン時間経過後にくる最初の処理タイミング(この場合 tick 1の6秒後 = tick 7)でワープアウトする。

・EFT上のAlign timeは小数点2桁目を四捨五入している(多分)。この Fit の Align time は実際には5.0x秒であると思われる。


というからくりらしい。

EFT上の Warpout timeは、サーバにワープコマンドパケットが届いた後の最初のtickから数えてサーバ上でワープアウト状態として扱われるまでの時間ということのようだ。


とにかく、Align time の小数点以下を切り上げた時間が Warpout time になるってことっすね…。



な、なるほどねー、と気を取り直してさらにでこの件に言及している色々なサイトを漁っていたら、
The Server Tick (or, “WTF, Why Didn’t My Point Turn On?!”)
というサイトを発見。

ここで、この仕組みの詳細な解説がされていたのだけど、

「Align time が 2.0s 未満の船をゲート前でタックルするのは事実上不可能」

という驚くべき結論がでていた。
が、サッパリ仕組みが理解できなかったので頑張って下の図を描いてみて何とか理解…できたはず。




状況としては、プレイヤーAがとある星系にジャンプインしたところプレイヤーBによるGCが行われていた、というケース。

順に追っていくと、


1. プレイヤーA がゲートを選択してワープボタンを押す。

2-1. プレイヤーAのクライアントがサーバへワープコマンドを送信する。
2-2. ワープコマンド受信後の最初のサーバ処理周期タイミング(tick 1)で、アライン開始処理が行われる。
2-3. 同時に、プレイヤーBに対してプレイヤーAがデクロークしアライン開始したことを通知する。

3-1. サーバとプレイヤーBとの通信遅延時間(t1)経過後にプレイヤーBのクライアント上のOVにプレイヤーAが表示される。
3-2. プレイヤーBがそれに反応してロックオンを開始する。このときOVに反応してロックオンコマンドを入力するまでの時間がt2。(通常は早くても 150ms~200msぐらいかかるらしい)
3-3. プレイヤーBのクライアントはサーバへロック開始コマンドを送信する。

4-1 プレイヤーBとサーバとの通信遅延時間(t3)経過後にサーバがロック開始コマンドを受信する。
4-2. サーバ上でロック開始コマンドを受信した瞬間からロックオン開始までのカウントダウンが行われる。
4-3. ロックオン時間(t4)経過後にカウントダウンは終了するが、この時点ではロックオン扱いとならない。

5-1. ロックカウントダウン終了後最初のサーバ処理周期タイミング(tick 3)でロックオン状態となる。
5-2. tick 3(=tick 1の2秒後) の時点で、アラインは完了しているのでプレーヤーAはワープアウトする。

6-1. サーバからプレーヤーBのクライアントに対して「プレーヤーAがワープ状態となったこと」「プレイヤーAをロックオンしたこと」を送信する。
6-2. サーバとプレイヤーBとの通信遅延時間後にプレイヤーBのクライアント上でAをロックオンした状態になる、と同時にAはワープアウトしたことが通知される。このとき、タックルモジュールを事前に起動しておいても既にAはワープ状態なのでタックルに失敗する。


という、もうどうにでもなーれ!なプロセスが行われる。

この状況だと t1, t2, t3, t4 の合計が 1000ms未満であるならば tick 2の時点でロックオンできて tick 3の時点でタックルに成功するのだが、現実問題としてこの条件を満たすのはほぼ不可能であるため「Align time が 2.0s 未満の船をゲート前でタックルするのは事実上無理」という結論になる模様。

ちなみに、センサーブースターやらリグ等を全力でガン積みしたALL5の Keres(Scan resolution = 2720.9mm) で一般的なシグネチャサイズのフリゲート(Signature = 35m) をロックオンするのに必要な時間が、約 814ms。
ロンドン在住でネットワーク遅延がほぼ0に近い状態でかつ、すばやく反応できればワンチャン…あるかなぁというレベル。 ちなみに、日本からのネットワーク遅延(t1+t3)は実測でおよそ400msなのでこの時点で絶対無理。




なお、Align time 2.0s 未満とするのは割りと簡単でALL5(というか、Evasive Maneuvering と Spaceship Command の2つ)で、Low を全部 Nanofiber Internal Structure IIで埋めてLow Friction Nozzle Joints II を刺しまくると以下の艦船が達成できる。


TypeShipAlign timeEHPSpeedLow
ShuttleShuttle1.50.796250
FrigateDaredevil1.532.176184
FrigateAstero1.622.435004
FrigateAtron1.721.336563
FrigateDramiel1.722.297193
FrigateFederation Navy Comet1.762.496024
FrigateSlasher1.81.326372
FrigateExecutioner1.811.376403
FrigateGarmur1.842.476483
FrigateIncursus1.881.665454
FrigateCondor1.891.295932
InterceptorAres1.91.556824
FrigateTristan1.921.735083
FrigateImperial Navy Slicer1.922.355675
FrigateTormentor1.941.65374
InterceptorCrusader1.951.677304
FrigateSuccubus1.972.345313
FrigateRifter1.991.715703


若干の signature増加に目をつぶって Inertial Stabillizers II とかを装備したり(というかこの用途だとこちらが普通らしい)、インプラント(nomadシリーズ、CAシリーズ、EM-70X)を刺す、Skirmish link を貰うとかで上記以外の艦船でも実現可能。Gnosisでもギリギリ達成できるらしい。

実際の運用では、スマボとかバブルとかを考慮して Interceptor にシールドエクステンダーとか積むんだとか。 LowならFGでも充分だなぁという感じ。


このあたりに 1.0s未満の絶対つかまらないマンとかのFitが乗っていたりして大変参考になりました。


というか、これ結構メジャーな話なんですかね…。

0 件のコメント:

コメントを投稿