Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Функция шанса   Найти похожие ветки 

 
Yokmombyk   (2006-06-07 23:29) [0]

Никак не могу составить/придумать нормальный сабж. Игра: фентези.

Нужно посчитать шанс успешного применения умения. Как пример - умение усыпить противника. Из базовых данных есть:
- магическая атака
- магическая защита
- сила a.k.a. базовый шанс умения
- разница уровней между атакующим и целью (ну или их соотношение, не суть важно)
- некая зависимость от базового стата цели (н.п. от мудрости)

Пробема состоит в том, чтоб можно было нормально управлять функцией с помощью базового шанса умения, и чтоб не было траблов с вылетом за пределы (за 100%).

Из "красивых" функций знаю только 1 / (1 + exp(-ax)) и ещё 0.5 + arctan(ax) / pi, но ни одной из них у меня не получается  нормально управлять.

PS зависимость от магической атаки и защиты предполагается вводить в виде sqrt(magic attack) / magic defend, но это не принципиально.


 
megabyte-ceercop ©   (2006-06-08 07:59) [1]

А чего ты боишься за 100% вылетать? Если атакующий настолько сильнее цели то он его 100 пудов усыпит и все.

Но лучше добавить цели что-то типа "усталости от магической атаки". Каждая попытка добавляет некоторое количество этой усталости, как только этот показатель перевалит за 100 цель засыпает. Применяешь каст на сонного, показатель еще больше увиличивается и цели спит дольше.


 
tButton ©   (2006-06-08 08:05) [2]

очень простая формула, можно сказать, ноу-хау
if (random*atack)>(random*defence)
 then hit
 else miss;

т.е. по сути - ролл атаки против ролла защиты
вылет за 100 % не возможен
так что. считай атаку для атакующего
считай защиту для защищающегося и кидай кости


 
Yokmombyk   (2006-06-08 21:48) [3]


> А чего ты боишься за 100% вылетать? Если атакующий настолько
> сильнее цели то он его 100 пудов усыпит и все.

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

То же самое с атакующим - он может взять \m/ оружие (достаётся хоть и нелегко, но оверным оно не должно быть), заточить своего персонажа на магическую атаку в ущерб другим параметрам, может драться "на износ" (с увеличенным потреблением маны, или же с жертвованием жизнью)... Короче, нижняя и верхняя планка различаются раз в 10 :-)


> т.е. по сути - ролл атаки против ролла защиты
> вылет за 100 % не возможен
> так что. считай атаку для атакующего
> считай защиту для защищающегося и кидай кости

Спасибо, попробую. Преобразования всё равно применять придётся, но это уже попроще будет.


 
tButton ©   (2006-06-09 04:51) [4]


> Спасибо, попробую.

ещё один плюс этой системы - у всех есть шанс

> Преобразования всё равно применять придётся, но это уже
> попроще будет.

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


 
Yokmombyk   (2006-06-10 12:34) [5]


> ещё один плюс этой системы - у всех есть шанс


Дада, я и сам догадался :)


 
RzCoDer ©   (2006-06-10 15:01) [6]


> Yokmombyk

Уж не Lineage II C5 ли вы делаете? ;)


 
Yokmombyk   (2006-06-10 18:52) [7]

Нет, с чего ты взял? А что, сильно похожие умения?


 
RzCoDer ©   (2006-06-10 19:56) [8]

Я бы сказал явный плагиат


 
tButton ©   (2006-06-10 20:30) [9]

ничего плагиатного не вижу
ну атака, ну защита, но они ж ядрёна вошь в каждой РПГ в том или ином виде.
если так, то можно и к названиям статов придраться =)


 
RzCoDer ©   (2006-06-10 20:43) [10]


> tButton

Я знаком с LineageII лично и вижу явное сдирание такое как слип, неудачный каст, сильный учёт разницы в уровне, базовый шанс скила (уровень скила), м атак, м деф,

> Ведь цель может быть как магом, так и воином

Так там и есть =)


> (касты от клериков)

Ага, клериков, ШЕ, ЕЕ и прочих оверлордов ;)


 
Yokmombyk   (2006-06-10 21:53) [11]


> Я знаком с LineageII лично и вижу явное сдирание такое как
> слип, неудачный каст, сильный учёт разницы в уровне, базовый
> шанс скила (уровень скила), м атак, м деф,


Если с такой стороны подходить...


> > Ведь цель может быть как магом, так и воином
> Так там и есть =)


...а тем более с такой, то 98% игр являются плагиатом.

Скажи, что только в вашем Lineage есть маги и воины? Только там есть умение усыпить противника? Неудачный каст и учёт разницы в уровнях - это пять. А как же иначе? Все заклинания всегда срабатывают, и первый уровень бьёт 120 точно так же, как сто двадцатый - первого?

Может, ты просто больше ни одной игры не знаешь?


> Ага, клериков, ШЕ, ЕЕ и прочих оверлордов


ШЕ и ЕЕ - это наподобии клериков? Гыгы, первый раз вижу, чтоб клериков называли оверами :D Они у вас в Lineage II C5 разрывают всё, что движется? LOL


 
RzCoDer ©   (2006-06-11 20:21) [12]

Ппц, человек воспринял обычный вопрос в штыки... Мдя...


 
Yokmombyk   (2006-06-11 20:35) [13]

