我正在开发经典的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)。有了异能,可以增加最大值(HP为99999,HP / SP为9999,其余为999),能力+装备+等之前/之后的典型值(在100级)将为8000 / 20,000,HP,800 / SP / MP为2000,其他统计为180/350
后期游戏敌人的HP通常将在数百万以下(超级老板的最大数目为1200万)。
我想知道人们如何真正开发正确缩放比例的适当伤害公式?例如,基于这些数据,以最终幻想X的伤害公式为基础看起来非常有希望。这里有完整的参考资料http://www.gamefaqs.com/ps2/197344-final-fantasy-x/faqs/31381,但作为一个简单的例子:Str = 127,使用了“攻击”命令,敌人的Def = 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
我只是简单地修改了分频器,以包括武器的攻击等级和装甲的装甲等级。
魔法伤害的计算公式如下:魔力= 255,使用了终极,敌人的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并尝试以这种方式建立公式(例如,将“攻击统计”与“防御统计”相对应),但我想知道是否有更简单的方法?虽然我无法在此处传达游戏的完整游戏机制,但有人可以为构建伤害公式提供一个良好的起点吗?
谢谢