Инициатива/очередность хода в бою: мой велосипед



По мотивам поста

Уже двенадцатый год я использую в своих играх схему, которую называю «Бочка Либиха».

Никакого отношения к агротехнологиям эта схема не имеет, она вдохновлена иллюстрацией к статье в википедии (на самом деле все началось с отличной книги Бориса Алмазова «Наш хлеб», полезной любому Мастеру).

Условия применения:

У каждого персонажа есть action points, их количество зависит в основном от ловкости [1..18]. Используется d6 кубик. Каждое действие (движение, выстрел, удар) требует определенное количество AP, высокое значение навыка стоимость действия уменьшает.

Инициативы персонажей в раунде это суммы action points и бросков кубика «на инициативу»:

action points + d6

Всегда действует тот, чья инициатива максимальна. Действия уменьшают текущее значение action points (они же — инициатива) на заранее известную величину.



Разберу работу схемы на примере столкновения десантников Добрыни Никитича и Анастаса Блэка с оборотнем.

Начинается все с броска на инициативу:
Анастас: базовых AP 13, бросок 6, сумма: 19
Добрыня: базовых AP 9, бросок 3, сумма: 12
Оборотень: базовых AP 14, бросок 1, сумма: 15

Получается, наш раунд длится 19 квантов времени.
  • 19: Текущая инициатива Анастаса максимальна. Он стреляет из лазерного пистолета «Сильф» в оборотня. Стоимость атаки 4 ap (но в обойме всего 6 патронов) и съезжает по шкале инициативы до 15;
  • 15: Одинаковая инициатива и у оборотня, и у Анастаса. Оба начинают действовать одновременно: Анастас стреляет, оборотень прыгает на Анастаса (рассчитывая повалить его на землю). Пока их действия длятся, таймер инициативы тикает «вниз», к нулю;
  • 12: Дело доходит до витязя Добрыни. Он стреляет в оборотня из штурмовой винтовки «Нагльфар», короткая очередь стоит 6 ap.1. К концу его действия оборотень получит ему причитающееся.
  • 11: Анастас заканчивает выстрел и замечает, что оборотень прыгает к нему. И отскакивает в сторону, тратя 2 ap.
  • 10: Полностью уклониться от атаки Анастасу не удается — он закончит отпрыгивать позже, чем оборотень приземлится на него 2. Оборотень атакует Анастаса лапой. Это больно, но у нашего товарища Блэка отличный бронежилет.3
  • 9: Анастас закончил отпрыгивать и стреляет в оборотня из «сильфа».
  • 7: Оборотень снова бьет Анастаса.
  • 6: Оборотень ловит все шесть пуль «Нагльфара» и чувствует себя очень неуютно.
  • 5: Анастас начинает свой последний выстрел в этом раунде — прицеливается и нажимает на курок.
  • 4: Оборотень наносит из последних сил наносит удары лапами.
  • 1: Анастас делает последний выстрел в раунде. Оборотень наносит последний удар в раунде.
  • 0: Вторая очередь Добрыни практически разрывает оборотня в клочья. Раунд заканчивается.

В следующем раунде мы бы опять кидали d6, определяли очередность действий — с учетом эффектов из предыдущего раунда — и продолжили бы бой4.

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



На самом деле все немного хитрее :)

Бой слишком скоротечен, чтобы в нем можно было принимать осознанные решения. 19-20 action points укладываются в полторы-две секунды. Персонажи действуют инстинктивно, а последовательность заявок выглядит так:
— Кидайте инициативу.… Ага, первый Анастас, потом оборотень, потом Добрыня.
— Стреляю в оборотня из «Сильфа».
— Даю в оборотня короткую очередь.
— Ага… так, Анастас, оборотень прыгает на тебя.
— Отскакиваю и продолжаю стрелять.
— Ага. Оборотень пытается приземлиться на тебя, уворачивайся… увернулся. Добрыня?
— Стреляю, стреляю. Я думаю, две короткие очереди я выпустить успею, а там посмотрим.

