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

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

Сотрудничество: @it_bizdev
Download Telegram
Почему в Overwatch броня вычитает фиксированное значение урона?
https://youtube.com/shorts/QQiAwGy6wF0?si=T41m9A-OubXqXo7u

Геймдизайн — это мастерство создания интересных правил. Процентное снижение урона ощущается абстрактно: цель «стала не такой пробиваемой», но убивать её вы будете той же ротацией скиллов — как в большинстве RPG.

Flat Damage Reduction работает иначе: она вынуждает менять оружие. Против брони эффективно только то, что наносит максимум урона за один выстрел — так появляется тактический слой, и Overwatch поощряет смену героев по ходу матча, а не игру одним персонажем.

Это же убивает bunker composition — связку вроде Orisa + Bastion + Baptiste, где щит Orisa на низком кулдауне прикрывал высокий урон Bastion, а команда «окапывалась» на точке, выкашивая всех в зоне поражения. После изменения брони и лимита «один танк на команду» тактика перестала работать.

Заодно фиксированная броня обесценивает спам-тактики: быстрое оружие с низким уроном за выстрел становится против неё бесполезным — стрелять очередью в щит Райнхардта бессмысленно. Чтобы убить танка, нужно целиться в голову медленными, точными, скилл-ориентированными выстрелами.

#overwatch #devmath #геймдизайн #gamedesign #игры
🔥3
Подарите игроку первые уровни
https://youtube.com/shorts/hpCVembRSS4?si=0sSkQc-7dWArahXz

Новый ролик уже на канале. Про Эффект Подаренного Прогресса и почему в начале игры лучше дарить игроку уровни.

#devmath #gamedesign #progression
🔥3
А начнём мы с Roguelike

Не хочется назначать временные рамки этой теме. Типа "разберем рогалики за неделю". Там есть о чём поболтать и много. Поэтому — как пойдет.

Лично я обожаю рогалики. Monster Train, Balatro и многие другие. А сколько всего я прошел в дороге куда-то. По сути у меня два любимых жанра стелс экшены и рогалики. И хочется начать именно со второго, так как я хочу разбирать вещи, которые сможет сделать человек в одиночку. "Как сделать интересный ААА?" — это отличный вопрос, но толку его разбирать, если в среднем ни у кого нет бюджетов делать ААА. А даже автор одиночка с современными инструментами может сделать действительно крутой рогалик (или более простые жанры до которых мы ещё доберемся).

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

Что любопытно до Rogue уже существовал данжен-краулер с похожими идеями — Beneath Apple Manor, которую Дон Уорт написал для Apple II и выпустил в 1978 году, на два года раньше Rogue. Но она была не такой известной, поэтому начало своё официально жанр берет с легендарной Rogue. Отсюда и название.

Игру создали Майкл Той и Гленн Уичман в Калифорнийском университете в Санта-Крузе, напрямую вдохновляясь Dungeons & Dragons и текстовым квестом Adventure. К проекту подключился Кен Арнольд, который незадолго до этого в Беркли написал библиотеку curses — набор инструментов для управления курсором на экране терминала, что и позволило рисовать подобие графики символами. Четвёртым в титрах значится Джон Лейн.

Rogue сразу задал формулу: процедурно генерируемые подземелья, необратимая смерть, пошаговый бой и всё это — псевдографикой ASCII, а целью было спуститься в подземелье за Амулетом Йендора, двигаясь по клетчатой сетке. Игру бесплатно раздавали вместе с университетским Unix-дистрибутивом BSD, и она мгновенно расползлась по компьютерным классам — по подсчётам самих авторов, суммарно на неё потратили около полутора миллиардов долларов машинного времени. С 1984 года те же Той, Уичман и Лейн через собственную компанию A.I. Design и при поддержке издателя Epyx выпустили и коммерческие версии — для Amiga, Atari ST, Macintosh, DOS и других систем.

В общем Roguelike (рогалик) — жанр игр с процедурно генерируемым миром и необратимой смертью персонажа: погиб — начинаешь новый забег с нуля в заново собранном мире, без возможности загрузить сохранение. А как эта формула становится интересной мы разберем дальше.

#devmath #история #gamedesign
🔥6❤1
Математика 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Драматургия уровней с помощью математики
https://dev-math.ru/articles/wfc/

Ура! Это была сложная статья. Чтобы она была короткой, понятной и чтобы демки были интересные. Конечно больше всего я заморочился над последней. Статью я на эту тему уже писал на самом деле, тут я просто решил сильно улучшить её наглядность и сделать короче. С конкретикой как это работает и зачем это надо.

• Несколько вариантов генерации карт
• Что за зверь WFC и в чём его недостатки
• Как задавать темп процедурно генерируемым картам и причём тут энтропия Шеннона
• WFC + карты гарантия темпа, но не гарантия проходимости. Шаги постобработки в генераторах

С мини игрой в конце (на телефоне не тестил, только на компе), которая показывает как это всё может работать на бою и где можно порисовать свои карты.

В общем как всегда ставим 🔥 и делимся с друзьями. Чтобы я понимал не зря ли я старался и интересен ли такой формат. + бонус к посту короткая инфографика с шагами работы алгоритма.

