Статья систематизирует подходы к работе с таблицами лута и любыми вероятностными системами в играх.
Базовая таблица лута
Таблица лута — «ведро» предметов с весами выпадения. Каждый предмет (включая специальный null — «ничего не выпало») имеет вес 1–10 000. Для розыгрыша суммируются веса, каждому предмету задаётся диапазон, затем генерируется случайное число и выбирается попавший в диапазон предмет. Изменение весов прямо меняет шансы.
Многократный дроп — это просто несколько независимых бросков по той же таблице.
Связь с картами и кубиками
Тот же принцип можно мыслить как:
- колоду карт: тип карты = предмет, количество карт = вес;
- кубик: грани = предметы с равным весом; несколько кубиков = несколько бросков одной таблицы.
Вариации таблиц
Наборы предметов
Элемент таблицы может быть не одним предметом, а набором (например, щит + 2 зелья здоровья).
Обязательный дроп
Частая практика — предметы с весом -1, которые выпадают всегда (поверх остального розыгрыша).
Повторяемая случайность
Чтобы защититься от «сейв-скама» (перезагрузки ради лучшего лута), используют сид генератора случайных чисел: сохраняя сид, можно воспроизвести тот же результат.
Розыгрыш без возвращения
Проблема чистой случайности — игрок может очень долго не получить редкий предмет. Один из подходов — выбор «без замены»:
- каждый раз при выпадении предмета его вес уменьшается на 1;
- общий максимум диапазона тоже уменьшается;
- модифицированная таблица хранится на игроке.
Так работает, например, Tetris: фигуры выбираются из «мешка» без повторения, пока он не опустеет.
Гарантированный редкий дроп
Если даже беззаменки недостаточно, можно гарантировать выпадение после N попыток (пример — редкие дропы у Blizzard):
- задаём X = 100 / максимум бросков до гарантии;
- каждый раз, когда не выпал гарантируемый предмет, уменьшаем веса всех остальных предметов на X%;
- через заданное число бросков их вес станет 0, и целевой предмет будет иметь 100% шанс.
Иерархические таблицы
Для ограничения ресурсов используют вложенные таблицы без замены. Пример: ежедневная выдача монет. Основная таблица может вернуть «dailyCoins», которая ведёт к отдельной таблице с типами и количествами монет и флагом «noReplacement» + периодом обновления. Когда эта таблица опустеет (например, суммарно 100 монет в день), до следующего рефреша монеты больше не выдаются.
Условные дропы
В Realm of the Mad God (кооперативный онлайн-экшен с пермадетом) ценные предметы выдаются только игрокам, наносящим не менее X% урона боссу. Условные проверки можно использовать и по уровню игрока/врага, но автор предпочитает несколько небольших таблиц вместо одной сложной.
Модификаторы
Внешняя логика может менять количество или вес дропа: навык «сбор ресурсов» даёт x2 к количеству; высокий уровень персонажа может уменьшать вес лута ниже его уровня на 50% и т.п.
Другие применения
Таблицы лута удобны не только для добычи:
- Процедурная генерация: сбор оружия, персонажей или врагов из компонент по таблицам.
- AI: выбор атак/поведения через таблицу вероятностей как «первый грубый слой» модели.
Это «сферическая корова» геймдизайна: упрощённая, дёшевая модель, которая часто «достаточно хороша» для восприятия игрока. Автор приводит пример Dungeons & Dragons, где целые вселенные моделировались по сути через броски по таблицам.
Пример процедурной генерации врага
Подход:
- Составить списки частей врага (движение, атака, защита, сокровище) — каждая часть в своей таблице с «силой» (power).
- Создать таблицу баффов/дебаффов, которые модифицируют параметры и power.
- Задать целевую мощь (например, 40).
- Один раз бросить по каждой таблице частей, посчитать суммарный power.
- Если выше цели — добавить дебафф или заменить часть на более слабую; если ниже — добавить бафф или более сильную часть.
- Повторять до нужной точности или лимита итераций.
Дальше можно вводить исключающие комбинации и многокритериальную оценку, помня, что чем больше ограничений, тем сложнее сходимость.
Выводы
- Базовая таблица лута с весами, null-предметом и повторными бросками покрывает большинство задач случайного дропа.
- Ключевые расширения: беззаменочный дроп, гарантии редких предметов, иерархические таблицы и условные проверки.
- Хранение модифицированной таблицы на игроке позволяет реализовать «жалость» (pity) и жёсткие лимиты ресурсов.
- Таблицы лута — универсальный инструмент: ими удобно описывать AI, процедурную генерацию и другие вероятностные системы.
- Не усложняйте модель без необходимости: для большинства игроков достаточно простого вероятностного поведения.