Игрок 1 10 юнитов с атакой 7, защитой 1 (70/10), юниты могут погибать Игрок 2 10 юнитов с атакой 4, защитой 2 (40/20), юниты могут погибать 5 построек с атакой 0, защитой 3 (0/15), постройки не разрушаются (постоянная защита) Как примерно нужно строить pvp? Чего не хотелось бы: не хотелось бы тупо отдавать победу, тому у кого атака больше. Чего хотелось бы: хотелось бы посчитать сколько юнитов погибнет с каждой стороны при таком раскладе p.s. может у кого опыт есть такой как это хоть примерно можно делается
@Вероломство Я как задрот со стажем, могу сказать как обычно это устроено в играх. Про защиту сам подумаешь, а атака вот. PHP: <?php $unit1 = ['Нагибатор 3000 ', 7]; $unit2 = ['Кошечка ', 4]; $move = 3; $text = ['Ход ', 'наносит удар на ']; function attak( $unit ) { $dice = rand(1, 100); return $unit * $dice; } $result = ''; for ($i = 1; $i <= $move; $i++) { $atk_1 = attak( $unit1[1] ); $atk_2 = attak( $unit2[1] ); $result .= $text[0] . $i . '<br/>'; $result .= $unit1[0] . $text[1] . $atk_1 . '<br/>'; $result .= $unit2[0] . $text[1] . $atk_2 . '<br/><br/>'; } echo $result; естественно в основном будет побеждать тот у кого атака больше. Но и второй чувак имеет шансы. Можно еще добавить шанс промаха, тогда вообще интересно будет) То есть добавить параметр, удачи и крит шанса) У меня еще выпало так, при верхнем коде, первому сильно не повезло)) А по поводу защиты, в героях меча и магии 3 такая формула: То есть учитывается больше ли защита относительно атаки противника.
это в какой гениальной игре так сделано? даже в линейке такого нет, это даже не БГ, там считается, тут какая-то лотерея с рандомом --- Добавлено --- @[vs] чёт не считается например юнит 7/1 юнит 4/2 + защита построек +3 итого 4/5 теперь первый атачит второго: 7 атаки против 5 защиты = нанёс 2 урона итого, ему прилетело в ответ 4 атаки против 1 защиты = нанёс 3 урона 3 > 2 победил второй юнит первый юнит убит получается что вторые юниты поубивают всех первых без потерь короче я понял как сделать: нужно завести учёт урона, например 100 единиц и каждые >= 100 урона удалять юнита там или там
Да и ещё надо рандом добавить --- Добавлено --- Шанс критического удара, заметно превышающего очки атаки.
@Вероломство крит и уворот выпадают по рандому. Плюс на каждый ход, урон и защиту можно варьировать в пределах нескольких процентов. То есть не считать результат по формуле, а прокручивать шаг за шагом с рандомами.
С рандомом со временем выясняется забавная штука, что криты (например) могут подолгу не выпадать или могут выпадать по много раз подряд. Это происходит потому, что при подбрасывании монетки шанс выпадения решки 50% не зависимо от всех предыдущих подбрасываний. В доте 2 эту проблему решили с помощью механики псевдорандома. Смысл в том, что на первый удар для события (например того же крита) вероятность выпадения низкая, для второго выше, для третьего еще выше и так повышается, пока крит не выпадет. После выпадения крита вероятность снова сбрасывается на минимальный показатель. Вероятности рассчитываются таким образом, чтобы для события с вероятность в 25 % событие срабатывало в среднем 1 раз в 4 атаки. Но игроки, естессно, абузят эту механику, набивая вероятность об мобов перед сражением с героями. Эту проблему можно решить установкой разных счетчиков, но о чем это я? Подобные баги живут в играх годами и никого не парят
Apple ещё при Джобсе сделали рандом в режиме shuffle на айподах, потому что пользователи жаловались на чуть ли не целые альбомы подряд
@TeslaFeo Вы неправильно понимаете шанс выпадения, Вы хотите чтобы из 2-х подбрасываний с шансом 50% выпал шанс как минимум 1 раз, но почему-то молчите потом и не пишите в обратку, что у Вас при шансе 50% из двух раз выпало 2 раза, то есть шанс составил 100% каждый раз и превысил уровень Вашего шанса в два раза я тоже так канил раньше на обратки в играх, но так не делается, делается шанс на момент попытки, (в некоторых либо забагованных скриптах либо у непонимающих админов я встречал прокачку более 100% - это не логично) ещё очень часто делается для облегчения жизни пользователям, покупка чего-то с шансом, но в большом количестве (чтобы не долбить 100 покупок по одной) и пользователи ожидают, что сделав 4 покупки ЗА ОДИН РАЗ с шансом 25% им в любом случае выпадет призовая покупка, так как 25% * 4 = 100% это неправильное понятие шанса то есть вот у меня есть крит и его шанс в %, возможность его прокачивать до 100%, на данный момент прокачка - 25%, я делаю PHP: if (mt_rand(1, 100) <= $user->krit_chance) echo 'Сработал ШАНС нанесения крита, добавьте ЗНАЧЕНИЕ крита к урону'; // ясен пень шанс крита - это НЕ ЗНАЧЕНИЕ крита --- Добавлено --- @TeslaFeo и ещё вы писали, что при шансе 25% из 4-х ударов должен один быть с критом, а если за бой я нанёс всего 3 удара и учётка НЕ подогнала мне крит, то получается мой шанс составил 0% и эта очередная причина для какого-то необоснованного недоверия к разрабу шанс считается на каждую попытку