![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция шанса
Yokmombyk © (2006-06-07 23:29:00)Никак не могу составить/придумать нормальный сабж. Игра: фентези.
Нужно посчитать шанс успешного применения умения. Как пример - умение усыпить противника. Из базовых данных есть:
- магическая атака
- магическая защита
- сила a.k.a. базовый шанс умения
- разница уровней между атакующим и целью (ну или их соотношение, не суть важно)
- некая зависимость от базового стата цели (н.п. от мудрости)
Пробема состоит в том, чтоб можно было нормально управлять функцией с помощью базового шанса умения, и чтоб не было траблов с вылетом за пределы (за 100%).
Из "красивых" функций знаю только 1 / (1 + exp(-ax))и ещё 0.5 + arctan(ax) / pi, но ни одной из них у меня не получается нормально управлять.
PS зависимость от магической атаки и защиты предполагается вводить в виде sqrt(magic attack) / magic defend, но это не принципиально.
Yokmombyk (2006-07-05 13:39:00) [1]До того, что было описано в первом посте руки не дошли ещё, но используется в деле прерывания атаки (критический удар, можно так сказать).
return damage * rndgen.nextFloat() > target.getMaximumHP() * rndgen.nextFloat();
tButton (2006-07-04 19:54:00) [2]
> Yokmombyk (30.06.06 12:36) [31]
> tButton - система работает отлично! Спасибо за идею ;-)
претендую на эксклюзивное право лицезреть результат использования =)
и если не жалко - можно меня в титры запихать =)
Yokmombyk (2006-06-30 12:36:00) [3]tButton - система работает отлично! Спасибо за идею ;-)
tButton (2006-06-17 16:12:00) [4]
> Очень просто.
> Был у нас слабый герой с атакой 10, а на него супер крутой
> маг колданул ослабление "атака:=атака - 50". Какой показатель
> атаки останется у героя? :)
и как вы хотите чтобы чувствовал себя маг, который полтора года разучивал это мега заклинание?
колданул он его, а воин как бил так и бьёт...
Kobik.. (2006-06-17 16:04:00) [5]>Yokmombyk (17.06.06 15:25) [28]
>И будет он при ударах хилить своего врага! :)
Это если урон прямо зависит от атаки.
Обычно же идет урон-броня, атака-защита
Yokmombyk (2006-06-17 15:25:00) [6]И будет он при ударах хилить своего врага! :)
Kobik.. (2006-06-17 14:42:00) [7]>tButton © (16.06.06 09:21) [26]
>вообще - как вы себе представляете бойца с атакой равной нулю?
Очень просто.
Был у нас слабый герой с атакой 10, а на него супер крутой маг колданул ослабление "атака:=атака - 50". Какой показатель атаки останется у героя? :)
tButton (2006-06-16 09:21:00) [8]немогу однозначно описать свои эмоции по поводу реакции на формулу из которой я хотел сделать коммерческую тайну =)
вообще - как вы себе представляете бойца с атакой равной нулю?
он может вообще во что-то попасть?
так же как и защита равная нулю не даёт шанса защититься вообще.
это не косяк, это суровая правда жизни.
значения переменных - это вопрос игрового баланса.
ПыСы
формулу из аллодов не видел, прокомментировать не могу =)
ПыПыСы
эта формула родилась в припадке психоза, когда я устал подгонять и сравнивать коэффициенты. родилась она из упрощения атако-защитной системы =) (т.е. раньше у меня было нечто подобное, но оно было немного сложнее)
Kobik.. (2006-06-16 08:27:00) [9]>tButton © (08.06.06 08:05) [2]
>if (random*atack)>(random*defence)
> then hit
> else miss;
Реально классная формула. Нечто бодобное сделано в аллодах.
Единственный касяк, тут шанс попасть меньше чем шанс защититься. А при атаке 0 вообще невозможно попасть.
Конечно, нулевых (или даже отрицательных) значений атаки/защиты может не быть вообще. Но если они допускаются, то я бы так изменил эту формулу
if (random*(atack+const1))>=(random*(defence+const1))
где const1 дает в сумме с атакой/защитой гарантированно положительное значение.
Yokmombyk (2006-06-14 18:28:00) [10]
> Думкин © (13.06.06 06:34) [23]
Мне tButton уже подсказал приемлимый вариант.
Думкин (2006-06-13 06:34:00) [11]> Yokmombyk (12.06.06 20:46) [22]
Вы бы определились с требованиями к функции. будут требования - будет функция.
А так не пойдет. Фтыкнул - не нравится. А что понравится?
Yokmombyk (2006-06-12 20:46:00) [12]Почитай первую страницу, там об этом речь идёт, и сказано, что такой способ обсчёта не даёт хороших результатов.
RzCoDer (2006-06-12 09:40:00) [13]ещё поправка Random(X,20) где число X надо как то связать с м.деф и м.а. чтонить вроде (м.а./м.деф.)*100. Это конечно зависит от того какие "нормальные" значения будут у этих параметров. Скажем если для персов магов 30 лвл нормальная(читай максимальная) м.а. = 400, а м.деф = 150, то неплохо бы доумнажать м.деф. на повышающий коэффициент
Yokmombyk (2006-06-11 23:24:00) [14]
> гы, ну простите извините... нехотел так глубоко ранить человека
Да, я смайлык зафтыкнул поставить ;-)
> if (м.а.*скил.сила)/(м.деф)*k > Random(100,20) then попытка
> успешна
Вот-вот, об этом я и говорил. Сейчас оно приблизительно так и считается и постоянно вылетает за пределы :)
RzCoDer (2006-06-11 22:40:00) [15]ну где то так:
if (м.а.*скил.сила)/(м.деф)*k > Random(100,20) then попытка успешна
где Random(100,20) - случайное отклонение от 100 на +-20
RzCoDer (2006-06-11 22:37:00) [16]гы, ну простите извините... нехотел так глубоко ранить человека
кстати по теме
> Ведь цель может быть как магом, так и воином (а значение
> защиты у них раза в два различается), цель может применить
> защиты (одёжка, касты от клериков), а может и не применить.
>
>
> То же самое с атакующим - он может взять \m/ оружие (достаётся
> хоть и нелегко, но оверным оно не должно быть), заточить
> своего персонажа на магическую атаку в ущерб другим параметрам
Короче все эти параметры одно что изменяют М.а. и М.деф. так что в уравнении совсем мало переменных: тоисть м.а. атакующего, сила скила атакующего, м.деф. цели и, допустим коэффициент разницы в уровне (атакующий/цель)
как нить так (м.а.*скил.сила)/(м.деф)*k
тоисть если нападающий уровнем выше то k будет повышающим коэффициентом и, соответственно, наоборот
Yokmombyk (2006-06-11 22:10:00) [17]да
RzCoDer (2006-06-11 22:03:00) [18]Вы обижаетесь при одном слове "плагиат"?
Yokmombyk (2006-06-11 21:18:00) [19][8]
RzCoDer (2006-06-11 20:59:00) [20]В таком случае где слова обвинения?