Угадай патч
https://dev-math.ru/patch/
Сделал небольшой интерактивчик. Угадай патч. Можно угадать игру из которой патчноут и дату. Хочу со временем чуть усложнить и сделать повеселее, а пока можно просто попробовать угадать. Там каждый день будет меняться то, о какой игре и каком патче речь. Сможете угадать?
*Картинка сгенерирована не по сегодняшнему патчу и подсказкой не является :)*
#devmath #интерактив
https://dev-math.ru/patch/
Сделал небольшой интерактивчик. Угадай патч. Можно угадать игру из которой патчноут и дату. Хочу со временем чуть усложнить и сделать повеселее, а пока можно просто попробовать угадать. Там каждый день будет меняться то, о какой игре и каком патче речь. Сможете угадать?
*Картинка сгенерирована не по сегодняшнему патчу и подсказкой не является :)*
#devmath #интерактив
🔥4
А нужна ли математика?
Есть по сути два способа сделать игру. "На глаз" и "с крутыми инструментами". Строго говоря, игру можно сделать без математических инструментов. После релиза можно править косяки по аналитике и вносить правки патчами (кстати тоже не всегда, так как вы можете неправильно посмотреть и понерфить предмет, а он был оверпавер только в связке с другим из-за мультипликатора и сломать другие сборки персонажей, скажем).
Математика заранее помогает отслеживать:
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
This media is not supported in your browser
VIEW IN TELEGRAM
Сломай любимую игру
https://dev-math.ru/gd-quiz/
Зачем нужно изучать геймдизайн и опираться на опыт крутых игр? Попробуйте в них что-то сломать! Больше квизов богам квизов!
Я сделал новый квиз на 10 вопросов где предлагается сломать известную игру. С объяснением почему это так работает. По сути это такое полезное геймдизайнерское упражнение позволяющее понять для чего предназначена та или иная механика в игре.
Я уверен что вайбкодинг упрощает продакшен и один человек сейчас может сделать крутую игру, но как сделать именно интересную игру надо изучать. Тут клод с кодексом вам не помогут. Они могут сделать механики, но не скажут что такое интересная комбинация механик. А это проще всего изучать разбирая примеры, изучая как делают другие. Ну и я тут в меру своих сил буду что-то рассказывать.
В общем проходите квиз, делитесь им с друзьями, делитесь результатом в комментах. Ну и ставьте🔥 конечно же, если зашел.
Я уже третий день делаю статью про процедурную генерацию уровней и она скоро выйдет. Я тут решил в ней заморочиться с интерактивом чтобы было наглядно и понятно как работает, поэтому получилось дольше чем я думал.
#devmath #quiz #gamedesign
https://dev-math.ru/gd-quiz/
Зачем нужно изучать геймдизайн и опираться на опыт крутых игр? Попробуйте в них что-то сломать! Больше квизов богам квизов!
Я сделал новый квиз на 10 вопросов где предлагается сломать известную игру. С объяснением почему это так работает. По сути это такое полезное геймдизайнерское упражнение позволяющее понять для чего предназначена та или иная механика в игре.
Я уверен что вайбкодинг упрощает продакшен и один человек сейчас может сделать крутую игру, но как сделать именно интересную игру надо изучать. Тут клод с кодексом вам не помогут. Они могут сделать механики, но не скажут что такое интересная комбинация механик. А это проще всего изучать разбирая примеры, изучая как делают другие. Ну и я тут в меру своих сил буду что-то рассказывать.
В общем проходите квиз, делитесь им с друзьями, делитесь результатом в комментах. Ну и ставьте
Я уже третий день делаю статью про процедурную генерацию уровней и она скоро выйдет. Я тут решил в ней заморочиться с интерактивом чтобы было наглядно и понятно как работает, поэтому получилось дольше чем я думал.
#devmath #quiz #gamedesign
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Forwarded from Офис студенческого предпринимательства МФТИ
Открываем набор в осенний сезон акселератора «Физтех.Идея+» ❤️
В этом сезоне два трека:
• Игровые технологии — для команд, которые разрабатывают игры, игровые технологии и решения для игровой индустрии;
• Искусственный интеллект — для проектов, создающих продукты и технологии на базе AI и машинного обучения.
За 2025 год выпускники «Физтех.Идеи» привлекли в сумме более 100 млн рублей, а в 2026 уже более 40 млн. Акселератор помогает пройти путь от идеи или научной разработки до собственного продукта, первых клиентов, грантов и инвестиций
Приглашаем студентов, аспирантов и сотрудников любых университетов., а также предпринимателей из Московской области.
Набор открыт до 19 сентября включительно.
Для подачи заявки необходимо заполнить анкету по ссылке
Мероприятие организовано в рамках Платформы университетского технологического предпринимательства федерального проекта "Технологии". В партнерстве с Министерством инвестиций, промышленности и науки Московской области по нацпроекту «Эффективная и конкурентная экономика».
В этом сезоне два трека:
• Игровые технологии — для команд, которые разрабатывают игры, игровые технологии и решения для игровой индустрии;
• Искусственный интеллект — для проектов, создающих продукты и технологии на базе AI и машинного обучения.
За 2025 год выпускники «Физтех.Идеи» привлекли в сумме более 100 млн рублей, а в 2026 уже более 40 млн. Акселератор помогает пройти путь от идеи или научной разработки до собственного продукта, первых клиентов, грантов и инвестиций
Все участники акселератора смогут:🟢 проработать свой проект вместе с опытными трекерами и отраслевыми экспертами;🟢 проверить гипотезы, определить целевую аудиторию и сформировать бизнес-модель;🟢 подготовить проект к участию в «Студенческом стартапе», «Студфесте», «Инноваторе Москвы» и других грантовых конкурсах;🟢 получить обратную связь от представителей индустрии и потенциальных партнеров;🟢 войти в закрытое сообщество предпринимателей МФТИ;🟢 получить сертификат участника акселератора.
Приглашаем студентов, аспирантов и сотрудников любых университетов., а также предпринимателей из Московской области.
Для лучших проектов программы:🟢 призы и специальные предложения от партнеров;🟢 возможность запустить пилот с индустриальными партнерами программы;🟢 письма поддержки от МФТИ и партнеров акселератора;🟢 возможность привлечения инвестиций от Стартап-студии МФТИ и партнерских венчурных фондов;🟢 дополнительные баллы в предпринимательски магистратуры МФТИ.
Набор открыт до 19 сентября включительно.
Для подачи заявки необходимо заполнить анкету по ссылке
Мероприятие организовано в рамках Платформы университетского технологического предпринимательства федерального проекта "Технологии". В партнерстве с Министерством инвестиций, промышленности и науки Московской области по нацпроекту «Эффективная и конкурентная экономика».
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Драматургия уровней с помощью математики
https://dev-math.ru/articles/wfc/
Ура! Это была сложная статья. Чтобы она была короткой, понятной и чтобы демки были интересные. Конечно больше всего я заморочился над последней. Статью я на эту тему уже писал на самом деле, тут я просто решил сильно улучшить её наглядность и сделать короче. С конкретикой как это работает и зачем это надо.
• Несколько вариантов генерации карт
• Что за зверь WFC и в чём его недостатки
• Как задавать темп процедурно генерируемым картам и причём тут энтропия Шеннона
• WFC + карты гарантия темпа, но не гарантия проходимости. Шаги постобработки в генераторах
С мини игрой в конце (на телефоне не тестил, только на компе), которая показывает как это всё может работать на бою и где можно порисовать свои карты.
В общем как всегда ставим🔥 и делимся с друзьями. Чтобы я понимал не зря ли я старался и интересен ли такой формат. + бонус к посту короткая инфографика с шагами работы алгоритма.
P.S. Забавно кстати как ещё работают связки механик. Я оставил число ходов ограниченным, что делает игру игрой на поиск оптимального решения, как пройти карту с самым большим счётом, но пройти. Если включить туман войны это хардкор режим, который ощущается нечестным (по умолчанию он выключен). А если убрать число ходов, то играть не так интересно, так как нет челенджа и мотивации.
#devmath #gamedesign #procgen #wfc
https://dev-math.ru/articles/wfc/
Ура! Это была сложная статья. Чтобы она была короткой, понятной и чтобы демки были интересные. Конечно больше всего я заморочился над последней. Статью я на эту тему уже писал на самом деле, тут я просто решил сильно улучшить её наглядность и сделать короче. С конкретикой как это работает и зачем это надо.
• Несколько вариантов генерации карт
• Что за зверь WFC и в чём его недостатки
• Как задавать темп процедурно генерируемым картам и причём тут энтропия Шеннона
• WFC + карты гарантия темпа, но не гарантия проходимости. Шаги постобработки в генераторах
С мини игрой в конце (на телефоне не тестил, только на компе), которая показывает как это всё может работать на бою и где можно порисовать свои карты.
В общем как всегда ставим
P.S. Забавно кстати как ещё работают связки механик. Я оставил число ходов ограниченным, что делает игру игрой на поиск оптимального решения, как пройти карту с самым большим счётом, но пройти. Если включить туман войны это хардкор режим, который ощущается нечестным (по умолчанию он выключен). А если убрать число ходов, то играть не так интересно, так как нет челенджа и мотивации.
#devmath #gamedesign #procgen #wfc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
Движки больше не нужны
https://youtube.com/shorts/mOXHZvl1dXw?si=QbUzgCduPP63QcRl
Покрайней мере для 2д. Я говорю про анриал, про Unity и так далее. Это моё мнение с которым можно поспорить или считать иначе. Но дело в процессе разработки.
Я пишу несколько проектов один из которых моя игра. Когда я начинал у движков не было CLI тулов, не было плагинов для LLM и не было MCP. Поэтому я не стал делать с движками все эти проекты. И мне так нравится как идет. Вы не пишете сам движок целенаправленно. Вы пишите модули движка под функции вашей игры. То есть процесс выглядит +- следующим образом.
Я задал общую архитектуру проекта. Реализовал разное. После я понял что мне нужны 2д веревки. Я описал как это вписать в физический движок и вуаля эта функция теперь есть в движке и активного времени (то есть действий от меня) она заняла минут 30. Ну и в токенах наверное долларов 20.
Раньше ключевым было то, что движок было дорого разработать. На это требовалась куча времени. Сейчас я любой визуальный редактор включая конструктор для моей игры выношу в веб интерфейс передавая контракт загружаемого и выгружаемого конфига. И получается изолированная и независимая фигня, которую я могу передать левелдизайнеру на аутсорсе скажем. В командах вопрос обучения снимает общий контекст и так далее.
Многие забывают что лицензируемые движки вообще платные. Грабеж с роялти я не беру, но и подписка Unity стоит 180 евро в месяц. И зачем платить подписку, когда можно не тащить в свой проект лишнее, а ключевое сделать не по подписке в круг за 200$ в токенах, что покроет потребность почти любого 2д проекта. И разрабатывать в разы удобнее, так как не нужно морочиться с MCP и плагинами.
В общем как показал опрос в моём личном блоге — на эту тему есть разные мнения. И большинство всё ещё за движки. Но ваш покорный слуга, занимающий всё ещё третье место среди авторов хабра по теме Unity и написавший 50 статей большая из которых посвящена этому движку — готов похоронить весь этот опыт. Ради люмена и прочих фишек анриала я не готов был предать инструмент которым пользовался 12 лет. А тут всё поменялоськогда народ огня развязал войну, так как на мой взгляд другой процесс сильно лучше и оптимальнее.
#devmath #mention #gameengines #unity #ue
https://youtube.com/shorts/mOXHZvl1dXw?si=QbUzgCduPP63QcRl
Покрайней мере для 2д. Я говорю про анриал, про Unity и так далее. Это моё мнение с которым можно поспорить или считать иначе. Но дело в процессе разработки.
Я пишу несколько проектов один из которых моя игра. Когда я начинал у движков не было CLI тулов, не было плагинов для LLM и не было MCP. Поэтому я не стал делать с движками все эти проекты. И мне так нравится как идет. Вы не пишете сам движок целенаправленно. Вы пишите модули движка под функции вашей игры. То есть процесс выглядит +- следующим образом.
Я задал общую архитектуру проекта. Реализовал разное. После я понял что мне нужны 2д веревки. Я описал как это вписать в физический движок и вуаля эта функция теперь есть в движке и активного времени (то есть действий от меня) она заняла минут 30. Ну и в токенах наверное долларов 20.
Раньше ключевым было то, что движок было дорого разработать. На это требовалась куча времени. Сейчас я любой визуальный редактор включая конструктор для моей игры выношу в веб интерфейс передавая контракт загружаемого и выгружаемого конфига. И получается изолированная и независимая фигня, которую я могу передать левелдизайнеру на аутсорсе скажем. В командах вопрос обучения снимает общий контекст и так далее.
Многие забывают что лицензируемые движки вообще платные. Грабеж с роялти я не беру, но и подписка Unity стоит 180 евро в месяц. И зачем платить подписку, когда можно не тащить в свой проект лишнее, а ключевое сделать не по подписке в круг за 200$ в токенах, что покроет потребность почти любого 2д проекта. И разрабатывать в разы удобнее, так как не нужно морочиться с MCP и плагинами.
В общем как показал опрос в моём личном блоге — на эту тему есть разные мнения. И большинство всё ещё за движки. Но ваш покорный слуга, занимающий всё ещё третье место среди авторов хабра по теме Unity и написавший 50 статей большая из которых посвящена этому движку — готов похоронить весь этот опыт. Ради люмена и прочих фишек анриала я не готов был предать инструмент которым пользовался 12 лет. А тут всё поменялось
#devmath #mention #gameengines #unity #ue
🔥5✍4🤔1
Как создать ощущение, что противники в шутерах действуют слаженно?
За что я люблю игры, так это за то, что это, по сути, шоу. А в шоу очень много трюков. Трюки, в свою очередь, создают у игрока нужные ощущения. Один из таких трюков — барки в шутерах: они создают ощущение, что противники действуют слаженно.
Барк (bark) — это короткая реплика NPC, которая срабатывает по событию, а не по сценарию. Заметил игрока, ранен, перезаряжается, идёт в укрытие, остался один — на каждое такое событие висит пул строк, и система выбирает одну. В отличие от диалога, барк ничего не спрашивает у игрока и ответа не ждёт: он просто вслух помечает, что ИИ только что решил. Отсюда и название.
Барки используются не только в шутерах, но именно в них им нашли красивое применение. Один из ярких примеров — NPC в F.E.A.R. Это описано в докладе Оркина.
У каждого солдата F.E.A.R. конечный автомат всего с тремя состояниями: Goto (дойти до точки), Animate (проиграть анимацию), UseSmartObject (воспользоваться объектом уровня: перевернуть стол, перелезть через окно). Больше ничего. Вся «умность» вынесена из автомата наружу.
У солдата есть цели с приоритетами: убить врага, дойти до укрытия, выжить, патрулировать. И есть набор действий, у каждого — предусловия и эффекты: «стрелять» требует, чтобы оружие было заряжено и враг был виден, «перезарядить» требует наличия патронов. Планировщик (GOAP, отголосок STRIPS) берёт самую приоритетную цель и обратным поиском собирает цепочку действий, которая к ней ведёт. Цепочка скармливается тому самому автомату из трёх состояний. Мир изменился, предусловие сломалось — и план пересобирается заново. Так солдат сам находит, что перед перезарядкой стоит зайти за стену, а если путь перекрыт — перевернуть стол и спрятаться за ним.
Поверх одиночек стоит координатор. Он собирает NPC, стоящих рядом, в отряд и выбирает для него одно из четырёх поведений: Get-to-Cover, Advance-Cover, Orderly-Advance, Search. Поведение раздаёт каждому бойцу цель, скажем, «займи вот это укрытие ближе к игроку», а дальше каждый планирует свой маршрут сам. Клещи получаются из Advance-Cover сами собой: укрытия стоят по разные стороны коридора, маршруты расходятся.
Когда координатор назначил поведение и раздал роли, он же выдаёт реплики под уже принятое решение. Advance-Cover запустился, боец А пошёл в обход стены, и в этот момент звучит «обхожу». Решение принято, движения ещё не видно, слово уже прозвучало. Игрок слышит план, потом видит движение, которое ему соответствует, и достраивает тактику сам.
Так работает атрибуция намерения: услышанная фраза становится гипотезой о плане врага, а любое совпавшее действие — подтверждением. Отрядный ИИ в F.E.A.R. довольно простой, всего с четырьмя поведениями, ИИ каждого юнита относительно сложный (GOAP как-никак), но именно барки создают ощущение сложной скоординированной тактики у группы NPC.
#devmath #gamedesign #gamefeel #shooter #bark
За что я люблю игры, так это за то, что это, по сути, шоу. А в шоу очень много трюков. Трюки, в свою очередь, создают у игрока нужные ощущения. Один из таких трюков — барки в шутерах: они создают ощущение, что противники действуют слаженно.
Барк (bark) — это короткая реплика NPC, которая срабатывает по событию, а не по сценарию. Заметил игрока, ранен, перезаряжается, идёт в укрытие, остался один — на каждое такое событие висит пул строк, и система выбирает одну. В отличие от диалога, барк ничего не спрашивает у игрока и ответа не ждёт: он просто вслух помечает, что ИИ только что решил. Отсюда и название.
Барки используются не только в шутерах, но именно в них им нашли красивое применение. Один из ярких примеров — NPC в F.E.A.R. Это описано в докладе Оркина.
У каждого солдата F.E.A.R. конечный автомат всего с тремя состояниями: Goto (дойти до точки), Animate (проиграть анимацию), UseSmartObject (воспользоваться объектом уровня: перевернуть стол, перелезть через окно). Больше ничего. Вся «умность» вынесена из автомата наружу.
У солдата есть цели с приоритетами: убить врага, дойти до укрытия, выжить, патрулировать. И есть набор действий, у каждого — предусловия и эффекты: «стрелять» требует, чтобы оружие было заряжено и враг был виден, «перезарядить» требует наличия патронов. Планировщик (GOAP, отголосок STRIPS) берёт самую приоритетную цель и обратным поиском собирает цепочку действий, которая к ней ведёт. Цепочка скармливается тому самому автомату из трёх состояний. Мир изменился, предусловие сломалось — и план пересобирается заново. Так солдат сам находит, что перед перезарядкой стоит зайти за стену, а если путь перекрыт — перевернуть стол и спрятаться за ним.
Поверх одиночек стоит координатор. Он собирает NPC, стоящих рядом, в отряд и выбирает для него одно из четырёх поведений: Get-to-Cover, Advance-Cover, Orderly-Advance, Search. Поведение раздаёт каждому бойцу цель, скажем, «займи вот это укрытие ближе к игроку», а дальше каждый планирует свой маршрут сам. Клещи получаются из Advance-Cover сами собой: укрытия стоят по разные стороны коридора, маршруты расходятся.
Когда координатор назначил поведение и раздал роли, он же выдаёт реплики под уже принятое решение. Advance-Cover запустился, боец А пошёл в обход стены, и в этот момент звучит «обхожу». Решение принято, движения ещё не видно, слово уже прозвучало. Игрок слышит план, потом видит движение, которое ему соответствует, и достраивает тактику сам.
Так работает атрибуция намерения: услышанная фраза становится гипотезой о плане врага, а любое совпавшее действие — подтверждением. Отрядный ИИ в F.E.A.R. довольно простой, всего с четырьмя поведениями, ИИ каждого юнита относительно сложный (GOAP как-никак), но именно барки создают ощущение сложной скоординированной тактики у группы NPC.
#devmath #gamedesign #gamefeel #shooter #bark
🔥6✍3
Как Hades прячет ускорение в ровной шкале
Мы немного отвлеклись от рогаликов. Вернемся к разным интересным механикам в них. Сегодня взглянем на God Mode в Hades.
Это режим для тех, кто хочет дойти до конца истории. Правило одно. Игрок получает 20% сопротивления урону, и после каждой смерти прибавляется ещё 2%. Потолок 80%.
Выглядит как небольшая прибавка: умер, получил свои два процента. На деле каждая следующая смерть даёт больше, чем предыдущая, и в конце сильно больше, что сильно упрощает геймплей. Давайте посчитаем на ударах.
Пусть у вас 100 здоровья, а враг бьёт на 25. Без режима вы держите 4 удара.
С 20% сопротивления удар режется до 20. Это 5 ударов.
После 15 смертей сопротивление 50%, удар режется до 12.5. Это 8 ударов.
После 30 смертей потолок 80%, удар режется до 5. Это 20 ударов.
Первые пятнадцать смертей купили вам три лишних удара. Следующие пятнадцать купили двенадцать. Шкала в настройках ползёт ровно, по 2% за смерть, а запас прочности под ней разгоняется. И это неочевидно для игрока. У всех всё в целом сложно с процентами.
Почему так. Сопротивление r оставляет от удара (1 − r), значит число ударов, которые вы держите, растёт как 1/(1 − r). Это гипербола: на малых процентах она почти прямая, а к концу шкалы взлетает. Про эту формулу мы уже говорили в ролике про броню и убывающую отдачу.
Судя по интервью Касавина, так и задумано. Стартовые 20% должны ощущаться сразу, «immediately palpable», а шаги по 2% «aren't as noticeable»: они дают время выучить того, кто тебя убил. Ослаблять врагов не хотели, идея звучала как «What if we just make you a little bit tougher?».
Вывод для тех, кто делает своё. Не стоит просто так брать и добавлять игроку проценты. Любая помощь игроку, которая считается в процентах, будь то сопротивление, уклонение или скидка на урон, живёт на этой же гиперболе. И это нужно помнить когда вносите какие-то изменения в баланс. Чтобы не сделать игру слишком сложной или слишком простой.
В общем, самый простой на вид режим помощи считается той же формулой, что броня в MOBA, только там процент затухает, а тут его крутят напрямую.
#devmath #gamedesign #gamefeel #hades #godmode
Мы немного отвлеклись от рогаликов. Вернемся к разным интересным механикам в них. Сегодня взглянем на God Mode в Hades.
Это режим для тех, кто хочет дойти до конца истории. Правило одно. Игрок получает 20% сопротивления урону, и после каждой смерти прибавляется ещё 2%. Потолок 80%.
Выглядит как небольшая прибавка: умер, получил свои два процента. На деле каждая следующая смерть даёт больше, чем предыдущая, и в конце сильно больше, что сильно упрощает геймплей. Давайте посчитаем на ударах.
Пусть у вас 100 здоровья, а враг бьёт на 25. Без режима вы держите 4 удара.
С 20% сопротивления удар режется до 20. Это 5 ударов.
После 15 смертей сопротивление 50%, удар режется до 12.5. Это 8 ударов.
После 30 смертей потолок 80%, удар режется до 5. Это 20 ударов.
Первые пятнадцать смертей купили вам три лишних удара. Следующие пятнадцать купили двенадцать. Шкала в настройках ползёт ровно, по 2% за смерть, а запас прочности под ней разгоняется. И это неочевидно для игрока. У всех всё в целом сложно с процентами.
Почему так. Сопротивление r оставляет от удара (1 − r), значит число ударов, которые вы держите, растёт как 1/(1 − r). Это гипербола: на малых процентах она почти прямая, а к концу шкалы взлетает. Про эту формулу мы уже говорили в ролике про броню и убывающую отдачу.
Судя по интервью Касавина, так и задумано. Стартовые 20% должны ощущаться сразу, «immediately palpable», а шаги по 2% «aren't as noticeable»: они дают время выучить того, кто тебя убил. Ослаблять врагов не хотели, идея звучала как «What if we just make you a little bit tougher?».
Вывод для тех, кто делает своё. Не стоит просто так брать и добавлять игроку проценты. Любая помощь игроку, которая считается в процентах, будь то сопротивление, уклонение или скидка на урон, живёт на этой же гиперболе. И это нужно помнить когда вносите какие-то изменения в баланс. Чтобы не сделать игру слишком сложной или слишком простой.
В общем, самый простой на вид режим помощи считается той же формулой, что броня в MOBA, только там процент затухает, а тут его крутят напрямую.
#devmath #gamedesign #gamefeel #hades #godmode
🔥6✍2
Anonymous Poll
79%
Статьи
21%
Короткие ролики
58%
Посты про игры
58%
Инфографики, карусели и чек-листы
47%
Интерактивы
37%
Топы игр
11%
Другое
Мы же всё таки о том зачем нужна математика. И пока сидим в теме рогаликов возьмём формулы относящиеся к этому жанру. Конечно больше математики в тайкунах и айдл играх, но тут тоже есть свой набор формул.
Я выделил 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
Forwarded from Григорий Дядиченко
This media is not supported in your browser
VIEW IN TELEGRAM
Немного бекстейджа и ляпов. Но я выпал) Почему и зачем я объяснять не буду — это спойлеры к грядущему ролику) Но я поугарал)
Получилось не то, что было нужно) Я просто не хочу делать уникальный ролик на каждую реплику и думал как персонажа в кадре просто заставить двигаться и открывать рот, чтобы вео пропустило
Получилось не то, что было нужно) Я просто не хочу делать уникальный ролик на каждую реплику и думал как персонажа в кадре просто заставить двигаться и открывать рот, чтобы вео пропустило
😁4