Machinations - инструмент прототипирования баланса

Сегодня хотел бы рассказать о весьма неплохом инструменте для гейм-дизайнеров - Machinations.io

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

Основное окно работы
Основное окно работы

Что в нем есть. Основные сущности, с которым вам можно будет работать, это ноды и коннекторы вкратце все это добро выглядит вот так:

Основные сущности
Основные сущности

Для примера соберем простой счетчик на каждый цикл, в котором будет генерироваться от 1 до 10 ресурсов

Тут я использовал один нод Source и два нода Pool, соединив их обычными коннекторами. На одном из коннекторов указано 1D10, это означает, что количество произведенных ресурсов будет определяться броском одного 10-гранного куба, или, говоря проще, быть в диапазоне от 1 до 10.

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

Для этого я использовал нод Gate, указав в нем, что он имеет случайное распределение ресурсов. Коннекторы, выходящие из гейта одновременно служат весами для распределения ресурсов. Эту схему можно преобразовать вот в такой вид:

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

Для того, чтобы передать значение каунтера из пула, а затем применить его на вес коннектора я использовал логические коннекторы. У них есть масса и других замечательных применений. Но сейчас давайте сделаем каунтеры, которые будут выдавать нам значение какой средний текущий приход ресурса на цикл для верхнего пула.

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

А теперь давайте прогоним 50 испытаний и узнаем минимальное значение за сколько циклов среднее значение ресурса за цикл достигало 1, при условии, что схема отработала не менее 10 циклов. Для этого сначала обозначим, условие окончание работы схемы и условие 10 циклов:

Ну а теперь давайте запилим 50 испытаний и посмотрим как часто все тормозится на 10-м цикле каков будет рекорд по длительности работы схемы, для разнообразия.

Для этого нам надо создать график и проделать дополнительные манипуляции:

Данные этого теста можно вытащить в эксель в виде csv и детально рассмотреть. Я обратил внимание, что максимальное значение циклов было 37, а минимальное - 10. При этом минимальное значение встречалось 8 раз на 50 испытаниях.

Machinations позволяет спрототипировать практически любые циклы. Иногда, конечно, для этого приходится использовать допущения и упрощения. Тем не менее, для того, чтобы сэмулировать дроп нужной карты из бустера MtG или же лут с босса в рейде на 100 рейдах, функционала Machinations достаточно. Отдельные товарищи умудрялись делать в нем даже баланс League of Legends Season Pass, или же мету Диаблы.

Подводя итог, хотелось бы сказать, что основная задача этого инструмента - работа с ресурсами и циклами. Если вы пытаетесь собрать динамическую модель от поведения агента (или проще говоря от игрока), то Machinations, скорее всего, не подойдет, так как в нем очень муторно моделировать и считать реальное время.

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

4141
11 комментариев

Machinations выглядит интересно и круто, но на практике тулза оказывается не слишком полезной.
Использовать схемы как часть документации для систем дизайна не получается, потому что кроме дизайнеров никто схему прочитать не может.
Использовать схемы для баланса экономики не получается, потому что spreadsheetы гибче.

2
Ответить

Это дизайнерский инструмент именно для прототипирования. Как документацию его крайне сложно использовать, разве что экспорты из csv.

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

Ответить

По сайту не понял, это приложение или веб-сервис?

Ответить

Machinations is the browser-based tool to design and balance game systems.

1
Ответить

Веб-сервис

Ответить

" Если вы пытаетесь собрать динамическую модель от поведения агента (или проще говоря от игрока), то Machinations, скорее всего, не подойдет, так как в нем очень муторно моделировать и считать реальное время." - Подскажите, если для этого Machinations не подойдет, то есть ли подобные программы или сервисы, которые подойдут именно для этого?

Ответить

Anylogic

Ответить