Математика в Gamedev по-простому
591 subscribers
113 photos
3 videos
3 files
64 links
Как на самом деле создаются игры. Как сделать игру интересной и реализовать технически. А главное причём тут математика?

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

Сотрудничество: @it_bizdev
Download Telegram
Как создать ощущение, что противники в шутерах действуют слаженно?

За что я люблю игры, так это за то, что это, по сути, шоу. А в шоу очень много трюков. Трюки, в свою очередь, создают у игрока нужные ощущения. Один из таких трюков — барки в шутерах: они создают ощущение, что противники действуют слаженно.

Барк (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
🔥63
Как 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
🔥62
👍 Десять полезных формул баланса

Мы же всё таки о том зачем нужна математика. И пока сидим в теме рогаликов возьмём формулы относящиеся к этому жанру. Конечно больше математики в тайкунах и айдл играх, но тут тоже есть свой набор формул.

Я выделил 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
Зачем нужна броня, если есть здоровье

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

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

Ответ: броня отличается от здоровья не тем, сколько 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
❤‍🔥53
Новый формат роликов
https://youtube.com/shorts/sBWPJmyMqKg?si=GqUfUyLol_ahrRsK

Возможно первый блин комом, но я люблю экспериментировать. Хочется сделать серию таких интервью. Поинтереснее и повеселее. Часть про детство мне показалось не такой заезжанной, как общая тема. В общем мне нравится делать что-то новое, а там будем посмотреть как пойдет.

Конечно подозреваю, что и этот формат лучше делать без липсинка или поискать другой инструмент. Не Veo Lite. Так как не уверен, что анимация прикольная чтобы так смотреть :)

#fun #interview #devmath
🔥4
Покажите свою игру
https://dev-math.ru/indie-review/

Думал думал и наконец-то придумал новую рубрику. Короче, друг. Я в благородство играть не буду. Скинешь мне игру, а я её разберу и расскажу об этом. На кой ляд тебе сидеть без фидбека я не знаю, но если что я дам и может кто-то из подписчиков подключится.

В общем решил я это всё обозвать SCOPE по принципам разбора.

Session (сессия) — сколько длится один заход, чем открывается, чем закрывается и что оставляет незакрытым, чтобы вернуться.

Core (кор-луп) — в чём заключается геймплей, в чём заключается игра. На сколько она реиграбельна и декмпозиция по ключевым психологическим аспектам.

Onboarding (посадка) — сразу ли понятно как в игру играть. Понятность и читаемость геймплея, а куда лучше вставить туториал.

Pitch (обещание) — необязательный шаг, при наличии. Что говорит игра до запуска. Скриншоты, описание, страница магазина (если есть, если нет то и неважно). И какие обещания игра выполняет.

Economy (экономика) — как работает экономика и монетизация игры. В платных играх это про петлю удержания. В веб (яндекс игры) и фри ту плей ещё про монетизацию.

Вот такое я придумал. Так что присылайте небольшие, большие, то что вы просто делали на яндекс игры для эксперимента. Пообсуждаем, по разбираем, думаю будет прикольно.

#devmath #gamedesign #scope
🔥9
🚀 Как запустить игровой стартап и применить бизнес-опыт в геймдеве? 🚀

Высшая школа бизнеса НИУ ВШЭ проводит онлайн День открытых дверей программы «Менеджмент игровых проектов»

🔡 24 сентября (четверг) в 19:00 (MSK)
🔡 Зарегистрироваться

Многие воспринимают игровую индустрию как закрытую тусовку для гиков. Но сегодня геймдев — это жесткий технологичный бизнес, где на вес золота ценятся сильные менеджеры, продюсеры и предприниматели, способные превратить творческий хаос в прибыльный системный продукт.

Если вы хотите запустить свою инди-студию, сменить сферу деятельности и развиваться в игровой индустрии — приходите

Из презентации программы вы узнаете:
🔴 Траектории развития: какие карьерные пути открыты в индустрии для управленцев и инди-команд
🔵 Бизнес-модели: как довести проект от идеи до коммерческого релиза или защиты перед инвесторами
🟢 Дистанционный формат: как эффективно учиться, проходить практику и собирать команду из любой точки России


Эта встреча — не скучный формат презентации, а живой диалог с академическим руководителем программы Вячеславом Уточкиным, генеральным продюсером Geeky House, и командой преподавателей-практиков:

🔷 Константин Сахнов — продюсер, основатель Vengeance Games
🔷 Владимир Агарев — креативный директор JayJoy
🔶 Сергей Голубкин — владелец издательства настольных игр «Геменот»
🔷 Григорий Поляков — продюсер Geeky House

Интенсив приурочен к запуску знакового, юбилейного 20-го потока программы переподготовки Вышки «Менеджмент игровых проектов»


Участие полностью бесплатное. Нужна предварительная регистрация

🔡 Зарегистрироваться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Хороший роглайк заставляет выбирать

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

Настоящая система выбора работает, когда перед игроком стоит больше одной задачи и решить их разом нельзя. Игрок вынужден расставлять приоритеты и чем-то жертвовать. Если в предложении есть вариант, лучший при любом прошлом и будущем колоды, дизайнер провалился.

Задач у игрока всегда больше одной. В Slay The Spire их две: довести врага до нуля и самому дожить до следующего боя. А энергии на обе не хватает, и враги растут быстрее, чем колода. Поэтому каждая карта из награды закрывает одну задачу и оставляет дырку в другой. Взял Carnage? Бьёшь больно, но обязан играть агрессивно. Взял Footwork? Защита растёт считай бесплатно, но до выплаты надо дожить.

Поэтому и ключевой вывод для перков. Если в предложении есть вариант, который хорош при любом раскладе и любом будущем, выбор мёртв, а дизайнер провалился. У каждого варианта должен быть свой минус: отложенная отдача, долгосрочная цена или плохая пригодность в части ситуаций. Игрок должен что-то отдать сейчас ради выигрыша потом, либо сохранить сейчас и заплатить больше позже.

В общем, перк или карта в роглайке ценятся не силой, а тем, от чего ради них отказываешься. Если отказываться не от чего, это апгрейд из идл-игры.

У CloudFallStudios есть прикольный разбор на эту тему.

#devmath #roguelike #gamedesign #perks #choice
🔥2