Обычный вопрос - нет, а вот обвинение в явном плагиате...


 
RzCoDer ©   (2006-06-11 20:59) [14]

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


 
Yokmombyk   (2006-06-11 21:18) [15]

[8]


 
RzCoDer ©   (2006-06-11 22:03) [16]

Вы обижаетесь при одном слове "плагиат"?


 
Yokmombyk   (2006-06-11 22:10) [17]

да


 
RzCoDer ©   (2006-06-11 22:37) [18]

гы, ну простите извините... нехотел так глубоко ранить человека

кстати по теме

>  Ведь цель может быть как магом, так и воином (а значение
> защиты у них раза в два различается), цель может применить
> защиты (одёжка, касты от клериков), а может и не применить.
>
>
> То же самое с атакующим - он может взять \m/ оружие (достаётся
> хоть и нелегко, но оверным оно не должно быть), заточить
> своего персонажа на магическую атаку в ущерб другим параметрам


Короче все эти параметры одно что изменяют М.а. и М.деф. так что в уравнении совсем мало переменных: тоисть м.а. атакующего, сила скила атакующего, м.деф. цели и, допустим коэффициент разницы в уровне (атакующий/цель)

как нить так (м.а.*скил.сила)/(м.деф)*k

тоисть если нападающий уровнем выше то k будет повышающим коэффициентом и, соответственно, наоборот


 
RzCoDer ©   (2006-06-11 22:40) [19]

ну где то так:

if (м.а.*скил.сила)/(м.деф)*k > Random(100,20) then попытка успешна

где Random(100,20) - случайное отклонение от 100 на +-20


 
Yokmombyk   (2006-06-11 23:24) [20]


> гы, ну простите извините... нехотел так глубоко ранить человека


Да, я смайлык зафтыкнул поставить ;-)


> if (м.а.*скил.сила)/(м.деф)*k > Random(100,20) then попытка
> успешна

Вот-вот, об этом я и говорил. Сейчас оно приблизительно так и считается и постоянно вылетает за пределы :)


 
RzCoDer ©   (2006-06-12 09:40) [21]

ещё поправка  Random(X,20) где число X надо как то связать с м.деф и м.а. чтонить вроде (м.а./м.деф.)*100. Это конечно зависит от того какие "нормальные" значения будут у этих параметров. Скажем если для персов магов 30 лвл нормальная(читай максимальная) м.а. = 400, а м.деф = 150, то неплохо бы доумнажать м.деф. на повышающий коэффициент


 
Yokmombyk   (2006-06-12 20:46) [22]

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


 
Думкин ©   (2006-06-13 06:34) [23]

> Yokmombyk   (12.06.06 20:46) [22]

Вы бы определились с требованиями к функции. будут требования - будет функция.
А так не пойдет. Фтыкнул - не нравится. А что понравится?


 
Yokmombyk   (2006-06-14 18:28) [24]


> Думкин ©   (13.06.06 06:34) [23]

Мне tButton уже подсказал приемлимый вариант.


 
Kobik..   (2006-06-16 08:27) [25]

>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 дает в сумме с атакой/защитой гарантированно  положительное значение.


 
tButton ©   (2006-06-16 09:21) [26]

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

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


 
Kobik..   (2006-06-17 14:42) [27]

>tButton ©   (16.06.06 09:21) [26]
>вообще - как вы себе представляете бойца с атакой равной нулю?

Очень просто.
Был у нас слабый герой с атакой 10, а на него супер крутой маг колданул ослабление "атака:=атака - 50". Какой показатель атаки останется у героя? :)


 
Yokmombyk   (2006-06-17 15:25) [28]

И будет он при ударах хилить своего врага! :)


 
Kobik..   (2006-06-17 16:04) [29]

>Yokmombyk   (17.06.06 15:25) [28]
>И будет он при ударах хилить своего врага! :)

Это если урон прямо зависит от атаки.
Обычно же идет урон-броня, атака-защита


 
tButton ©   (2006-06-17 16:12) [30]


> Очень просто.
> Был у нас слабый герой с атакой 10, а на него супер крутой
> маг колданул ослабление "атака:=атака - 50". Какой показатель
> атаки останется у героя? :)

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


 
Yokmombyk   (2006-06-30 12:36) [31]

tButton - система работает отлично! Спасибо за идею ;-)


 
tButton ©   (2006-07-04 19:54) [32]


> Yokmombyk   (30.06.06 12:36) [31]
> tButton - система работает отлично! Спасибо за идею ;-)

претендую на эксклюзивное право лицезреть результат использования =)
и если не жалко - можно меня в титры запихать =)


 
Yokmombyk   (2006-07-05 13:39) [33]

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

return damage * rndgen.nextFloat() > target.getMaximumHP() * rndgen.nextFloat();



Страницы: 1 вся ветка

Текущий архив: 2007.05.27;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.073 c
15-1177196465
Германн
2007-04-22 03:01
2007.05.27
Форум "Прочее"


1-1175194336
dreamse
2007-03-29 22:52
2007.05.27
Как запустить ярлык созданый с сетевого подключения ?


15-1177900456
ctudent
2007-04-30 06:34
2007.05.27
WoW


2-1178569350
Malik
2007-05-08 00:22
2007.05.27
Собираю умные мысли....


4-1166780935
Grademax
2006-12-22 12:48
2007.05.27
Как узнать сколько времени отработал HDD?