Форум: "Игры";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
ВнизФункция шанса Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.047 c