Как разработать Формулы урона РПГ?

Я разрабатываю классическую 2-мерную 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,
};

Жизнеспособность - это в основном защита от физических атак, а дух - защита от магических атак.

Все статистические данные имеют фиксированные максимумы (9999 для HP, 999 для MP /SP и 255 для остальных). С умениями максимальные значения могут быть увеличены (99999 для HP, 9999 для HP /SP, 999 для остальных) с типичными значениями (на уровне 100) до /после умений + оборудование + и т. Д. Будет 8000/20 000 для HP, 800 /2000 для SP /MP, 180/350 для других характеристик

Поздняя игра Enemy HP, как правило, будет в более низких миллионах (с супер боссом, имеющим максимум ~ 12 миллионов).

Мне было интересно, как люди на самом деле разрабатывают правильные формулы повреждений, которые правильно масштабируются? Например, на основе этих данных использование формул ущерба для Final Fantasy X в качестве базы выглядело очень многообещающим. Полная ссылка здесь http://www.gamefaqs.com/ps2/197344-final- fantasy-x /faqs /31381 , но в качестве примера: Str = 127, используется команда «Атака», Def 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

Я просто модифицировал разделители, чтобы включить рейтинг атаки оружия и рейтинг брони брони.

Магический урон рассчитывается следующим образом: 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 и пытаюсь построить формулу таким образом (например, сопоставление статистики атаки и статистики защиты), но мне было интересно, есть ли более простой способ? Хотя я не могу передать полную игровую механику своей игры здесь, может кто-то может предложить хорошее исходное место для создания формулы ущерба?

Спасибо

113 голосов | спросил user127817 29 J0000006Europe/Moscow 2011, 23:41:56

12 ответов


132

Создание таких формул требует знания элементарных математических функций - о том, что вы узнали в алгебре и пред- класс исчисления.

Как только вы освоитесь, просто спросите себя (замените «значение» на «ущерб» или «здоровье» или «скорость» или что-то еще) :

Затем просто настройте его (добавьте /размножайте материал, измените базовое значение и т. д.) , пока он не почувствует себя правильно. Графический калькулятор поможет вам понять, как изменения параметров будут влиять на функцию.


Кстати, проблемы, которые вы испытываете, связаны с переполнением целых чисел .

Используйте типы переменных, которые достаточно велики, чтобы удерживать числа, с которыми вы работаете. Размеры различаются платформой на C ++, но с использованием 32-битного компилятора Visual Studio unsigned int 32-разрядный, а unsigned __int64 (для MS) 64-бит. Также рассмотрите использование double.

Кроме того, попробуйте реорганизовать свои операции, чтобы вы не столкнулись с такими большими числами, в первую очередь (например, вместо MDef * MDef / 110), do (int)((float)MDef / 110 * MDef)) .

ответил BlueRaja - Danny Pflughoeft 30 J0000006Europe/Moscow 2011, 01:08:02
28
  

Статистика моих персонажей состоит из следующего:

У вас есть настоящая проблема: вы определили свою статистику до , указав, что эти показатели действительно означают . Вы ставите телегу перед лошадью.

Посмотрите, как работает D & D (настольный). «Сила» ничего не значит сама по себе; это только означает что-то, потому что есть правило, которое гласит: «Добавьте свой бонус силы в свою рукопашную атаку». Это правило является частью боевых правил D & D. Без правил боя «Сила» обычно является бессмысленной величиной.

Первый вопрос, который вам нужно задать себе, заключается в следующем: насколько я хочу различать символы? Снова посмотрим на D & D. Там они имеют 6 основных характеристик. Эти статистики определяют разные размеры игры для персонажей. Персонаж с высокой ловкостью будет иметь разные варианты от персонажа с низкой ловкостью.

Но причина даже в том, что разница все возвращается к правилам. Высокая Ловкость означает бонусы к дальним атакам; вы можете чаще атаковать с помощью дальних атак. Таким образом, только между Силой и Ловкостью, у вас есть два измерения игры: дальность против рукопашного боя.