P.S. Забавно кстати как ещё работают связки механик. Я оставил число ходов ограниченным, что делает игру игрой на поиск оптимального решения, как пройти карту с самым большим счётом, но пройти. Если включить туман войны это хардкор режим, который ощущается нечестным (по умолчанию он выключен). А если убрать число ходов, то играть не так интересно, так как нет челенджа и мотивации.

#devmath #gamedesign #procgen #wfc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14
Как создать ощущение, что противники в шутерах действуют слаженно?

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

Барк (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
🔥6✍2
Зачем нужна броня, если есть здоровье

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

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

Ответ: броня отличается от здоровья не тем, сколько 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
Покажите свою игру
https://dev-math.ru/indie-review/

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

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

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

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

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

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

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

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

#devmath #gamedesign #scope
🔥9
Хороший роглайк заставляет выбирать

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

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

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

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

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

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

#devmath #roguelike #gamedesign #perks #choice
🔥2
😁 Почему игроки фармят пиксели
https://dev-math.ru/articles/grind/

Дописал статью про вопрос, который каждому игроку задавали родители: зачем часами фармить меч, которого не существует?

Внутри экономика EverQuest, логи ArcheAge перед вайпом, купленные танки в World of Tanks, эффект IKEA и что осталось от «дофамина как в казино» после проверки.

Ну и ставьте 😎 — это бесплатно, а мне приятно :) И не забываем делиться с друзьями конечно же :)

На прошлом 30 собрали, так что на следующей неделе соберу такую карту по продвижению.

#devmath #article #gamedesign #reward
Please open Telegram to view this post
VIEW IN TELEGRAM
2333
🤔 Почему так важен онбординг в игре?

По следам разбора давайте на этой неделе разберем тему — что такое хороший туториал. Это важно и в контексе продвижения игры, карта по которому выйдет на этой неделе. Итак, почему в играх туториал так важен?

Ну на самом деле он важен не только в играх, а в любом классе продуктов. В процессе разработки глаз замыливается и многие функции становятся очевидными вам, но они абсолютно неизвестны вашим игрокам или пользователям. Чем шире у вас реклама, тем выше важность и ценность туториала. Если про игру знают только ваши друзья, которым вы все уши прожужали и можете онбординг провести лично, то он не нужен. Самое интересное начинается с приходом широкой аудитории.

Вы тратите своё время и/или деньги на то, чтобы к вам пришли игроки. Если они не понимают как играть в вашу игру, какой бы крутой она не была, это сильно бьёт по цифрам. Стоимость привлечения игрока растет, а LTV падает. Возвраты в стим, отказы в самом старте на f2p. Плохой онбординг — это чаще даже хуже чем не вылизанный геймплей. Столько всего сделано, а вы даже не в курсе интересно игрокам играть или нет, так как они не понимают как играть. А вы получаете за это возвраты и негативные отзывы, хотя игрок просто не разобрался в управлении или базовом геймплее.

А как сделать туториал понятным? Разберем на этой неделе. Пройдемся в целом по этой теме и по UX/UI. Если тема интересна ставим 😎, всё по классике.

#devmath #ux #ui #gamedesign #onboarding #tutorial
Please open Telegram to view this post
VIEW IN TELEGRAM
1032
🤔 Как проверить свою идею?

Сделал небольшое видео о том, как проверить свою идею. Самый простой и первый плейтест всегда делается на родственниках, но как его сделать эффективнее? Ответ в видео.

Youtube | Inst

#devmath #reels #shorts #gamedesign
Please open Telegram to view this post
VIEW IN TELEGRAM
532
😎 Лучшие туториалы в играх
https://collider.com/best-video-game-tutorials-all-time-ranked/

Подборка от Collider: десять туториалов, от Cuphead до Breath of the Wild.

Уровень учит сам. В Super Metroid после пролога вас бросают на Зебес, и метроидвания объясняет себя проходами, тупиками и апгрейдами, без единой строчки текста. Великое плато в Breath of the Wild проходится несколько часов, и только потом понимаешь, что это было обучение.

Бой, который нельзя выиграть. Он есть и в Super Metroid, и в Mega Man X: игроку с порога показывают, сколько ещё впереди.

Обучение как завязка. Fallout 3 начинается с того, что вы ползаете младенцем, а статы выбираете на дне рождения. Prey — с обычного утра на станции, пока кружка кофе не убивает человека. Главное правило игры «не доверяй ничему» объяснено одной сценой.

А Blood Dragon попал в список за пародию: обучение там нарочно ведёт за руку на каждом шаге, и герой на это ругается. Раз туториал с подсказкой на каждый чих стал шуткой, достал он всех :)

Что бы вы добавили в этот список?

#devmath #tutorial #onboarding #gamedesign
Please open Telegram to view this post
VIEW IN TELEGRAM
222
🤔 Контрпики на кубиках

Контрпики в балансе устроены как камень-ножницы-бумага: каждый юнит кого-то бьёт и кому-то проигрывает.

Возьмите три кубика. Красный: 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
1333