私は古典的な2d RPGを開発しています(ファイナルファンタジーと同じような流れで)、誰かにダメージの式/リソース/例へのリンクを行う方法についてアドバイスがあればと思っていましたか?現在の設定について説明します。この質問でやりすぎないことを願っています。質問が大きすぎる/広すぎる場合は謝罪します
私のキャラクターの統計は以下で構成されています:
enum Stat
{
HP = 0,
MP = 1,
SP = 2,
Strength = 3,
Vitality = 4,
Magic = 5,
Spirit = 6,
Skill = 7,
Speed = 8, //Speed/Agility are the same thing
Agility = 8,
Evasion = 9,
MgEvasion = 10,
Accuracy = 11,
Luck = 12,
};
活力は基本的に物理的な攻撃に対する防御であり、精神は魔法による攻撃に対する防御です。
すべての統計の最大値は固定です(HPの場合は9999、MP / SPの場合は999、残りの場合は255)。能力の場合、能力+装備品などの前/後の典型的な値(レベル100)で最大値(HPの場合は99999、HP / SPの場合は9999、残りの場合は999)を増やすことができます。 SP / MPの場合は2000、その他の統計の場合は180/350
後半のゲームの敵HPは通常、数百万人未満になります(スーパーボスの最大数は1,200万人)。
私は、人々が実際に正しくスケーリングする適切なダメージフォーミュラを実際にどのように開発するのだろうと思っていましたか?たとえば、このデータに基づいて、ファイナルファンタジーXの損傷式をベースとして使用すると、非常に有望に見えました。完全なリファレンスはこちらhttp://www.gamefaqs.com/ps2/197344-final-fantasy-x/faqs/31381ですが、簡単な例として:Str = 127、「攻撃」コマンドを使用、敵の防御= 34。
1. Physical Damage Calculation:
Step 1 ------------------------------------- [{(Stat^3 ÷ 32) + 32} x DmCon ÷16]
Step 2 ---------------------------------------- [{(127^3 ÷ 32) + 32} x 16 ÷ 16]
Step 3 -------------------------------------- [{(2048383 ÷ 32) + 32} x 16 ÷ 16]
Step 4 --------------------------------------------------- [{(64011) + 32} x 1]
Step 5 -------------------------------------------------------- [{(64043 x 1)}]
Step 6 ---------------------------------------------------- Base Damage = 64043
Step 7 ----------------------------------------- [{(Def - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------ [{(34 - 280.4)^2} ÷ 110] + 16
Step 9 ------------------------------------------------- [(-246)^2) ÷ 110] + 16
Step 10 ---------------------------------------------------- [60516 ÷ 110] + 16
Step 11 ------------------------------------------------------------ [550] + 16
Step 12 ---------------------------------------------------------- DefNum = 566
Step 13 ---------------------------------------------- [BaseDmg * DefNum ÷ 730]
Step 14 --------------------------------------------------- [64043 * 566 ÷ 730]
Step 15 ------------------------------------------------------ [36248338 ÷ 730]
Step 16 ------------------------------------------------- Base Damage 2 = 49655
Step 17 ------------ Base Damage 2 * {730 - (Def * 51 - Def^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ---------------------- 49655 * {730 - (34 * 51 - 34^2 ÷ 11) ÷ 10} ÷ 730
Step 19 ------------------------- 49655 * {730 - (1734 - 1156 ÷ 11) ÷ 10} ÷ 730
Step 20 ------------------------------- 49655 * {730 - (1734 - 105) ÷ 10} ÷ 730
Step 21 ------------------------------------- 49655 * {730 - (1629) ÷ 10} ÷ 730
Step 22 --------------------------------------------- 49655 * {730 - 162} ÷ 730
Step 23 ----------------------------------------------------- 49655 * 568 ÷ 730
Step 24 -------------------------------------------------- Final Damage = 38635
仕切りを変更して、武器の攻撃評価と鎧の鎧評価を含めるようにしました。
魔法ダメージは次のように計算されます:Mag = 255、Ultimaが使用され、敵MDef = 1
Step 1 ----------------------------------- [DmCon * ([Stat^2 ÷ 6] + DmCon) ÷ 4]
Step 2 ------------------------------------------ [70 * ([255^2 ÷ 6] + 70) ÷ 4]
Step 3 ------------------------------------------ [70 * ([65025 ÷ 6] + 70) ÷ 4]
Step 4 ------------------------------------------------ [70 * (10837 + 70) ÷ 4]
Step 5 ----------------------------------------------------- [70 * (10907) ÷ 4]
Step 6 ------------------------------------ Base Damage = 190872 [cut to 99999]
Step 7 ---------------------------------------- [{(MDef - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------- [{(1 - 280.4)^2} ÷ 110] + 16
Step 9 ---------------------------------------------- [{(-279.4)^2} ÷ 110] + 16
Step 10 -------------------------------------------------- [(78064) ÷ 110] + 16
Step 11 ------------------------------------------------------------ [709] + 16
Step 12 --------------------------------------------------------- MDefNum = 725
Step 13 --------------------------------------------- [BaseDmg * MDefNum ÷ 730]
Step 14 --------------------------------------------------- [99999 * 725 ÷ 730]
Step 15 ------------------------------------------------- Base Damage 2 = 99314
Step 16 ---------- Base Damage 2 * {730 - (MDef * 51 - MDef^2 ÷ 11) ÷ 10} ÷ 730
Step 17 ------------------------ 99314 * {730 - (1 * 51 - 1^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ------------------------------ 99314 * {730 - (51 - 1 ÷ 11) ÷ 10} ÷ 730
Step 19 --------------------------------------- 99314 * {730 - (49) ÷ 10} ÷ 730
Step 20 ----------------------------------------------------- 99314 * 725 ÷ 730
Step 21 -------------------------------------------------- Final Damage = 98633
問題は、統計値が255を超えると、式が完全にバラバラになることです。特に、300を超える防御値は、非常に奇妙な動作を生成し始めます。たとえば、高強度+防御の統計は、大きな負の値につながります。ユースケースに合わせて式が正しく機能するように変更できるかもしれませんが、まったく新しい式を使用する方が簡単でしょう。人々は実際にどのようにダメージフォーミュラを開発していますか?私はExcelを開き、その方法で数式を構築しようと考えていました(たとえば、攻撃統計と防衛統計をマッピングする)が、もっと簡単な方法があるかどうか疑問に思っていましたか?ここで私のゲームの完全なゲームの仕組みを伝えることはできませんが、誰かがダメージ公式を構築するための良い出発点を提案できるでしょうか?
ありがとう