Dev Math
660 subscribers
138 photos
3 videos
5 files
76 links
Как на самом деле создаются игры. Как сделать игру интересной и реализовать технически. А главное причём тут математика?

Разборы на пальцах, рабочий код, интерактивы. dev-math.ru

Сотрудничество: @it_bizdev
Download Telegram
Математика 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
🔥9111
Зачем нужна броня, если есть здоровье

Закроем тему брони в играх. Мы разобрали как она работает и на каких формулах. Но зачем она нужна?

Возьмите любую игру с бронёй и посчитайте эффективное здоровье: сколько урона персонаж выдержит до смерти. Получится одно число. И тут резонный вопрос: если всё сводится к одному числу, зачем два стата? Дайте игроку здоровье и не морочьте голову.

Ответ: броня отличается от здоровья не тем, сколько 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