Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функция шанса


Страницы:   1 2

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]

В таком случае где слова обвинения?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо