Математика Balatro
https://www.mattgreer.dev/blog/balatro-score-growth/
Любопытный разбор: Matt Greer раскладывает рост счёта в Balatro на функции. Всё считается на одной двойке, сыгранной старшей картой: (5 + 2) × 1 = 7 очков, дальше r — номер раунда.
Wee Joker прибавляет по 8 фишек за раунд — это 8r + 7. Swashbuckler с Egg прибавляют по 3 множителя — 21r + 7. Цифры разные, класс один: прямая. А нужный счёт растёт каждый раунд, и колода на прямой за ним не поспевает — автор так и пишет, что линейный рост (или его отсутствие) это ранний сигнал спасать забег.
Качаем обе половины сразу — получается парабола. Pluto даёт старшей карте +10 фишек и +1 множителя, счёт становится 10r² + 17r + 7. Почти весь Balatro живёт здесь.
И тут собственно главное — про умножающих джокеров. Сколько растит Cavendish сам по себе? Нисколько. Он превращает 7 в 21 и на этом останавливается, а Hologram в одиночку растит счёт всего лишь линейно. Умножающие работают на чужом накоплении: Swashbuckler с Cavendish — это как три Swashbuckler'а, добавьте Card Sharp — как девять.
Экспонента начинается там, где номер раунда уезжает в показатель степени. Baseball Card даёт ×1.5 каждому необычному джокеру: берём по такому за раунд — и счёт растёт как 7 × 1.5ʳ. Разгоняется он медленно, связку Wee/Swashbuckler/Egg обходит только к 19-му раунду. Triboulet удваивает множитель за каждого сыгранного короля или даму, и каждый ретриггер удваивает ещё раз. Основание 2 вместо 1.5 выглядит мелочью — а на 24-м раунде это 7 340 039 очков против 23 283 у Baseball Card. В реальной руке автора множитель вырос в 2⁴⁰ раз, то есть больше чем в триллион. На взломанной колоде счёт дошёл до NaN: число стало настолько большим, что игра перестала его считать :)
Из практического — фишки и множитель надо держать поближе друг к другу: 1 × 100 это всего 100, а 50 × 50 — уже 2500.
В общем, джокер в магазине покупается не за числа на нём, а за класс роста, который он даёт колоде.
#devmath #balance #math #gamedesign #balatro
https://www.mattgreer.dev/blog/balatro-score-growth/
Любопытный разбор: Matt Greer раскладывает рост счёта в Balatro на функции. Всё считается на одной двойке, сыгранной старшей картой: (5 + 2) × 1 = 7 очков, дальше r — номер раунда.
Wee Joker прибавляет по 8 фишек за раунд — это 8r + 7. Swashbuckler с Egg прибавляют по 3 множителя — 21r + 7. Цифры разные, класс один: прямая. А нужный счёт растёт каждый раунд, и колода на прямой за ним не поспевает — автор так и пишет, что линейный рост (или его отсутствие) это ранний сигнал спасать забег.
Качаем обе половины сразу — получается парабола. Pluto даёт старшей карте +10 фишек и +1 множителя, счёт становится 10r² + 17r + 7. Почти весь Balatro живёт здесь.
И тут собственно главное — про умножающих джокеров. Сколько растит Cavendish сам по себе? Нисколько. Он превращает 7 в 21 и на этом останавливается, а Hologram в одиночку растит счёт всего лишь линейно. Умножающие работают на чужом накоплении: Swashbuckler с Cavendish — это как три Swashbuckler'а, добавьте Card Sharp — как девять.
Экспонента начинается там, где номер раунда уезжает в показатель степени. Baseball Card даёт ×1.5 каждому необычному джокеру: берём по такому за раунд — и счёт растёт как 7 × 1.5ʳ. Разгоняется он медленно, связку Wee/Swashbuckler/Egg обходит только к 19-му раунду. Triboulet удваивает множитель за каждого сыгранного короля или даму, и каждый ретриггер удваивает ещё раз. Основание 2 вместо 1.5 выглядит мелочью — а на 24-м раунде это 7 340 039 очков против 23 283 у Baseball Card. В реальной руке автора множитель вырос в 2⁴⁰ раз, то есть больше чем в триллион. На взломанной колоде счёт дошёл до NaN: число стало настолько большим, что игра перестала его считать :)
Из практического — фишки и множитель надо держать поближе друг к другу: 1 × 100 это всего 100, а 50 × 50 — уже 2500.
В общем, джокер в магазине покупается не за числа на нём, а за класс роста, который он даёт колоде.
#devmath #balance #math #gamedesign #balatro
🔥4❤🔥2✍2
Мы же всё таки о том зачем нужна математика. И пока сидим в теме рогаликов возьмём формулы относящиеся к этому жанру. Конечно больше математики в тайкунах и айдл играх, но тут тоже есть свой набор формул.
Я выделил 10 формул связанных с балансом, с дропрейтом, с боями с врагами, с балансом забега и с работой предметов, чтобы они были под рукой когда потребуются.
Думаю завтра вернуться немного к теме брони, напишу небольшую заметку на воскресенье, чтобы в выходные сильно вас не грузить. И пока размышляю о чём таком интересном написать в следующей статье.
Есть идея написать статью как пользоваться этими формулами с более подробными примерами. Давайте так, собираем на этом посте 20
#devmath #balance #roguelike #math
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9 1 1 1
Зачем нужна броня, если есть здоровье
Закроем тему брони в играх. Мы разобрали как она работает и на каких формулах. Но зачем она нужна?
Возьмите любую игру с бронёй и посчитайте эффективное здоровье: сколько урона персонаж выдержит до смерти. Получится одно число. И тут резонный вопрос: если всё сводится к одному числу, зачем два стата? Дайте игроку здоровье и не морочьте голову.
Ответ: броня отличается от здоровья не тем, сколько EHP даёт, а тем, против чего и вместе с чем.
Против чего. Броня в LoL режет физический урон по 100/(100+R). Магию не трогает, true damage проходит насквозь. Значит, у одного и того же персонажа EHP против одного противника одно, против другого другое, и появляется выбор, что покупать. У здоровья выбора нет: оно одинаково хорошо против всего.
Вместе с чем. Хил на 100 при 50% снижения урона восстанавливает 200 эффективного здоровья. Броня умножает каждое лечение и каждую регенерацию, здоровье не умножает ничего. Xypherous из Riot ещё в 2013 писал, что резисты «magnify the effect of your other self-healing, resistance and regeneration effects». Это и есть разница между толстым и танком: танка дешевле держать живым.
А здоровье ещё и кормит противника. Против Warwick'а 4000 здоровья не помогают, а 100 магического сопротивления помогают: «Your health pool is becoming their health pool». Броню можно пробить, и это отдельный слой контрмер. Здоровье пробить нельзя.
Плоская броня добавляет ещё одну ось. В Overwatch она не делит, а вычитает по 10 с каждого попадания. Пулемёт с мелкими пулями теряет половину урона, снайпер почти ничего. Тут EHP зависит не от суммы урона, а от того, как он нарезан.
В общем, EHP это итог, а не стат. Броня делает итог зависимым от контекста. Если контекста нет, один тип урона, нет лечения, нет пробития, то броня и правда лишний шаг, и её спокойно выкидывают, оставляя здоровье и щит.
#devmath #balance #gamefeel #gamedesign #armor
Закроем тему брони в играх. Мы разобрали как она работает и на каких формулах. Но зачем она нужна?
Возьмите любую игру с бронёй и посчитайте эффективное здоровье: сколько урона персонаж выдержит до смерти. Получится одно число. И тут резонный вопрос: если всё сводится к одному числу, зачем два стата? Дайте игроку здоровье и не морочьте голову.
Ответ: броня отличается от здоровья не тем, сколько EHP даёт, а тем, против чего и вместе с чем.
Против чего. Броня в LoL режет физический урон по 100/(100+R). Магию не трогает, true damage проходит насквозь. Значит, у одного и того же персонажа EHP против одного противника одно, против другого другое, и появляется выбор, что покупать. У здоровья выбора нет: оно одинаково хорошо против всего.
Вместе с чем. Хил на 100 при 50% снижения урона восстанавливает 200 эффективного здоровья. Броня умножает каждое лечение и каждую регенерацию, здоровье не умножает ничего. Xypherous из Riot ещё в 2013 писал, что резисты «magnify the effect of your other self-healing, resistance and regeneration effects». Это и есть разница между толстым и танком: танка дешевле держать живым.
А здоровье ещё и кормит противника. Против Warwick'а 4000 здоровья не помогают, а 100 магического сопротивления помогают: «Your health pool is becoming their health pool». Броню можно пробить, и это отдельный слой контрмер. Здоровье пробить нельзя.
Плоская броня добавляет ещё одну ось. В Overwatch она не делит, а вычитает по 10 с каждого попадания. Пулемёт с мелкими пулями теряет половину урона, снайпер почти ничего. Тут EHP зависит не от суммы урона, а от того, как он нарезан.
В общем, EHP это итог, а не стат. Броня делает итог зависимым от контекста. Если контекста нет, один тип урона, нет лечения, нет пробития, то броня и правда лишний шаг, и её спокойно выкидывают, оставляя здоровье и щит.
#devmath #balance #gamefeel #gamedesign #armor
❤🔥6✍3