忍者ブログ
  • 2017.09
  • 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
  • 2017.11
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2017/10/20 15:45 】 |
SGの秘密

さて、R化も近づく昨今、今更SGの秘密といわれてもなんのこっちゃと。

既に先人たちが検証に検証を重ねて秘密も何もないSGですが


なぜBoss属性は14HIT、もしくは15HITするのか

なぜSGは重複しないのか


解説されているページは見たことがありません。
せいぜい
「3HIT目の凍結判定をスキップする」
「SGを重ねるとオブジェクトはランダムで上書きされ、そのSG中は入れ替わることはない」

程度のものです。

14HITもしくは15HITするのはあくまで現象からの観察であって、SGの秘密が解かれたわけではないと思うのです。
(内部ソース見れる人は知ってるかもしれませんが)

そんなわけで前置きはここまで。

以下、特に疑問を感じていない人は見ても意味無いもの。


 

まず基礎知識。
分かっている人は読み飛ばし推奨

基本詠唱時間1500ms
効果時間4500ms
ディレイ5000ms

MATK倍率などは今回関係ないので割愛

以下Wiz wikiより

・指定したセルを中心とした9*9範囲に範囲3*3でHIT間隔450msの攻撃オブジェクト81個を4500ms発生させる。

・HIT数はHIT間隔に左右されるが、ラグ・Mobの挙動・Mobの凍結等にも影響され安定はしない。

・ダメージと凍結判定が一体化してる為、対水属性0%や対水属性が100%未満でMdefが高い等、ダメージが発生しないMobには全く効果が無い。凍結状態の敵には全く効果がない(SG中に凍結してもそれ以後効果無し)。

・「ストームガストによって与えられたダメージ」が3発になる毎に凍結判定が発生する。1回のSGで3HITした場合はもちろんのこと、「自分が撃った次のストームガスト」や「他人が撃ったストームガスト」も全て累積して数えるので、例えば誰かが2発だけ食らわせて逃げたmobにSGをすると、1HIT目でいきなり凍ったりする。

・BOSS属性Mobは3HIT毎の凍結判定時にHIT間隔の処理が飛ばされ(分かりやすく言うと凍結判定の代わりにダメージ判定が起きる)3HIT毎にほぼ同時に2HIT分のダメージが入り、最大 初回14HIT、2回目以降15HITする。(他の不凍な対象は通常通り)

SGのHIT数 マジスレ#269より
■1HIT □1HIT+凍結判定

通常mob 3HIT+凍結
■■□            

不死mob(凍結無効) 10HIT
■■□■■□■■□■ 

BOSS(凍結判定スキップ) 1発目14HIT 2発目以降15HIT
■■□  ■■□  ■■
   ■■□  ■■□   ←1発目

□  ■■□  ■■□ 
■■□  ■■□  ■■ ←2発目以降

 
他にもノックバックの仕様やら色々ありますが、そこも今回は触れないので割愛

以上、基礎知識でした。

上記現象を理解していれば十分と思う方は以下は不要


ではなぜBoss属性の時、ダブルHITをするのか。

ということで、ダメージ判定の処理を考えてみよう。
まず、

①他の人が打ったSGと重複しない(2PCからのSGでもHIT間隔は450ms、凍結判定は累積)
②ダメージ判定が1HIT毎に行われる
③HIT数はMobの挙動に影響される。
④オブジェクトは効果時間4500msの間ずっと出現している
⑤Mobにダメージが入るタイミングはMobがオブジェクトに触れた瞬間

①は冒頭にあった「SGを重ねるとオブジェクトはランダムで上書きされ、そのSG中は入れ替わることはない」
ということを簡略化しただけです。
上書きについては検証がすでに色んなページで行われているのでそちらを参照してください。
今回気にしなくてはいけない点は、上書きされた瞬間にダメージが発生しない(450msのHIT間隔)理由についてです。

③④⑤はちょっと分かりにくいが説明すると
SGオブジェクトにずっと隣接していれば450msのHIT間隔だが、SG外<->SG内という挙動で接触タイミングが450msを上回っているならオブジェクトに接触の瞬間にダメージ処理。
つまり逆の見方をすればオブジェクトに隣接していても450msはノーダメージ

そのことから

Ⅰ.ダメージの発生元はSGオブジェクトである。オブジェクトは連続でダメージを発生させようとしている。(※1)
Ⅱ.凍結判定と同様に、オブジェクトに隣接していてもダメージが発生しないSG無敵時間をMob毎に保持している。

Ⅱがあるために2人のWIZのSGは重ならず、オブジェクトが上書きされたとしても、450msのHIT間隔を保つ形になります。
2人が出したSGの各オブジェクトは(MATKなど術者依存情報はもつが)同条件であり、逆に言えば
1人で出したSGの81個のオブジェクトは2人が出したときと同様に、オブジェクト毎の関係(連携)は持たないと考えられHIT間隔、凍結の判定(3HIT判定)は各Mob側で情報を持っていると考えられます。
※オブジェクトが450ms毎に攻撃を発生させるのではなく、MobがSG1HITするごとに450msのSGに対しての無敵時間を持つという考え

