Pages

Download LogRep2.0

2013/07/17

DoTについて(覚書)

一度成功するとその後数秒から数分に渡ってダメージを与え続けるスキル。Damage on Time。FFXIではスリップダメージと呼ばれ、毒や出血の表現として用いられてきた。
DQやFFを始めとした国産の有名RPGで毒が軒並みショボい効果しかなかったせいか、この手の技自体日本国内では「弱い」というイメージが強いが、本来DoTは非常に強力。
(例えば旧UOの毒は最大HPに対する割合で減少したのでHP量に関わらずどのような生物も一定時間で死んでいた。またEQやGW等のDoTは複数かかるため、大量にかかると立て直し不能になって死ぬ)。
最大の特徴は「かけてしまえば術者が時間的にフリー」だという点。他の特徴はゲームによるが、防御力によってダメージを低減できない(頑丈な鎧等着込んでも無意味)、効果終了までに治療できなければ総合ダメージは通常攻撃スキル以上、といったような物が主流。


完璧とはいかないまでも8~9割は再現できそう:)
以下、実装までの覚書。



効果時間÷3回ダメージが発生
    ※将来的にこの前提が変わることを配慮しておく

DoTダメージ量は着弾ダメージと、スキル説明により算出
    着弾ダメージ ÷ 着弾威力 × DoT威力

