В Roguelike-играх (например, The Binding of Isaac, Dead Cells, Dungeon Crawl Stone Soup) уровни генерируются случайно, но с соблюдением баланса. Рассмотрим, как теория вероятностей помогает создавать интересные и сбалансированные уровни.
1. Базовые элементы уровня и их вероятности
Допустим, уровень состоит из:
- Комнаты с врагами (50%),
- Сокровищницы (20%),
- Пустые комнаты (30%).
Вопрос:
Какова вероятность, что из 10 комнат хотя бы 3 будут сокровищницами?
Решение:
Используем биномиальное распределение: P(k≥3)=1−P(k=0)−P(k=1)−P(k=2)
где:
- p=0.2 (шанс сокровищницы),
- n=10 (комнат).
Считаем:
- P(k=0)=C(10,0)⋅0.2^0⋅0.8^10≈0.107,
- P(k=1)=C(10,1)⋅0.2^1⋅0.8^9≈0.268,
- P(k=2)=C(10,2)⋅0.2^2⋅0.8^8≈0.302.
Итог: P(k≥3)=1−0.107−0.268−0.302≈0.323(32.3%).
Вывод:
Шанс получить ≥3 сокровищницы — 32.3%.
2. Генерация связанных комнат (кластеры)
Условие:
- Комнаты генерируются в сетке 10×10.
- Если появилась сокровищница, то рядом с ней с шансом 40% будет хранитель (мини-босс).
Вопрос:
Какова вероятность, что в уровне из 5 сокровищниц хотя бы 2 будут с хранителями?
Решение:
Тут работает биномиальное распределение: P(k≥2)=1−P(k=0)−P(k=1)
где p=0.4, n=5.
Считаем:
- P(k=0)=0.6^5≈0.078,
- P(k=1)=C(5,1)⋅0.4^1⋅0.6^4≈0.259.
Итог: P(k≥2)=1−0.078−0.259≈0.663(66.3%).
3. Размещение уникальных событий
Условие:
- На уровне может быть только 1 «секретная комната» (шанс 15%).
- Всего комнат: 12.
Вопрос:
Какова вероятность, что секретная комната появится в первых 5 комнатах?
Решение:
Это гипергеометрическое распределение, но проще через доли: P=512×0.15≈0.0625(6.25%).
4. Баланс сложности (враги + лут)
Условие:
- Враги имеют уровень сложности от 1 до 5.
- Уровень генерирует 10 врагов.
- Средняя сложность должна быть ~3.
Как добиться?
Используем дискретное распределение:
- Уровень 1: 10%,
- Уровень 2: 20%,
- Уровень 3: 40%,
- Уровень 4: 20%,
- Уровень 5: 10%.
Проверка:
Средняя сложность: 1×0.1+2×0.2+3×0.4+4×0.2+5×0.1=3.
5. Генерация ветвящихся путей
Условие:
- Игрок может пойти налево (40%) или направо (60%).
- Каждый путь делится ещё 2 раза.
Вопрос:
Какова вероятность, что игрок пройдёт только правые пути?
Решение:
P=0.6×0.6×0.6=0.216(21.6%).