Интеллект и Мудрость также образуют что-то вроде спаривания, но они больше взаимодействуют с конкретными классами. Int делает Wizards и других тайных заклинателей лучше (или возможных под некоторыми наборами правил), Мудрость жизненно важна для клириков и других божественных заклинателей. Поскольку божественные и тайные заклинания имеют разные списки заклинаний, эти две статистики участвуют в разных измерениях игры.

Вам нужно определить основные правила вокруг статистики до , вы можете определить функции прогрессирования роста и т. п. Вам не нужны особенности; вам не нужно говорить, что «каждая точка силы добавляется в случайный бросок, чтобы определить, попадает ли атака ближнего боя». Вам нужны мета-правила, такие как «ловкость делает лучших атакующих лучше». Вы можете точно определить , как это улучшит их позже.

Существуют разные способы продвижения символов. Обычным трюком Final Fantasy старой школы было просто использовать уровень персонажа как часть их вычислений ущерба. Это может быть просто умножение уровня на соответствующий stat, или это может означать применение функции к уровню персонажа. Скажем, квадратичная прогрессия, чтобы скорость повреждения персонажа увеличивалась на уровень.

Однако вы хотите, чтобы ваши боевые функции работали, им необходимо учитывать прогрессию. Ваши функции нуждаются в перехватах для продвижения.

D & D имеет забавный способ прогрессирования. Это часть класса; каждый раз, когда вы поднимаетесь на уровень, вы получаете новые функции класса и плоский бонус к вашему удару, исходя из вашего класса персонажа. Однако некоторые функции класса стали лучше сами собой. Заклинания в D & D будут иметь прогрессирование, встроенное в них. Заклинание может нанести 1d4 урона за 2 уровня заклинателя над первым. Таким образом, каждый другой уровень мастера улучшает заклинание.

D & D также сильно воздействовал на позиции. До 4-го выпуска предметная прогрессия была в основном для боевых персонажей, но даже в более старых изданиях заклинатели имели предметы, которые давали им стат-баффы или другие корректировки (или плоские дали заклинания).

Таким образом, предметы - это еще одна вещь, которую необходимо учитывать вашим боевым функциям. Делают ли предметы просто прикладывают одну или несколько характеристик при экипировке или делают другие вещи? D & D был немного странным, поскольку эта статистика редко менялась; оружие просто нанесло урон XdY, возможно, с бонусом, основанным на одной из ваших характеристик. И это было так. Таким образом, ваш единственный способ нанести больше урона в битве - это найти лучшее оружие. Во многих видеоиграх RPG они учитывают уровень в дополнение к оружию.

ответил Nicol Bolas 1 J000000Friday11 2011, 12:45:11
20

Ваши формулы кажутся довольно сложными. Я не уверен, как профессиональные разработчики RPG справляются с этим, но я бы рекомендовал сосредоточиться на простоте. Попробуйте найти простейшую возможную формулу, которую вы можете использовать, которая по-прежнему включает в себя диапазон статистики, которую вы хотите использовать. Например, можете ли вы иметь статистику изменять друг друга до расчета ущерба, а не изменять ущерб во время расчета? Как только у вас есть своя формула, я бы попробовал графическое отображение ее для широкого круга возможных значений, чтобы увидеть, как она будет вести себя по мере повышения уровня игроков. Очевидно, чем меньше переменных у вас есть, тем это будет возможно.

Кроме того, BlueRaja предоставила важное объяснение того, почему вы можете видеть неожиданные значения на более высоких уровнях стата. Использование неподписанных типов и проверка переполнения будут важны.

ответил Mitch Lindgren 30 J0000006Europe/Moscow 2011, 01:15:15
10
  

Поздняя игра Враг HP, как правило, будет в более низких миллионах (с   супер босс, имеющий максимум ~ 12 миллионов).

У меня проблема. Вы должны создать своих боссов вокруг того, что, по вашему мнению, должны иметь ваши игроки. Вы строите своих игроков и сражаетесь с формулой вокруг того, кем хотите, чтобы ваши боссы были.