Ага. За этот раунд произошло следующее: ....

Фактически, реальные результаты своих действий игроки узнают в конце раунда.

Что интересно, эта схема отлично работает как для чисто магических боёвок, так и для боёвок смешанных — один кастует, другой бьет мечом. Просто триггерные заклинания (запускаемые по триггеру, к примеру, щелчком пальцев) требуют мало AP, а кастуемые (создаваемые) непосредственно в процессе боя — десятки AP (до сотен AP, то есть волшебник стоит и колдует, а остальные его прикрывают).5

На первый взгляд, система выглядит сложной, но после 3-4 боёвок очередность действий считается очень быстро и «на глазок».



(1) На самом деле в каждый из 6 тайм-тиков винтовка выпускает по одной пуле, но мы упростим задачу и скажем, что все 6 пуль покинули винтовку и попали в цель одновременно. А вычисление эффективности попадания вообще оставим за кадром.
(2) Здесь происходит проверка боевой механики (атака против пассивного уворота), но детали я оставляю за кадром. Скажу лишь, что Анастас, благодаря своей высокой ловкости, увернулся успешно. Да и дальнейшие атаки оборотня попали не все:
(3) Опять проверки игромеханики: атака волка против сложности. В любом случае, Анастаса спасает отличный бронежилет, поглощающий большую часть урона. Но несколько синяков десантник получит.
(4) Непотраченные action points не переносятся в следующий раунд, хотя есть специальные приёмы типа «прицеливание» (трачу все AP в этом раунде, чтобы прицелиться из снайперки и получить +3 на эффективность).
(5) На этом этапе игроки рвутся «оптимизировать» систему: как же так, я же волшебник, у меня инициатива не по ловкости определяется, а по интеллекту!. Пару раз сломав моск на пересчетах типа «а как быть, если он сначала кастует, а потом бьет кинжалом — как тут считать инициативу?» я мастерской волей запретил смешанные раунды — или кастуешь или рубишься. Иначе игра превращается в жонглирование цифирями, а это немного не то.




Как вы думаете, какие в этой схеме есть дыры, которые я упустил или не описал?
  • нет
  • avatar
  • +6

43 комментария

avatar
Одну дыру уже сам описал.
Если маг хочет быстренько бросить заготовленный во вражину огнешар, а на попытку оппонента сократить дистанцию делает заявку «пыряю его острой железкой», а смешанные раунды запрещены Именем Его, то что будет? Магу стоять, кастовать, пока его режут остаток раунда, или позорно бегать, когда можно завершить противостояние одним выпадом?

Алсо, вопрос. Что происходит, если человек говорит «отпрыгиваю» [да что угодно помимо прыганий], но у него не хватает 1 AP на завершение действия? Он не может сделать ничего? Он начинает движение в этот раунд и заканчивает в следующем?

но мы упростим задачу
Мне кажется, зря. Иногда жизненно-важная разница — успел прибить гада до того, как он до тебя добежал\ударил\etc, или не успел.
avatar
если человек говорит «отпрыгиваю» [да что угодно помимо прыганий], но у него не хватает 1 AP на завершение действия?
На самом деле он не начинает действие :)

Но в играх практически происходит второе —
Он начинает движение в этот раунд и заканчивает в следующем.

… то есть в следующем раунде его инициатива будет модифицирована этим действием.

Если маг хочет быстренько бросить заготовленный во вражину огнешар, а на попытку оппонента сократить дистанцию делает заявку «пыряю его острой железкой»
Ну пускай кидает в него огнешар :)

На самом деле это приводит к ситуации, когда маг с высоким интеллектом выигрывает инициативу, скажем, получив 25 AP. Кидает огнешар, потратив, скажем, 5 AP и имеет 20 AP, которые теперь хочет потратить на тыканье кинжалом.

Но — наш маг — грузный толстяк с низкой ловкостью. Его AP для физических действий находятся где-нибудь в пределах 4+к6 (5..10). Да еще и кинжалом он плохо владеет. А собирается тратить ментальные action points на физические действия.

Собственно остальные файтера были очень даже против такого перекоса, заявив, что это еще более недостоверная ситуация, чем невозможность в одном раунде и кастовать, и рубить мечом.
avatar
тратить ментальные action points на физические действия.
Вот таких вывертов точно не должно быть, имхо. Вероятно, нужно отделить инициативу от количества очков действия. Или выбросить что-то одно — раунд или инициативу.
А для мага можно вот что попробовать. Кол-во физических АП у него считается как у всех прочих. Если он хочет делать ментальное и физическое — считаем, сколько физических АП он потратит на ментальное действие: делим кол-во ментальных на кол-во физических.
avatar
Вероятно, нужно отделить инициативу от количества очков действия.
Не хочется ;)

считаем, сколько физических АП он потратит на ментальное действие: делим кол-во ментальных на кол-во физических.
Да, и так мы тоже делали. :) Смотри пятое примечание — после третьего за одну боевку пересчета ментальных раундов в физические и обратно…

В общем, эту дыру в механике я знаю и игроки её тоже знают. По молчаливому согласию мы её обходим.

Кроме того, как правило, боёвки по этой схеме длятся 1.5 — 2.5 раунда (полраунда на добивание). Позиционные бои используют совсем другую схему (а точнее никакой не используют).
avatar
мы её обходим.
Вот я и спрашиваю — как в данном случае её обходить:
Магу стоять, кастовать, пока его режут остаток раунда, или позорно бегать, когда можно завершить противостояние одним выпадом?

Не хочется

Т.е. ты спрашиваешь про дыры, но делать с ними ничего не хочется? оО Ну на нет и суда нет.
Других дыр мне не видать, если эту закрыли соц.договором — то и чёрт с ней.
avatar
Вероятно, нужно отделить инициативу от количества очков действия.
Это будет уже совсем другая система. А я хочу остаться в рамках этой.

Других дыр мне не видать, если эту закрыли соц.договором — то и чёрт с ней.
Спасибо за фидбэк.

или позорно бегать, когда можно завершить противостояние одним выпадом?
Позорно бегать :) Потому что маг, допустивший такое… уже потенциально мертвый маг.

Честно говоря, схема не решает проблем в случае «боевых магов» или «блейдсингеров» (кастующих файтеров), но что с этим можно сделать, я не знаю.
avatar
А ИМХО делить количество ментальных на количество физических чтобы получить некий коэффициент и списывать при физических действиях мага ментальные АП не в чистом виде, а помноженные на этот самый коэффициент — хорошая идея.
avatar
Да, но не для расчетов на коленке. Именно так и пробовали.

Фишка в том, Никита, что если сначала бьем кулаком, потом кастуем, потом опять бьем кулаком — такое преобразование нужно делать дважды.

Хотя есть вариант: — не делить, а умножать :)
Я, наверное, сейчас глючу (поутру то, ага!), но мы можем
MP * AP
И из полученного числа вычитать:
для физического действия: стоимость в AP * MP
для ментального действия: стоимость в MP * AP
Бред?
avatar
ИМХО, проще: берем основной параметр… Для мага — интеллект, для файтера — ловкость. А вообще по выбору персонажа кто он сейчас скорее — его проблемы. Допустим это маг с интеллектом 12 и ловкостью 6. Получаем некий K=12/6=2. Дальше если он кастует что-то, требующее 6 AP списываем 6 AP, если он бьет кулаком, что требует 3 AP по вторичному параметру списываем 3*2=6 AP. Всё.
avatar
Твоими устами, да медок бы…

А если это маг с интеллектом 13 и ловкостью 7 — более распространенный случай.
Или маг с интеллектом14 и ловкостью 9?

по выбору персонажа кто он сейчас скорее — его проблемы.
К сожалению, это мои проблемы. Потому что считать то мне, а не игроку.
avatar
Ну и ладно, коэффициент будет 13/7, т.е. 1,85. Округляй в большую сторону.
avatar
Дипломатично: Мне эта идея кажется неудачной.

Попросту говоря — уже так пробовали. С калькулятором все получается просто. А на коленке, с ручкой и бумажкой простая боёвка превращается в жонглирование цифирью.
avatar
Привязать изолентой к коленке калькулятор? =)
avatar
Ну хорошо, запостулируй, что все цифры играющие против игроков округляются до целых в бОльшую сторону, все, играющие за них — в меньшую (для борьбы с манчкинством). Исключение — если параметры отличаются ровно на единицу, тогда коэффициент считается равным ровно 1. Тогда обычный маг 14-10 бить кулаком в тот раунд, когда кастует будет как бы по скиллам 14-7, это конечно не выгодно, но хотя бы возможно. А боевые маги будут качать параметры поровну — иначе не выгодно. И для конкретно боевых магов будет реально без разницы по какому из параметров считать инициативу. В начале боя заявляешь магу с интеллектом 14 и ловкостью 3, что на удар кулаком он тратит в 5 раз больше ОД, чем положено и пускай дальше сам думает. Опять же, боевой маг с 10 и 11 будет действовать как будто у него 11-11, но ИМХО это не странно напрочь, учитывая странность класса и то, что ему реально надо качать оба параметра. А если выкачается в 10-12, то с учетом округления начнет действовать как 6-12 или 10-5 в зависимости от того, кем себя в этом раунде заявил, т.е. как обычный маг или обычный файтер. Ибо нефиг. И тогда на мой взгляд система лишается последнего недочета и становится реально доделанной. :)
avatar
Хм. Нужен плейтест.
avatar
Ну пускай кидает в него огнешар :)

Эээ. А вторая заявка куда денется?
avatar
Что если заранее, на этапе генерации, задать перерасчёт между АП и МП в табличной форме? Это будет всего одна табличка 1-20, о трёх строчках. Или две по две строчки.
На начало игры это потребует калькулятора, но один раз. Можно программку написать.)) А во время игры это будет «глянуть в табличку», очень быстро.
avatar
Можно экселем воспользоваться :)

Да, как вариант. Когда у меня снова заведутся маги — я обязательно воспользуюсь этим советом :)
Да, 4 строчки: MP->AP и AP->MP.

А ведь еще могут завестись псионики, у которых экшен поинты могут считаться по воле %)
avatar
В первой строчке числа от 1 до 20, во второй их перевод MP->AP, в третьей их же перевод AP->MP. А четвёртая зачем?

А ведь еще могут завестись псионики, у которых экшен поинты могут считаться по воле %)
Ещё две строчки добавить.))
avatar
… в третьей их же перевод AP->MP. А четвёртая зачем?
А чтобы не запутаться и случайно не взять число из неправильной строчки. Юзабилити же!


Но на самом деле я осознал, что это бесполезно! :(

Ведь у нас инициатива зависит от ежераундового броска +d6. И это мы еще упростим ситуацию, считая, что один бросок d6 одинаково модифицирует и ментальную инициативу, и ловкостную.

Поэтому выручит нас только калькулятор… или js-скрипт :)
avatar
Говорил я тебе — отвяжи инициативу от AP и вычеркни понятие «раунд» :DD
только калькулятор… или js-скрипт
А excel разве не справится?
avatar
Ну смотри сам: представь себе систему координат, в простейшем случае трехмерную.

По оси абсцисс — AP 1..20
По оси ординат — MP 1..20
По оси аппликат — 1..20 — интересующее нас преобразуемое значение.

Тогда результат преобразования будет находиться по координатам {X, Y, Z}

