Sukesan's Diary

Perl|CML|Ruby on Rails|coffee-scriptとかのこと

agrarian開発日誌 #1 ダメージ計算について

   

今日から、開発日誌をちょっとずつ書いていきたいと思う。

今後に備えて、ダメージ計算についての検討を始めた。

種々のステータスからダメージを算出する方法を考えていきたい。
例えば、スキル攻撃や、通常攻撃についても同様に扱えるようにしたいと考えている。

現状の計算の順序は以下のようにしようかと思っている

1. 命中するかどうか
2. 基礎ダメージの計算
3. 基礎ダメージに対するダメージ補正
4. 属性と耐性による補正
5. クリティカル判定
6. クリティカルダメージの計算
(7. 状態異常発動チェック)
8. 最終ダメージに対するダメージ軽減効果補正

これらを攻撃側のステータスと防御側のステータスから計算するようにする

攻撃が命中するかどうかについて調べたところ
私が最も参考にしているDiablo2に関しては、
Chance To Hit = 200% * {AR / (AR DR)} * {Alvl / (Alvl Dlvl)}
AR:攻撃側のAttack Rating
DR: 防御側のDefense Rating
Alvl: 攻撃側のレベル
Dlvl: 防御側のレベル
になっているらしい。
上限を設けて、ある一定以上は回避できないようにしておかないと避けゲーになってしまうので避けたい。

ダメージの計算については
Diablo2では
Final_Min_Damage = Weapon_Min_Damage * (Str + 100) / 100
Minimum Damage = (Weapon Minimum Damage + (+x To Minimum Damage)) * (1 + StatsBonus + (+x% Enhanced Damage) / 100) * Modifier
となっている。
つまり、ディフェンスは関係なし。
現状では、ディフェンスに応じて実際与えられるダメージが増減するようになっているが、変更するイメージ。
現状の問題点として、ディフェンスを上げると完全に攻撃を無効化(ダメージ1になる)できるという問題があるがそれを解消できるのではないか。
そういう変更を加える問題点としては、めちゃくちゃ硬い敵を作れない。

属性補正について
Diablo2に関しては、Cold-ResistanceのXX%等がある。
これに応じて、その属性のXX%分ダメージが軽減されるという仕様の模様。
変愚蛮怒では、一つ耐性があるとその属性からのダメージを1/3にできる。さらにその状態で2重耐性をつけると1/9にできるといった仕様の様子。
属性の数が多くなった場合は、変愚蛮怒パターンが有効だが、そこまで属性が多くないのであれば、Diablo2パターンが良いのではないかと思う。
複雑性がますので、属性を増やさずに、Diablo2パターンが良いのではないかと思う。

クリティカル判定とクリティカルダメージ
クリティカル判定は、相手に依存せずに、こちらがわのクリティカルRateで単純判定で良さそう。
クリティカルダメージも同様

最終ダメージに対するダメージ軽減
防具等にダメージ軽減効果が付いている場合、この最終ダメージに対して
リアルダメージの軽減を入れる。

ステータスをここらで一回整理しておきたい。
WeaponDamage: 武器が持つダメージ。ダイスにする?(仮)
Strength: 力。物理攻撃力、ダメージに影響する。
Dexterity: 素早さ。物理命中率、物理回避率に影響する。
Vitality: 命。HPに影響する。
Energy: 魔法攻撃力、魔法防御力に影響する(仮)
HP: ヒットポイント。
AttackRating: 命中率に影響する。Dexterityから計算される。装備によって変化する。
DefenseRating: 回避率に影響する。Dexterityから計算される。装備によって変化する。装備自体が持ちうる。
CriticalChance: クリティカル発生率。
CriticalDamage: クリティカル時のダメージ倍率(%)

ゲームは

http://agrarian.jp

放送は

http://com.nicovideo.jp/community/co2141769

 - agrarian, rails, ruby, ゲーム, プログラミング

ad

ad

Message

  関連記事

no image
Javaプログラミングを始める

内定先の社員さんからアドバイスをもらい ①手を動かして実際にプログラムを組んでみ …

no image
【Unity】NGUIで、テーブルビューを作る。

NGUIが結構大きく変更が加わったみたいで、ネット上に落ちてるチュートリアル見て …

no image
amazon-ecsでamazonの検索結果を簡単にとれた

偶発性を楽しむブログと勝手に名付けて自動ポストで自分の面白いと思う投稿が自動的に …

no image
[cocos2d-x]CCTableViewをモーダルで表示したときにスクロールしなくなる問題の修正方法

CCTableViewをモーダルで、下のレイヤーにAddChildして表示させる …

no image
Nokogiriでrssのパースをしていていろいろはまったこと。

Nokogiriで全文パース出来なかった件 CentOS 5.5にNokogir …

no image
nginxでphpを動かすときにPrimary ほげほげではまった。

“Primary script unknown” whi …

no image
agrarian開発日誌 #2 AWSから500$の請求が来る。

どうも。 今日は朝メールを見ていたら、AWSから500$の請求が来ていた話をしま …

no image
WordTwitがTwitter API ver1.0終了の影響で動かなくなった

今日になってから Tweet failedとなって、retry tweetしても …

no image
XCode5にアップデートして、simulatorが大きくなったのを元に戻す方法

XCodeをバージョンアップしたら、今までみたいなコンパクトなsimulator …

no image
株とお金儲けと時々スクレイピングの話

今年は一つ株でも始めてみようかと思っている。 せっかくなので、まー株の勉強とプロ …