Генерация случайных уровней в Roguelike-играх

В Roguelike-играх (например, The Binding of IsaacDead CellsDungeon 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%).


Прокрутить вверх