После того, как вы создадите свою боевую механику и роли, вы можете решить, как вы хотите спроектировать своих боссов, так как это должен быть хороший баланс между ущербом, который игроки могут совершать или поглощать, и тем, что босс может решить или поглотить.

ответил Kenneth Posey 9 Jpm1000000pmMon, 09 Jan 2012 22:20:38 +040012 2012, 22:20:38
7

Те числа, которые вы цитировали, скорее всего, получены из простой настройки симуляции, более тысячи прогонов.

Итак, вы должны написать симуляцию создать персонаж 20-го уровня и посмотреть, как он проплачивает 200 битв или против противников, с которыми он должен сражаться в этот момент. Сделайте это снова для персонажа уровня 30 (предположительно в следующем разделе мира).

Потребуется некоторое время, чтобы получить право, но писать автоматизированные симуляции определенно сделает это намного проще, чем просто угадать и вручную воспроизвести его.

ответил bobobobo 26 Mayam13 2013, 07:07:42
5

Я думаю, вы ошиблись, что хотите создать формулу, не имея надлежащего дизайна.

Сначала начните с дизайна, а затем начните думать о представлении дизайна в формулах. Чем яснее ваш дизайн, тем легче найти простые и /или точные формулы.

Попробуйте реализовать «типы» врагов, например. "armored" => атака игрока, если она имеет физический тип, уменьшается на 50%. Не делайте поток битвы абстрактным, думайте о том, что актуально, а что нет.

Если ваш дизайн говорит, что «бронированные враги» слабы против магии, но сильно против физического урона, представляйте это в коде. Но помните, что у вас много тестов, потому что значения не будут работать волшебным образом при первом написании кода. Попытайтесь создать дизайн, поместите логику в код, всегда проверяйте, является ли это техническим представлением того, что вы имели в виду, и если оно не меняет значения до тех пор, пока оно не будет.

ответил daemonfire300 1 J000000Friday11 2011, 02:40:35
5

Несмотря на то, что мой проект не оставил фазу электронных таблиц, я пришел к одному выводу о разработке математики для RPG:

Держите их как можно проще. В дизайне, над которым я работаю, я использовал очень упрощенные формулы, которые подходят для системы без класса. То есть. Огненное заклинание имеет урон 30. Форум:

BaseSpellDamage * Attribute (5 * 6)

Мы также можем добавить такие модификаторы:

Result = (BaseSpellDamage * Attribute) (5*6)
Result = Result + (Result * 50%) (30 = 30 + (30 * 50%))

Таким образом, конечный результат будет 45 урона. Я обнаружил, что использование множителей precentage очень простое и очень масштабируемое решение для работы. Вместо того, чтобы приходить с некоторыми нечетными числами со сложной математикой, чтобы выяснить результат, который мы хотим.

Теперь мы можем выявить повреждение, которое будет просто компенсировать защиту от установленного типа урона. Есть два подхода, и я честно не решил, что будет лучше, но они оба просты и жизнеспособны:

DamageResult = Resistance * Damage ( 50% * 45)

Таким образом, конечный результат будет выполнен 22 (я просто сократил частичный результат).

Другая формула:

DamageResult = Damage - Resistnace (45 - 22).

Итак, конечный результат будет 23. Если это произойдет, сопротивление будет больше, чем нанесенный урон, тогда персонаж просто не получит никакого урона. Конечно, решать вам, чтобы такая ситуация не имела места, кроме тех случаев, когда вы этого хотите.

Хотя я должен признать, что масштабирование прецентража несколько легче сбалансировать и масштабировать. Но это также зависит от ваших базовых чисел. Масштабирование прецентров будет работать лучше всего, если вы начнете с 100 и выше. Если вы работаете на небольших количествах (что-то ниже 100, если честно), он может получить awkard, поскольку вы начнете получать результаты с плавающей запятой, что будет трудно сбалансировать и на самом деле сделать с ними что-нибудь интересное.

Вероятно, оптимальным решением в этом случае является использование обоих подходов, когда они видят, чтобы они соответствовали друг другу. Или, если вы поклонник больших чисел, начинайте с 1000.