さて、SGが重複しない理由としてMobがSGの無敵時間を持つと考えたとき、今度はBossが3HIT目にダブルヒットすると言う現象と矛盾があるように感じられます。

そこで、ある推測

Ⅲ.何かしらの条件で450ms経過以外に無敵時間をリセットするタイミングがある

この考えがでてきました。

上記Ⅰ、Ⅱ、Ⅲが正しければ現象は全て説明できます。

では、Ⅲが発生するであろうSGのダメージ判定の流れを考えてみましょう。
思いっきり憶測であり、VB脳なんでゲームプログラマーさんからしたら失笑かもしれませんがご容赦を。

--------------------------------------------------------------
オブジェクトとMobが接触したとき
1.SGオブジェクトがMobのダメージ処理を呼び出す(多重で呼び出される)(※1)

2.SG無効フラグがたっているかチェック。

  2.1.フラグがたっている場合は処理を抜ける。

  2.1.フラグがたっていない場合、SG無効フラグをONにする。

3.各Mob固有のMdefや属性によってダメージを計算し発生させる

  3.1.ダメージが発生しない場合、処理を抜ける。

4.凍結判定を行う。
 
  4.1.累積HITカウントが3回のとき
    4.1.1.凍結処理を行う
    
    4.1.2.累積HITカウントを0に戻す

  4.2.累積HITカウントが3未満のとき
    4.2.1.累積HITカウントをインクリメントする

--------------------------------------------------------------
SG無効フラグONになったときの処理
1.450ms間待機

2.SG無効フラグをOFFにする

--------------------------------------------------------------

えー、正直フラグのタイミングとかこれでいいのかと思いつつ(たぶんダメ)、とりあえず大筋はこの2種の処理が考えられるわけですが(※2)、一番原因が考えられるのが4.1の中身。
ここの凍結判定もMob毎に不死(不凍)だったりMdefがあったりするわけですから、もう少し処理が分岐します。

さて、無敵時間がリセットされそうな処理を考えて見ましょう。

①凍結によって、無敵時間はリセットされるか?

そもそもBoss属性は凍結しないじゃん、っていうのはおいておいて、凍結処理に入ったときにリセットされるなら、そこから処理漏れ、判定漏れがあるんじゃないかと考えたのですが、結論を言っちゃえばこれは「No」でした。
不死属性と他の属性を同時タイミングでSGにあてて、可能な限りはやく凍結を割ってダメージの入るタイミングを見ましたが450msは維持されているようでした。

そもそも考えてみたのですが、どんなケースであれ上記処理の中で無敵時間をリセットする処理を呼び出す意味はないですもんね。

これは困った。どうもⅢについて上手い説明できそうにもない。

ん~、Boss属性は種族関係なく不死でもHIT数は14~15になります。
と言うことは、まずBoss属性かの判定は他の種族より先に行われることになります。

②Boss属性の場合は3HIT毎に凍結判定がリセットされる

ⅢにBoss属性の場合ってつけただけでなぜリセットされるのかがさっぱりわかりません。

Bossは各状態異常耐性を持っているので、そこがヒントになりそうな。

耐性計算はMobの基本クラスで行うが、Boss属性の場合、耐性計算し効果時間を算出後に全状態をキャンセルする、つまり全状態異常の効果時間を0にもどしてる処理をいれてるとすればどうだろう。
で、凍結、スタン、暗闇などとどうよう、SG無敵時間と言うのも状態異常の一種の形だと考えると、つじつまが合わないだろうか。(PGやっていない人には理解しにくいかもしれないけど、1つの共有処理で本来その状況では関係のない状態(フラグ)なども一緒に戻すのはよくあること)

つまり、Boss属性が凍結の判定を行い・・・って書いててありえない気がしてきたぞ。

いや、近しいんだけど全状態異常の計算結果の効果時間を戻すって言うのが微妙。

さて、そこでいくつか検証したいことが
SG無敵時間と言う考え方をした場合

①教授のディスペルを行ったとき、SGはダブルHITするのか?
 →するならば一般Mobに対してもダブルHITするはず。

②Boss属性にSGHIT中、他の状態異常攻撃をした場合、SGはダブルHITするのか?
 →するなら上の推測は正しいだろうが、上述の通りありえないだろうな・・・。


さて、誰か検証つきあってください。 


注釈
※1:ダメージがないMobの場合、これ以前に判定が行われている可能性あり。過去にギグ(水属性のころ)にSGを当てると恐ろしいパケットが発生し回線によっては落ちるものがあった。それは現在火属性になったのとは別に、解決している(水属性Mobに対してSGをあてても重くならない)
※2:2種の処理、およびオブジェクトから呼び出される多重処理は別スレッドとする。

PR
【2010/03/27 05:05 】 | 未選択 | 有り難いご意見(0) | トラックバック(0)
<<今更な新無双崩し | ホーム | 4 5 0 0 m s と 5 0 0 0 m s + α の 逆 転>>
有り難いご意見
貴重なご意見の投稿














虎カムバック
トラックバックURL

<<前ページ | ホーム | 次ページ>>