А нужна ли математика?
Есть по сути два способа сделать игру. "На глаз" и "с крутыми инструментами". Строго говоря, игру можно сделать без математических инструментов. После релиза можно править косяки по аналитике и вносить правки патчами (кстати тоже не всегда, так как вы можете неправильно посмотреть и понерфить предмет, а он был оверпавер только в связке с другим из-за мультипликатора и сломать другие сборки персонажей, скажем).
Математика заранее помогает отслеживать:
1. Редкие события. Ломает игру не медианный ран, а один процент сборок. Чтобы встретить событие с вероятностью 1/500 руками, нужны месяцы; симулятору нужны минуты.
2. Позволяет смоделировать некоторые процессы и логику геймплея без аудитории.
3. Поиск аномалий. В роуглайках, скажем, какая пара предметов и синергии дают на порядок выше остальных. И это не всегда плохо, игроку может "везти", и это тоже часто используется, но для того чтобы знать, что аномалии есть и где они, — проще смоделировать, нежели бегать 10к забегов самому.
4. Можно ломать бесплатно. Меняя коэффициенты в модели, она не пожалуется, что "вы сломали игру". А выпуская патч с изменением баланса на живую аудиторию вслепую — вы узнаете о себе часто много нового.
Кстати говоря, в сингл-плеере это не так критично. Сломанный баланс не ухудшает опыт игрока, так как какая-то оверпавернутая комба не обидит компьютер, против которого мы играем. А когда компьютер почему-то слишком силен, может восприниматься просто хардкорной сложностью игры. Но в пвп дела обстоят иначе. Любой сильный дисбаланс вызывает много негатива и ломает игру. Поэтому в пвп чаще пользуются инструментами математического баланса.
Но математическое моделирование не серебряная пуля. Симулятор моделирует не игру, а ваше представление о ней. Слабое звено — модель игрока: он либо жадный по локальной эвристике, либо случайный, и оба не похожи на человека. Баланс, настроенный под бота, ломается о людей, которые ищут не то, что ищет бот. Win rate 25% может быть выстраданной победой, а может — скукой. Ну и, конечно, математические модели не находят того, чего нет в правилах. Эксплойты живут на стыке механики и реализации: неожиданный порядок выполнения, баг, взаимодействие, которое никто не закладывал.
У игр нет формальных доказанных теорем, как сделать что-то интересным. А при этом главный критерий оценки качества игры — в неё интересно играть. Математика предоставляет инструменты, чтобы построить это ощущение и не сломать его ненароком + улучшать там, где надо. А ощущение от игры вы подстраиваете всегда под свой геймплей самостоятельно. И если интуиция вырабатывается насмотренностью — надо просто играть в хорошие игры, то математика — это инструмент, изучив который, многое вы начинаете делать быстрее и проще.
P.S. Математика всё равно есть в любой вашей игре, потому что это не что-то, что надо "вносить". Сама по себе она всего лишь описывает и моделирует различные процессы. Поэтому крутую игру можно сделать и без неё, но с ней проще. Это по своей сути язык, на котором окружающий мир говорит с теми, кто этот язык понимает.
#devmath #gamefeel #math
Есть по сути два способа сделать игру. "На глаз" и "с крутыми инструментами". Строго говоря, игру можно сделать без математических инструментов. После релиза можно править косяки по аналитике и вносить правки патчами (кстати тоже не всегда, так как вы можете неправильно посмотреть и понерфить предмет, а он был оверпавер только в связке с другим из-за мультипликатора и сломать другие сборки персонажей, скажем).
Математика заранее помогает отслеживать:
1. Редкие события. Ломает игру не медианный ран, а один процент сборок. Чтобы встретить событие с вероятностью 1/500 руками, нужны месяцы; симулятору нужны минуты.
2. Позволяет смоделировать некоторые процессы и логику геймплея без аудитории.
3. Поиск аномалий. В роуглайках, скажем, какая пара предметов и синергии дают на порядок выше остальных. И это не всегда плохо, игроку может "везти", и это тоже часто используется, но для того чтобы знать, что аномалии есть и где они, — проще смоделировать, нежели бегать 10к забегов самому.
4. Можно ломать бесплатно. Меняя коэффициенты в модели, она не пожалуется, что "вы сломали игру". А выпуская патч с изменением баланса на живую аудиторию вслепую — вы узнаете о себе часто много нового.
Кстати говоря, в сингл-плеере это не так критично. Сломанный баланс не ухудшает опыт игрока, так как какая-то оверпавернутая комба не обидит компьютер, против которого мы играем. А когда компьютер почему-то слишком силен, может восприниматься просто хардкорной сложностью игры. Но в пвп дела обстоят иначе. Любой сильный дисбаланс вызывает много негатива и ломает игру. Поэтому в пвп чаще пользуются инструментами математического баланса.
Но математическое моделирование не серебряная пуля. Симулятор моделирует не игру, а ваше представление о ней. Слабое звено — модель игрока: он либо жадный по локальной эвристике, либо случайный, и оба не похожи на человека. Баланс, настроенный под бота, ломается о людей, которые ищут не то, что ищет бот. Win rate 25% может быть выстраданной победой, а может — скукой. Ну и, конечно, математические модели не находят того, чего нет в правилах. Эксплойты живут на стыке механики и реализации: неожиданный порядок выполнения, баг, взаимодействие, которое никто не закладывал.
У игр нет формальных доказанных теорем, как сделать что-то интересным. А при этом главный критерий оценки качества игры — в неё интересно играть. Математика предоставляет инструменты, чтобы построить это ощущение и не сломать его ненароком + улучшать там, где надо. А ощущение от игры вы подстраиваете всегда под свой геймплей самостоятельно. И если интуиция вырабатывается насмотренностью — надо просто играть в хорошие игры, то математика — это инструмент, изучив который, многое вы начинаете делать быстрее и проще.
P.S. Математика всё равно есть в любой вашей игре, потому что это не что-то, что надо "вносить". Сама по себе она всего лишь описывает и моделирует различные процессы. Поэтому крутую игру можно сделать и без неё, но с ней проще. Это по своей сути язык, на котором окружающий мир говорит с теми, кто этот язык понимает.
#devmath #gamefeel #math
🔥6😁2
Математика 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
Контрпики в балансе устроены как камень-ножницы-бумага: каждый юнит кого-то бьёт и кому-то проигрывает.
Возьмите три кубика. Красный: 3 3 3 3 3 6. Синий: 2 2 2 5 5 5. Оливковый: 1 4 4 4 4 4. Каждый бросает свой кубик по разу, у кого больше, тот победил. Каждый бросает свой, у кого больше, тот победил. «Бьёт» значит «выигрывает больше половины партий». Красный бьёт синего, синий бьёт оливкового, оливковый бьёт красного. Сильнейшего нет.
А теперь пусть каждый бросает дважды и складывает. Круг разворачивается: синий бьёт красного, оливковый бьёт синего, красный бьёт оливкового. Грани те же.
Почему? Возьмём синий против красного. У красного почти всегда выпадает 3. При одном броске синему нужна пятёрка, а она выпадает в половине бросков. При двух бросках красный обычно набирает 3 + 3 = 6, а синему хватает одной пятёрки из двух: 5 + 2 = 7. Хотя бы одна пятёрка из двух бросков выпадает в трёх случаях из четырёх.
В общем, одно число вроде среднего урона не говорит, кто кого бьёт. Это видно, только если стравить пару друг с другом, и по тем правилам, по которым идёт бой.
Почему так бывает не со всеми кубиками, разберу отдельно. Да и давайте на этой неделе поговорим про что-то математическое вроде баланса в боевках.
Ставьте
#devmath #gamedesign #battle #math
Please open Telegram to view this post
VIEW IN TELEGRAM