И на закрытии заканчивается. Я не пришел к этим выводам полностью самостоятельно. Я действительно потратил некоторое время на чтение различных руководств RPG (Hero, DnD). Особенно DnD был полезен, поскольку он работает на аналогичных принципах, но вместо атрибутов он использует уровни для своих формул, они могут быть когда-то более сложными. Чем я представлял здесь.

В любом случае, лучший совет: старайтесь держать их как можно проще. Не используйте передовые математические или длинные уравнения, поскольку они подвержены ошибкам, которые трудно обнаружить, когда вам приходится иметь дело с 87234 другими вещами одновременно.

ответил Łukasz Baran 27 +04002013-10-27T13:08:35+04:00312013bEurope/MoscowSun, 27 Oct 2013 13:08:35 +0400 2013, 13:08:35
2

Как уже упоминалось, формула Final Fantasy X довольно сложна. Вообще для этой серии, чем позже игра, тем сложнее формула. Вероятно, проще всего основывать свою формулу ущерба на другой игре. Но в целом, я думаю, стоит обсудить с очень общего уровня, какие формулы повреждений вы можете найти в мире, и как вы можете создать игру, основанную на них. Первое, что вам нужно решить, - сколько урона вы хотите сделать в конце игры и какую статистику вы хотите, чтобы игрок мог иметь? После этого вы можете выбрать систему формул, а затем оптимизировать формулы и значения оружия, чтобы отражать эти диапазоны с течением времени.

Purely Stat-based