При этом каждый элемент плоскости {XY} равен отношению (алгебраическому) своих координат, т.е.

{XY}[ x, y ] = y/x

Тогда ячейка с координатами (x,y,z) будет содержать значение
z * (y / z)
Ферштейн? На плоскости координат {x,y} мы выясняем соотношение каждой возможной AP-инициативы с каждой возможной MP-инициативой, а по оси аппликат получаем нужное значение преобразования.

По моему это проще на JS закодить: два селекта с текущими значениями AP и MP и рядом динамически обновляемая табличка с соответствующим результатом перемножения :)

P.S. Геометр, прости меня за очень вольное обращение с математическими обозначениями!
avatar
Кажется, это действительно проще закодить.
avatar
Да собственно:
jsfiddle.net/Arris/hqtnx1bs/
avatar
mistype
avatar
Мне кажется, тут стоит совершить следующий логический шаг и отказаться от понятия «раунда», как в наработках Maskrow в соседней ветке. Правда, тогда получится практически старый добрый ETUCS.

В текущем варианте непрерывные серии действий получаются разделены паузами (типа «замешкался»), которые разной длины у разных персонажей, в зависимости от инициативы, но при этом у всех персонажей синхронизированы (приходятся на начало раунда) и никак не зависят от характера совершаемых ими действий. Например, если в 1-м раунде герой делает три одиночных выстрела, а во 2-м ещё раз стреляет в ту же цель, после чего кидает гранату и бежит к следующему укрытию, то шанс замешкаться у него появляется между 3-м и 4-м выстрелами, а не перед броском гранаты или срыванием с места, что как-то нелогично.
avatar
Хорошая система, играли по чему-то подобному.
Проблема возникает, если действуют персонажи которые значительно быстрее других.
Допустим, у десантников инициатива 10, у оборотня 20. Получается что сначала оборотень делает 2-3 атаки, от которых десантники не могут уклониться (их тики еще не пришли), потом враги бьются на равных, а в следующем раунде оборотень снова получает «неуклоняемые» атаки.
Получается, будто из каждого 2-х (например) секундного раунда десантники одну секунду не делают ничего.
avatar
Получается что сначала оборотень делает 2-3 атаки, от которых десантники не могут уклониться (их тики еще не пришли)
Нет-нет, могут. В том то и дело — действует механика «пассивного уворота».

Атака оборотня идет как:
к6 + эффективность его навыка атаки VS сложность
сложность определяется на основе ловкости персонажа и каких-то штрафов/бонусов.
А эффективность атаки оборотня… ну у него есть свой навык «Оборотень: когти», который он «прокачал» за свою жизнь до какого-то уровня. Молодой оборотень, к примеру, атакует на уровне basic, матёрый — на уровне master.

На такие атаки десантники не успевают адекватно реагировать.

Опять же — возможны внезапные атаки, атаки из засады — когда стрелы в тебя влетают раньше, чем ты соображаешь, откуда стреляют.
avatar
Получается, будто из каждого 2-х (например) секундного раунда десантники одну секунду не делают ничего.
Мм, сообразил.
На самом деле эта схема пытается в перевести относительное время десантников и оборотня я в абсолютное, которое проще считать (допустим, раунд длится 2 секунды).

Фактически, если у оборотня 20 AP, то его 1 AP длится 0.1 секунды.
Если у десантника 10 AP, его AP длится 0.2 секунды.
На самом деле, заявив действия, они все действуют одновременно или практически одновременно, просто реагируют в разные моменты времени — десантники позже, оборотень раньше.
avatar
Герасимову:

Мне кажется, тут стоит совершить следующий логический шаг и отказаться от понятия «раунда»

Да, мы конечно же думали об этом. :)
Фактически, это переход к линейке инициативы как в HMM4.

Например, если в 1-м раунде герой делает три одиночных выстрела, а во 2-м ещё раз стреляет в ту же цель, после чего кидает гранату и бежит к следующему укрытию, то шанс замешкаться у него появляется между 3-м и 4-м выстрелами,

