В данной теме будет перевод информации о Rare item Find /Special Item Find (Поиск редких/особых вещей). Информацию предоставил разработчик системы таблиц лута и соавтор алгоритмов RIF и SIF, KPatrick.
Я не буду давать реальные цифры и не дам точные алгоритмы работы, т.к. я не уверен что точно из этого попадает под коммерческую тайну, но я хотел бы прояснить путаницу о РИФ и СИФ. Для начала я объясню немного, как строятся наши таблицы лута. Я опущу в рассказе маловажные особенности.
Когда наши дизайнеры создают таблицу лута, они могут задать системе точное выпадение (медаль босса, кредиты, шарики опыта и пр.) или могут установить правила для случайного выпадения. Эти правила включают в себя контроль над всем: для какого персонажа выпадает вещь, слот, редкость, уровень и т.д.
Отдельные запросы на выпадение сгруппированы в группы. Для каждой группы возможна установка: либо выпадение одной вещи (с указанным дизайнерами шансом), либо выпадение всего, что есть в группе. Группы могут содержать другие группы в качестве опций, это позволяет строить более сложные «Деревья лута». Эти деревья лежат в основе дропа с мобов, наград миссий, результатов крафта рецептов, ролов карт фортуны, инвентаря торговцев и т.д.
Каждая группа может быть помечена специальным правилом — выпадение раз в день, ограничение по уровню сложности и т.д. Одно из этих правил — СИФ. Когда рулетка лута доходит до группы с этим правилом, делается дополнительная рандомная проверка против СИФ игрока чтобы посмотреть, возможно ли выпадкние группы. Если проверка проваливается, система дропа идет дальше по дереву к другой группе. Когда мы увеличиваем СИФ, мы увеличиваем шанс «перебить» рандомную проверку, следовательно, скорее всего получим доступ к специальной вещи внутри группы (например, костюм).
Больше СИФ — всегда лучше. Когда люди беспокоятся о том, что значение переполнится, они думают о 8 битных числах, хранящих только 255 значений. Значения СИф таким образом не хранятся, и, если позволить, то СИФ может быть и в миллиардах. Это не значит, что будет сыпаться только СИФ лут, это означает, что экстра проверка рандомом всегда пройдет.
Теперь поговорим о РИФ. Когда дизайнеры создают случайный дроп, они могут либо выбрать конкретную редкость «по данному запросу всегда космик», либо могут позволить системы выбирать редкость для данного элемента. Каждая редкость имеет базовую вероятность — думайте о ней, как о розыгрыше, где каждая редкость получает билеты, причем обычные предметы — много билетов, а, например, космик — лишь малое число. Аналогия, конечно, не идеальна, т.к. итоговый результат не просто вытягивается из шляпы, но это точное описание того, что происходит.
Когда мы увеличиваем РИФ, система дает больше билетов всем, кроме обычной редкости. Шансы на получение высокой редкости увеличиваются линейно, да и сами шансы получить дроп лучше по всем направлениям, если раньше выпадало белое, то теперь точно зеленое. Мы выбрали алгоритм, чтобы влияние РИФ было максимальным, даже когда изначальный шанс дропа очень мал — слишком мало билетов. Нет такой точки, где большое число билетов сделает хуже для Вас.
Как и СИФ, РИФ не хранится в 8 битах, и может быть 200-20000 или 2 000 000, это не сделает его отрицательным. В отличие от СИФ, теоретически можно получать только лучший лут, если РИФ разогнать выше крыши.
задолго до старта, когда впервые делали систему дропа, был баг — как и в любой сложной системе. Билеты не работали и фиолетовый дроп был одинаков по количеству с белым. В какой-то момент у синих вещей было много билетов. Т.к. система лута очень важна в нашей игре, я создал серию консольных команд для разработчиков, за счет которых мы можем делать миллионы ролов одновременно, чтобы, например, зайти в X-Def и запустить рол дропа на месяц, чтобы потом проанализировать выпадение и убедиться, что это то, что и ожидалось. Важно отметить, что я не говорю о каком-то особо инструменте — это точно такой же код, что используется в игре.Именно поэтому говорится, что РИФ и СИФ работают так, как предполагается. Мы всегда можем заглянуть в текущий билд, запустить рол дропа, затем увеличить РИФ/СИФ, сролить опять и проверить то, что цифры соответствуют ожиданиям.