Это хорошая идея, если вы хотите, чтобы ваши персонажи были гибкими с точки зрения того, какие уровни врагов они могут бросить вызов. Формула, подобная этой, зависит только от статистики игрока, его экипировки и статистики врагов. Эти формулы обычно довольно просты. Final Fantasy Legend II (см. http://www.shenafu.com/ffl2/weapon.php например, имеет оружие, которое наносит ущерб по простой формуле:

(Stat+StatBonus)*WeaponStrength - Defense*4

Формула, подобная этому, хороша, если вы хотите очень простой метод оценки ущерба или быстрый прыгающий пункт для изменения урона, основанный на других факторах, таких как умения и элементарные недостатки.

Чтобы показать, насколько широка эта формула действительно может пойти, рассмотрим формулу ущерба для Inflation RPG, игру Android и IOS (см. http://inflation-rpg.wikia.com/wiki/Calculations ). Формула сильно зависит от статистики и оборудования. Каждая единица оборудования имеет две статистики - бонус к статусу ATK и значение мультипликатора. Некоторые единицы оборудования имеют низкие множители, но высокие бонусы, другие имеют низкие бонусы, но высокие множители. Для персонажа, имеющего всего 10 ATK, Battle Axe с 5000 бонусами ATK, но с низким коэффициентом 145% - отличный выбор. Общий ущерб составляет (10+5000)*1.45 = 7264, но Estoc с бонусом 0 и множителем 300% - это плохой выбор - урон (10+0)*3 = 30. Позже в игре персонаж с атакой 5000 предпочитает переключать оружие.

На основе статистики и уровня:

Хорошим примером этого является Final Fantasy V, VI и Final Fantasy XII (см. http://www.gamefaqs.com/ps2/459841-final-fantasy-xii/faqs/45900 , например). Формула для мечей в FFXII:

DMG = [ATK x RANDOM(1~1.125) - DEF] x [1 + STR x (Lv+STR)/256]

и формула повреждения для ножей:

DMG = [ATK x RANDOM(1~1.125) - DEF] x [1 + STR x (Lv+MAG)/256]

Они очень похожи, но обратите внимание, что формула меча зависит только от силы и уровня, в то время как формула персонала зависит от силы, magic и уровня. Преимущество такой формулы заключается в том, что она позволяет игроку два пути роста - построение их статистики или построение их уровней. Недостатком является то, что он также наказывает персонажей в обоих направлениях. То, что на самом деле заканчивается, позволяет игроку повысить уровень своего урона (для FFXII это увеличивает уровень урона на ~ 4% за уровень около 50 уровня, когда вы учитываете прирост статистики), чтобы помочь настроить трудности к их уровень комфорта.

Исправлено повреждение:

Формулы с фиксированным ущербом не зависят от характеристик персонажа или уровня, они зависят только от формулы внутреннего повреждения самого оружия. Они могут по-прежнему меняться в диапазоне, но они имеют одинаковый урон независимо от пользователя (за исключением любых других спецэффектов или черт характера). Они лучше всего используются, если оружие будет наносить фиксированный урон, а способность экипировать оружие зависит от статистики и /или уровня. Diablo 2, например, делает это, как и многие рогалики, у которых есть оружие, зависящее от бросков кубиков. При этом «фиксированный урон» not подразумевает «неслучайное» - и на самом деле обычно существует некоторый элемент случайности для нанесенного урона.

Это хорошая методология, если вы хотите иметь оружие, которое легко переносить между персонажами или тщательно контролировать выход урона, который персонажи в определенных точках игры могут делать, если вы знаете, к какому оборудованию они имеют доступ (через drop столы, сундуки и столы для кражи).

Еще одно место, в которое вы столкнетесь, - это определенные типы оборудования или предметов в Final Fantasy. Например, 1000 игл всегда наносит 1000 урона. В Final Fantasy Legend II боевые искусства наносят урон по формуле:

Damage = WeaponStrength*(90-UsesLeft) - 4*Defense

Final Fantasy XII имеет несколько фиксированный урон для оружия, нанося урон в соответствии сформула:

DMG = [ATK x RANDOM(1~1.125)]^2

Несмотря на то, что урон несколько случайный, он варьируется только на 26,5 процента по всему диапазону, поэтому вы гарантированно сможете добиться определенного уровня урона в среднем с течением времени. Эти типы атак полезны для персонажей с низкой статистикой и низкими уровнями в играх, которые обычно учитывают эти факторы при нанесении урона. Кроме того, они игнорируют защиту цели (хотя формула может быть легко переделана, чтобы соответствовать защите, если вы этого пожелаете).

ответил Foo Barrigno 6 J0000006Europe/Moscow 2014, 21:00:48
1

все игры в финальной серии фэнтези имеют колпак в размере 255 из-за проблемы, с которой вы сталкиваетесь. на уровне 100 будет 255.

вы говорите об увеличении статистики со способностями и оборудованием, и я помню, что видел это в играх, но способ, которым это делается, находится в формуле. есть дополнительный шаг, который проверяет возможности и модификаторы оборудования и применяет их после использования статистики.

в вашем случае это будет шаг 21: применить модификаторы способностей шаг 22: применить модификаторы оборудования step23: окончательный ущерб.

Если вам интересны Google для окончательных формул фантазии, они там. У меня есть копии реальной боевой механики, включая ИИ для финальной фантазии 4, 6, 7 и 9. Люди взломали их из оригинальных игр, когда они создавали ромы для эмуляторов. Там не так сложно найти, если вы выглядите достаточно сложно.

Самое важное для создания формул - это тестирование. создайте сценарий, чтобы запустить битву с обеих сторон и запустить несколько сот битв. измените монстров и статистику и посмотрите, работает ли это, или если lv 40 убивает все, вполне возможно, что босса на самом деле невозможно убить lol. наконечник должен был отключить всю анимацию, так как она впечатляет, как быстро AI могут сражаться, когда никто не смотрит.

ответил Skeith 30 J0000006Europe/Moscow 2011, 15:15:23
1
  

Мне было интересно, как люди на самом деле разрабатывают правильные формулы повреждений, которые правильно масштабируются?

Первые две вещи:

  • Решите, что вы подразумеваете под «правильно» - какова ваша идея «правильного ущерба»?
  • решите, что вы подразумеваете под «шкалой» - какие значения будут меняться и какой эффект вы хотите, чтобы эти изменения имели?

Как только вы это знаете, у вас достаточно информации для использования математических формул, которые BlueRaja упоминает в его ответ . Просто помните, что нет такой вещи, как «правильная» формула ущерба - только тот, который соответствует вашему дизайну для типа опыта, который вы хотите, чтобы ваши игроки имели.

ответил Kylotan 1 J000000Friday11 2011, 00:58:16
1

альтернативно, если вы ищете очень простую формулу, сделайте следующее:

(Заметим, что это моя идея для формулы)

Во-первых, для простой формулы атаки вам потребуется всего несколько статистических данных. Ставка атаки игрока (это может быть Сила или Магия, в зависимости от типа перемещения.)

Затем создайте переменную, называемую MovePower. Это будет зависеть от хода, и лучшие ходы будут иметь лучшую MovePower. Для моей формулы общие команды «Атака» имеют MovePower 5.

Затем сделайте защиту основанной на процентах stat (и, конечно же, сделать невозможным достижение 100% защиты от урона)

Затем, во время фазы атаки, просто умножьте атаку на силу перемещения и удалите повреждения, основанные на защите противников! простой!

Вы также можете выбрать другие модификаторы, например, если ударит ход (Точность), если у этого движения есть еще один добавленный эффект (Bio, наносит яд) и выберите, чтобы он ударил (Точность снова) изменение /понижение ходов, которые изменяют статистику, ect. Получайте удовольствие от этого!

ответил AzelfDestin 25 J000000Thursday13 2013, 04:51:50
0

В сущности, вам нужно выяснить две вещи.

  1. Как правильно выполнить вычисления с большими числами.
  2. Как вы хотите и ожидаете, что урон от атаки будет вести себя против слабых и сильных противников.

1

Вы можете либо использовать double, либо большую библиотеку. Выполнение вычислений с большими числами (например, в играх с щелчком /бездействием часто зависит от таких больших библиотек чисел). В вашем случае номера относительно малы, поэтому использование 64-битной с плавающей запятой позволит обеспечить необходимую гибкость.

2

Как вы хотите, чтобы игра вела себя? некоторые примеры:

  • Один из подходов состоит в том, чтобы использовать ATK, чтобы решить, попадете ли вы или нет, и сверните штамп с известным рейтингом урона в зависимости от оружия: например, длинный меч 1d8, двуручный меч 1d10, кинжал 1d4 , Это не будет масштабироваться удивительно хорошо, если hp может расти и продолжать. Если вы используете ATK, чтобы определить, попали ли символы или пропустили, вы можете сделать еще один бросок после успешного удара с помощью ATK * 80% для определения критов.
  • Если вы хотите использовать формулу ущерба, формула ущерба может быть такой же простой, как (ATK - DEF) +/- 20%, как это сделано в World's End (стратегическая игра RPG). Это будет означать, что атаки против противника с сильным DEF не могут вообще нанести ущерб. Для instace ATK = 10, ENEMY DEF = 12, (ATK - DEF) = -2, а это также означает, что высокая атака против немного ниже def, может нанести небольшой урон, что может привести к более длительным сражениям с увеличением HP. Например, с ATK = 1010, ENEMY DEF = 1005, урон будет равен 5. Урон также резко возрастет, если ATK увеличился на небольшой процент. Например, ATK = 1055, на 900% больше урона, только с увеличением 5% в значении ATK.
  • Чтобы этого избежать, вы можете сделать что-то вроде ATK / DEF * WEAPON_DAMAGE. Это будет увеличиваться более постепенно, когда ATK или DEF будут увеличены и чтобы слабый атакующий мог повредить существо сильным DEF.

TL; др Вы должны относиться к своим цифрам ответственно и выяснить, как вы хотите, чтобы игра вела себя в разных ситуациях. Некоторые вопросы, чтобы задать себе вопрос:

  1. Сколько атак (поворотов), нужно ли победить этого босса /миньона?
  2. Как разные навыки, баффы, дебаффы влияют на бит x? Если это будет безнадежным, выигрыш будет y% меньше /более вероятен?
ответил wolfdawn 3 AM00000090000000031 2015, 09:05:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132