Да, вижу.
Я вижу решение этой проблемы, но оно уводит нас от рисования линейки инициативы на коленке — уводит в сторону программной модели.

Есть и другой вариант — раунд длится строго определенное время, но 1 экшен поинт у разных персонажей длится разное время (равное длине раунда / кол-во AP в раунде). То есть относительное время разное. Но эта идея пригодна скорее для компьютерной игры, на коленке я такое быстро не посчитаю — чтобы у одного экшенпоинт длился на 17% меньше, чем у другого.
avatar
Как раз где-то месяц назад продумывал приблизительно такую же боёвку. Если что, что-то похожее ещё используется в Final Fantasy XIII. Но только там у тебя есть несколько слотов действий, которые ты можешь заполнить действиями разной цены.
  • CY
  • 0
avatar
Идея просто отличная. Но, как мне кажется, либо несколько громоздкая, либо скатывается в прикидки на глаз и на коленке, что сильно ее обесценивает? Как раунд физически происходит? мастер чертит табличку вроде той, которую ты привел или все делается в уме?
avatar
Плюсану. Сложно и зачем вообще д6?
avatar
и зачем вообще д6?
А какой надо? :)

Вообще по моим наблюдениям, d6 кубик самый популярный… и самый простой в изготовлении.
avatar
зачем его прибавлять к инициативе?
avatar
Чтобы дать человеку с базовой инициативой 10 походить раньше человеку с базовой инициативой 12.

Базовая инициатива зависит (в рамках этой системы) от физической подвижности (ловкости). Но в «начале» каждого раунда кто-то может слегка прослоупочить и начать действовать позже.

Ферштейн?
avatar
кто-то может слегка прослоупочить и начать действовать позже.
Вопрос был не об очевидных вещах, которые спасибо что объяснил все равно, бро, а про почему кто-то может прослоупочить?
avatar
а про почему кто-то может прослоупочить?
Прости, но по моему это слишком очевидный вопрос, чтобы на него требовался ответ.

А почему одни люди, переходя дорогу, осматриваются 10 секунд, а другие — 20?
avatar
А твой вопрос связан с интересующим меня? Потому что я не вижу, как.
avatar
Я не вижу, как можно ответить на настолько очевидную вещь, кроме как привести аналогию.
avatar
Люди-человеки, не деритесь, лучше перефразируйте вопросы-ответы. Не могу понять, о чём у вас разговор.
avatar
Вполне нормальный поиск «золотой середины» в дилеме:
«каждое действие громоздкое, легко и быстро обсчитываются» vs «мелкие атомарные дествия, обсчитывать долго».
Хорошая годная техника для системы, в которой с каждой стороны мало противников, бой длится 1-2 (реже 3) раундов.

Как уже писали выше — следующий шаг:
— отказаться от циклических раундов вообще, оставив временную шкалу в time-points
— назначить каждому действию число затрачиваемых time-points,. Персонаж начинает действовать в следующем time-point после того, когда он закончил предыдущее.
— одновременно начинающиеся\заканчивающиеся действия резолвятся одновременно и независимо (одновременно стартующие персонажи не знают, какое действие начинает другой персонаж).
— поскольку во время действия персонаж не реагирует (или частично реагирует) на чужие, то за «долгие» действия надо давать прогрессивный бонус. Скажем 1 выстрел — 1time-point. Выстрел очередью 10 патронов — 5time-points.
avatar
бой длится 1-2 (реже 3) раундов.
Да, так и есть.

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

За остальные советы — спасибо.

(одновременно стартующие персонажи не знают, какое действие начинает другой персонаж).
Да, табличку инициативы игроки как правило не видят и заявляют действия с подачи мастера:
Так… оборотень бежит, Анастас стреляет, Добрыня, а ты что делаешь?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.