Нерэндомный рэндом.
Задался вопросом случайных характеристик для артефактов. Мыслями о принципе в целом и хочу поделиться. Для кого-то это очевидные вещи, для начинающих вряд ли. Тут нельзя не припомнить пресловутый «корейский рэндом» из гриндилок, регулярно устраивающий пожар на корме у игроков. Этого и попытаемся избежать с помощью простой арифметики и жизненных наблюдений.
Например нам нужно наделить меч тремя свойствами в случайной пропорции. Применение случайного выбора по трём равным числам от минимума до максимума будет выдавать множество всех вариантов, включая как бессмысленно усреднённые характеристики, так и три заниженные или дисбалансно завышенные. В итоге заметная часть мечей, выдываемых таким способом будет непригодна или неудобна в игре. Нужно как-то сбалансировать.
Первый случай баланса для ситуации в которой много игроков, вкачанных под разные характеристики и есть задача стимулировать обмен мечами между ними. Значит в сумме мечи должны быть равноценны, но по-разному ценны для каждого.
Значит во-первых общая сумма на всё. Разрезаемое яблоко. В реальной жизни, если тебе предлагают разделить яблоко на три куска любого разного размера (не говоря зачем), то поделишь ты или примерно поровну или уж точно не 99%+0,99%+0,001% — нож и руки не позволят так извратиться, да и два куска вообще уже как бы не куски, а так, мусор. Получается, мы подразумеваем некоторую нижнюю планку. Например минимальная кучка горошин — это 4 штуки.
Итого, чтобы поделить число подобным образом нужно:
случайное[от 0; до (max-3*min);шаг=k] — выдаст нам некое число N, делящее оставшийся кусок надвое:
Теперь, если мы хотим иметь более случайные результаты, то повторяем процедуру, получая второе значение M:
Соответственно будем иметь три доли, (не забываем сравнить M и N, чтобы не получить пересечения):
A = min+M; B=min+N-M; C=min+max-M-N
Если же мы хотим чуть повысить шансы для более взвешенных пропорций, то до деления отметкой M сравниваем, что больше max-N или N, а затем большую величину режем рэндомно:
Соответственно при желании съехать в диспропорцию, режем меньшую долю.
Ситуация вторая, характерная. Есть стихии. Которые друг друга подавляют, например огонь и вода. Чаще всего делают или так, что меч не может быть и огненным и водным или делят промежуток случайно, в итоге мы можем получить полуводный-полуогненный, что тоже логично только тогда, когда стихии взаимодействуют, а не подавляют друг друга: например 80 огня + 20 воды = 60 урона огнём + 20 урона паром.
При взаиморавном подавлении же может случиться глупо выглядящий артефакт 50 огня + 50 воды = 0 урона стихиями. Ну и нафига мне такая математика? — спросит игрок.
Значит нам во-первых нужно заведомо неравное деление, то есть введение минимально допустимого неравенства:
Делим отметкой N, сравниваем обе части, прибавляем минимум к большей (во избежания получения 50/50).
A=N; B=max-N+min
И, если N больше половины (max-min), то
A = N+min; B=max-N-min
Во-вторых нужно делать грамотное взаимоподавление. Практически, в простом случае, оказывается, чем больше неравенство, тем больше подавление меньшего большим. Тут можно играться с экспонентой, а можно усилить диспропорцию таким способом. Пляска с делением для того, чтобы сумма A+B оставалась равной max а не вылазила невесть куда, требуя костылей и перебалансировки. Допустим A>B
A=A*A/B; B=B*B/A;
k=(A+B)/max;
A=A/k; B=B/k;
Для наглядности 55 огня и 45 воды дадут примерно 65 и 35. Не забываем об ошибках округления, чтобы не вышло 65 против 36 например, то есть делаем проверку на верность условия A+B=max, если, конечно, не хотим маленьких сюрпризов.
Если в оружии выводятся только конечные цифры — всё норм. Мы просто второй раз (первый — надбавка минимума) усугубляли неравенство, обеспечивая больший перевес в сторону одной из стихий.
Если же выводятся начальные характеристики стихий, а урон расчётный, то логично, что огненный урон не будет выше 55. Но сильная сторона баланса что-то перетянет на свою сторону. Итого 55 урона огнём, 10 урона горячим паром (продукт взаимодействия стихий), 35 урона водой.
Почему же нельзя просто задать начальный минимум довольно большим, всегда получая сильный дисбаланс, без всяких квадратов-экспонент? Можно. Например выставив минимум 40% Вот только игрок заметит, что большая доля никогда не бывает меньше чем 70%. Меньше отдаётся на откуп случайности. Нужно ли вам так — решайте сами.
На этом оканчиваю занудство, да пребудет с вами Сила, а в ваших играх — Баланс!
- 30 июня 2014, 17:55
Игроки в любом случае будут жаловаться - пар закрывает обзор и жжёт морду же :)
Статью было почитать интересно, но не думаю, что балансировать шмот действительно как-то нужно.
Почему?
Ну, во-первых, куда ни плюнь, везде пихают разделение вещей по цветам, к примеру в Borderlands действует система Б-З-С-Ф-О (Баран Забор Сломал, Фасольку Обглодал - чтоб легче было запомнить).
Чем круче монстр, чем более редкий попадается сундук, тем безбашеннее должна быть награда, и этого придерживаются и дьяблы, и сакреды, и торчлайты и иже с ними.
Да, то есть нет, в облевоне и его предках/потомке разделения по цветам нет, но там и разнообразия вещей особо как-то нет, а действительно крутые ништяки выдаются разве что по квестам.
Я думаю... тут есть два варианта - либо отпустить вожжи рандому, либо прописывать всё заранее.
Не думаю, что вариант с каким-то "ограниченным" рандомом прокатят. Игроки быстро прохавают, что вещи сильно друг от друга не отличаются.
В том же Hellgate:Global действительно есть смысл определять вещи и смотреть их параметры - тебе может попасться либо какая-то шняга типа "+8% урон миньонов +10% здоровье миньонов", либо реально классная вещь "+20% скорости движения".
И даже неважно уже, каков из себя второй параметр, такая скорость это просто подарок с небес.
Такую вещь можно таскать ещё 10-15 уровней, потому что действительно влюбляешься в неё.
При ограниченном рандоме... ну да, это будет первая игра, где игроки выбирают себе шмот по внешнему виду.
Но отношения к луту как к чему-то потенциально ценному уже не будет, и радости от нахождения классной вещи уже не будет тоже.
Некоторые вещи в H:G "из поколения в поколение" передаются.
При ограниченном рандоме этого не было бы тоже, да и торговля стала бы по существу ненужной.
Ну, это просто моё частное мнение :)
О внешнем виде и даже о конкретных параметрах речи не идёт, речь идёт о некоторой стабилизации и отсекании крайних нафик не нужных конфигураций. О принципе. А что отсекать (низы ли, большую часть супертоповых) — выбор за геймдизайнером. Принцип можно развернуть наоборот, выдавая вещи не более 80% мощностью простым выбиванием же.
Что же касается легендарных вещей, то на мой вкус, их добыча должна нести и элемент задротства (не гринда а глубины вкапывания в сюжет, розыск секретов) и элемент случайности (добыл, ингредиенты, отдал на ковку лучшему спецу, а там плюс-минус). Упрощённо — в Террарии: небольшие рэндомные надбавки и пенальти могут в сумме сложиться в нечто эпическое, превосходящее следующие пару градаций оружия.
Почему люди всегда всё усложняют?
Идея должна быть простой:
У вещи есть среднестатистические значения параметров(может зависеть от типа вещи и уровня персонажа)
У каждой выпавшей вещи есть отклонения от этих своих средниестатистических параметров на заданное дельта.
Далее играем с дельтой (накладываем ограничения) - получаем различные варианты рандома.
Как сказали выше - в игре должны попадаться вещи и с перекошенными статами, чтобы можно было найти такую вещь и юзать её несколько уровней подряд. В вышеупомянутых бордерах можно найти пушку и проходить с ней ещё уровней 15 не меняя. Порой даже обычная белая вещь может оказаться таким вот фаворитом.
Э-э-э-рэндом-дом-дом-дом
статья глупая.
в рандоме обязан быть дисбаланс. чтобы могла сгенериться уберкрутая шмотка. чтобы были и ненужные ржавые коряги, и чтобы изредка появлялись малосовместимые свойства, или неожиданные.
проще, в топку рандом без вау-эффекта.
Для рогалика, несомненно. А вот для игр, где нету упора на чрезмерную реиграбельность и хардкор, не факт.
и при чём тут хардкор?
вся суть рандома в том, чтобы он удивлял. если же он вместо этого даёт предсказуемое, то не нужен.
Ну, когда ты можешь зафейлится по воле рандома, это немного жестоко.
удивляющий рандом не приводит к фэйлам.
к фэйлам приводят уродские правила игры, типа 'враг неожиданно убивает с одного попадания, плюс пермасмерть'. это вопрос дизайна и правил игры, а не рандома.
Ну вот мне удивительно в твоей игре иногда не попадается оружие =D. Это + щепотка нубства = смерть.
В любом случае, статья глупая. Рандом без рандома. Несладкий сахар и безалкогольная водка.
Какой смысл тогда в рандоме? Если он предсказуем и ожидаем?
Уважаемые товарищи, в т. ч. Крысеечник. Распределение случайных событий может быть не только равномерным, когда вероятность выпадения всех чисел одинакова. Но и нормальным (гаусса), пуассона, то бишь описывать определенной формулой. Делается это для того чтобы победил не тот, кому подфортило и кубик выпал 6 раз на 6-ке, а тот, кто лучше играет. Чтобы не было когда у одного много-много-много, а у другого мало-мало-мало только потому что первый запустил игру на 1 секунду раньше и получил уникальное зерно генератора когда все карты в колоде - козыри. При этом закон все равно должен оставаться случайным чтобы игрок не замечал закономерностей.
И между прочим распределение любого события при многократном повторении приближается к нормальному, то есть становится немного предсказуемым и "нерандомным".
В водке 40% спирта. Я к тому что водка на 60% безалкогольная, то есть нередко требуется дозирование рэндома. Не сводите всё к крайностям.
Я и так отметил, что излишнее увлечение лимитами приводит к слишком узкому коридору ожидания и тоже нежелательно.
Интересно будет играть, если ты бьёшь-бъёшь лут (нужен ледяной меч), а выпадают иногда ледяные, но 0,5%, 3%, то есть с эффектом, от которого ощутимого результата не наблюдается?
Есть и другой метод. Утилизация в игре. То есть рэндом остаётся тотальным, но при этом оружие можно сломать на исходные материалы (в том числе толику магии), а потом из этих крупиц насобирать на более мощный эффект. в Дофусе это руны например — выламываются те эффекты, которые в игре есть. Дисбаланса нет, так как и предел «ёмкости» и низкий шанс на повышение. Итог: самому не нагриндить и эпическое/нестандартное оружие делается долго, дорого, существуя в игре в очень малой концентрации.
Хитрый пряник, если тебе надо чтобы 3 параметра не превышали определенную сумму, делай так:
1) Генерируем 3 случ. числа с одинаковым распределением
2) Складываем, сумму делим на лимит параметров (н-р, 150)
3) Каждое новое число = исходное / результат в пункте 3
Получится что сумма всех новых чисел не превысит лимит. Все.
Нормальное распределение вполне подходит (среднее число будет попадаться чаще всего).
Примеры в статье лишь примеры. Важна концепция, сама идея регулирования хаотичного рэндома.