特殊な着弾ダメージを意識すること
    ⇒着弾クリティカルは1.5で割る
    ⇒サンダー系の特殊着弾は、他のケースの通常着弾ダメージに置き換えて計算
        ※特殊ダメージしかない場合はログからのダメージ計測は不可能
        ※かなり面倒:(

クルセード等威力を増幅させるアビは気にする必要がない
    ⇒着弾ダメージも強化されているので、上記計算式で自動的に増幅が反映される

DoTのクリティカル
    ⇒ログからクリティカル率を計測することは不可能
    ⇒着弾ダメージのクリティカル率を適用するか、ないものとする
        DoT × クリティカル率 ÷ 2

DoTの上書き
    同プレイヤーによる同スキルは効果時間が上書きされる
        ⇒直前までのDoTダメージは途中で終了
        ⇒これのお陰で効果時間中のログを全部監視する必要あり(面倒)
    別プレイヤー/別スキルの場合は個別にカウントされる
        ⇒将来的に個別がグループ別になる場合も考慮しておくこと

途中で敵が死亡した時
    止めるべきだが、現状のログは「~を倒した。」が出ない場合が多い
    さらに別の同名の敵の「~を倒した。」でDoTが消える問題もある
        ⇒途中終了させずオーバーキル値があってもそのまま算出しておく方が無難

DoTの発生するスキル
    サークル・オブ・ドゥーム
    秘孔拳
    破砕拳
    フラクチャー
    二段突き
    桜華狂咲
    ベノムバイト
    ウィンドバイト
    エアロ
    エアロラ
    サンダー
    サンダラ
    サンダガ

    敵の固有DoTについてはデータがないため集計の対象外

顔がクシャっとなる点
    現状敵が防御パラメータを持っていないのはそのまま続くか?
        お陰で算出が容易だが、β4以降DoT/着弾ダメージの比例を壊すパラメータが
        追加されると困った事に…


    召喚のDoTルールが現在のDoTとは全く異なった場合の対応
        そうならないことを祈りたいがDoT専門職ということで果たして…?


LogRep実装について
    速度の劣化がなるべくない方法を選ぶこと
    数%のデータ再現性で大幅なコストや矛盾が生じるなら実装見送りを視野に



何かご意見、「間違ってるよ!」などありましたら、なんなりとー。
(現時点で、DoTに興味ある人はあまりいないかもしれませんが…)



22 件のコメント:

  1. DoTダメージ量は着弾ダメージと、スキル説明により算出
    ですが捨身や猛者のようなダメージがアップするバフ中に使っても着弾ダメージは効果を受けるがdotダメージは受けないというのも考慮する必要がありますね
    デフェンダー忠義の盾のようなダメージダウンするスキルの影響も同じように受けないようです
    あとこれは調べていないのですがバーサクのような特殊なスキル(結構間違ってる人が多いのですがバーサクは猛者や捨身のようなダメージ○○%アップではなく攻撃力が50%アップ)の影響がどうなるかも調べないといけないですね

    返信削除
    返信
    1. 山田さん

      早速コメントありがとうございます:D

      >捨身や猛者のようなダメージがアップするバフ中に使っても着弾ダメージは効果を受けるがdotダメージは受けない
      えー、やっぱあるのか。厳しいな(笑)
      防御サイドまで考慮はしないかも。とりあえずPvEで、ある程度正しい結果を出すことを目指します。

      削除
  2. DOT対応目指してるんですね、応援してます♪
    もし落ち着いて、もし気が向いたら、もし可能な事なら、AA(オートアタック)のDPS合計とかでると嬉しいな、なんて(笑)

    返信削除
    返信
    1. MiuPanchiさん

      DoTはまぁ、色々ありますがなんとかしてみます;)
      AAのDPS合計ですが、個別の項目の合計については、人によって見たいものが変わってしまうためちょっと簡単には実装しづらいなーと。
      代わりに、こんなやり方はいかがですか?

      1.攻撃解析で、適当なイベントをAnalyseする
      2.Skill欄で「攻撃」をダブルクリックする
        これで全て攻撃(AA)のデータになります
      3.右クリック>表をCSV保存、でファイルに保存
      4.エクセル等で必要な場所のDPS合計を出してみる

      削除
    2. あ、一つ言い忘れていましたが、分析画面右下の「All/Total」をAllにすると、各技の詳細合計が出てきます。

      削除
    3. おー、既に方法はあったんですね。来月色々試したいと思います、お返事ありがとうございました!

      削除
  3. DoTとは関係のない話ですが、現logrepの命中率・クリティカル率・ミス率を綺麗な形にできないものでしょうか?
    今は命中+クリティカル=100%でミスは拾えてない?または表示がドッヂになっててミスと分けられてしまっている?になっているので
    例えば実命中100%なのにクリ20%あると命中80%,クリ20%になってるなど命中率が低いのかと錯覚してしまいます。

    返信削除
    返信
    1. 具体的に言うと、

        命中80 クリティカル20

      と書かれているのを

        命中100 クリティカル20

      にした方が直感的、というご意見でしょうか?
      そのようにすることは可能ですので、ご返答いただければと思います。

      あ、あと匿名は寂しいので、名前を頂けると嬉しいです:)

      削除
    2. >>codescreamさん
      その通りです!言葉足らずに申し訳ない

      あとミスの中身はどうなっているのでしょうか?
      毎回ミスが0%しか出なくてフィルタを失敗しているのかといじってみてはいるんですが、ドッジで避けられているにも関わらずミスはいつでも0%のままになってしまいます。

      削除
    3. ああいえ! 私の名前は書いていただかなくても(笑)
      私は貴重なご意見をくださるあなたのお名前(ニックネームなど)を頂けると嬉しいなーと思ったわけでして。
      「匿名」だと、どうしてもなんか対話感が薄くて寂しいんですよね。
      (「通りすがり」とかもそうですよね。言い逃げみたいな(笑))
      今後書いていただく機会がありましたら、是非よろしくお願いします:D

      「命中」は今後のVerでそのようにいたしますね。
      あと、DOGDEについては今手元に適当なログがないので確認できないのですが、仮にログの方にそれが出力されていなかった場合、LogRepでは集計の取りようがなかったりします;
      (これはどんな高性能なログパーサーでも同様です)
      もし、ログとして出ているのに集計表に出ていないようであれば不具合の可能性があります。
      ログの方にDODGEは出力されていますでしょうか? ご確認いただければ幸いです。

      削除
    4. 攻撃ログと防御ログの状態異常の3つにログを分けて各々onにしてたと思うのでログ逃がしはないと思うんですが、手元にデータが残っていなく今は調べられないのでβ4の時もう一度同じようにしてはかってみます。

      命中の表示修正はありがとうございます。
      最初命中率が低くて命中装備ガチガチにしていていくらあげても命中率が上がらなくておかしいなと自分のミスに気付かなかったので…w

      削除
    5. プログラムを調査していたのですが、ちょっと「ミス」周りで誤認しそうなログ属性が確認できたので、なんとかしてみようと思います(実は結構イタイ内容変更ですが…;))。
      それで少しはマシになるのではないかと思います。

      削除
  4. DOTの実装をされているとは、頭が下がります。
    正確さを追求するとログだけでは限界がありますね。
    同名の複数モブとの戦闘は、どうにもならない領域ではないでしょうか。
    DOTダメージをカウントするのは面白そうなので、私もやってみようかな。

    返信削除
    返信
    1. ちょこさん

      おーチャレンジしますか! 意見交換とか出来るといいですね:)
      とりあえず着弾のみにかかるダメージ増幅アビ、着弾とDoT双方にかかる増幅アビ、その重ねがけとかで結構禿げそうな勢いです;D

      効果アップログとかは取ってなかったので、β4を待とうかなーと思っています。

      削除
    2. DOTについては総量でこれくらいかなー程度に抑えようかと。
      まずは魔法と効果の一覧をながめてみることにします。

      ログファイルを集める必要はありますよね。
      アプリにログファイルをアップロードさせる機能をつけるのもありなのかなーと思ったり。
      もちろん、同意するのチェックボックス付きでですが。

      削除
    3. Log Repは「猛者の撃」の効果。
      Log Repは「クルセード」の効果。
      Log Repは「サンダー効果アップ」の効果。
      Log Repの「サンダガ」
      ⇒ Enemyに593のダメージ。

      *猛者の撃は着弾を1.2倍にする
      *クルセードは着弾、DoT共に増加する(増加量はINT依存)
      *サンダー効果アップは、着弾時にDoT分のダメージも加算

      で、593のダメージが出た時にDoTのダメージがいくらになるか…といったパターンとかが結構面倒ですねー。
      パッシブのせいでジョブとレベルも推定できないと総量が測れなかったり…速度の兼ね合いもあるんでレベル検査まではしない予定ですが、なかなかくせ者が多いです。

      「STRやINT1に対してDoTはいくつ」といった単純な比例式で成立するなら、ざっくりとLv50はSTR100、INT100とか決め打ちを作って概算を出すのがおそらく一番楽。
      かなりの誤差は出るものの、ないよりは全然有用ですから…ただし、今後敵によって耐性持ったのが出てきたりするとアウトですが。

      「ユーザーに情報を補完してもらう」ことで正確さは上がりますが、そうすると本当に一部の人しか使わないものになりますしねー。

      ログファイルか。私は友人や、知り合いの何人かに頼んでログを頂いたりしていますが、アプリ使用者の中から、協力してもいいよ! という方のログをいただけると作業がはかどりそうですね:)

      削除
    4. うへぇ。面倒の一言ですねこれw
      >DoTダメージ量は着弾ダメージと、スキル説明により算出
      > 着弾ダメージ ÷ 着弾威力 × DoT威力
      の部分の着弾威力というのは、BUFFによるボーナスのことですか?

      例えば着弾で「ENEMYに120ダメージ」と表示された場合、
      着弾のボーナスが+20%とすると、基ダメージは100
      DOT威力が0.3であれば、100*0.3 = 30ダメージ/3秒
      さらにDOTのボーナスが20%であれば、30×1.2=36ダメージ/3秒
      という理解でOKですかね。

      削除
    5. 大体そんな感じですねー。例えばサンダガですと、

      対象に雷属性魔法攻撃。威力:60 追加効果:対象に雷属性の継続ダメージを付与する 威力:40 効果時間:18秒

      「威力:60」が着弾威力、「威力:40」がDoT威力です。
      (便宜上、私がそう命名しています)

      > Log Repは「猛者の撃」の効果。
      > Log Repは「クルセード」の効果。
      > Log Repは「サンダー効果アップ」の効果。
      > Log Repの「サンダガ」
      > ⇒ Enemyに593のダメージ。
      このログの例でいくと、着弾ダメージとDoTダメージを出すには

      593 * 60 / (60 * 1.2 + 40 * 6) = 114.0384...(バフなし着弾ダメージ)
      593 * 40 / (60 * 1.2 + 40 * 6) = 76.0256...(DoTダメージ)

      掛け算を先にしているのはプログラマの性(笑)
      クルセードは両方にかかるので計算式では考慮せず。クルセードない場合はおそらく

      > ⇒ Enemyに303のダメージ。

      とか表示されるので、それぞれ

      303 * 60 / (60 * 1.2 + 40 * 6) = 58.2692...(バフなし着弾ダメージ)
      303 * 40 / (60 * 1.2 + 40 * 6) = 38.8461...(DoTダメージ)

      といった感じになるかと思います。多分ね!
      是非私と一緒にDoTの魔の手に絡め取られつつ、間違いがあったら教えてください;)

      削除
  5. 今更な感じもしますが
    DoTのダメージ判定時のステータスが計算に使用されるみたいで、

    1.エアロ
    2.エアロ(DoT)
    3.クルセードスタンス(on)
    4.エアロ(DoT)
    5.クルセードスタンス(off)
    6.エアロ(DoT)

    とダメージが入る場合、
    1のエアロそのものと2と6のDoTにはクルセードは乗らない。
    4はクルセードの効果が乗る。
    という状態になります。

    ※クルセードの効果のダメージアップはDoTには乗らず、ステータスアップだけが影響がある。

    返信削除
    返信
    1. 情報ありがとうございますー。

      ステアップだけ乗りますか。
      攻撃力+50%のバーサクとかもそういう扱いなんですかね?
      忠義の盾とかディフェンダーも気になる所。

      まぁ、正直なところルールがわかればわかるほど、それを100%反映させたDoT計算は作る気が失せますねー(笑)
      速度的な問題もそうですが、モチベがなぁ;P

      と、いうわけでモチベが消えないレベルで実装を頑張りたいと思います^^ゞ

      削除
    2. クルセしか自分で検証してないですが、他の方の検証を見てる限りだと
      猛者や捨て身のようなダメージアップと
      忠義の盾やディフェンダーのようなダメージダウンは
      どちらもDoTのダメージに影響ないみたいです。

      「FF14 DoT ヘイト」で検索していただければ検証された方のblogが出てきます。

      近似値として注釈つける感じにしないと実装厳しそうですが頑張ってください。

      削除
    3. なるほどなるほど、猛者・捨身は伺っていたのですが、ダウン系も同じなんですね。
      なんにせよ、今後スキルにどんな変更があっても対応できるようにしておかないとな…と考えられる限りの手を尽くしています。まだβ3ですしね(笑)

      「記録は割と曖昧なものだ」と言う一文は、どっかしらにちょこっと追加しておこうと思います。

      削除

コメントは現在こちらでは返信していません。
返信が必要な場合、新しいサイトをご利用ください。

http://xivparser.blogspot.jp/

注: コメントを投稿できるのは、このブログのメンバーだけです。