Снижение влияния фактора случайности на выбор мест и силы гоблинов
Об этом я уже писал в теме про Лабиринт, но лучше повторю тут, немного дополнив.
Зачем это нужно?
На данный момент можно встретить как Лабиринты с множеством гоблинов (высокая защита), так и Лабиринты всего с несколькими гоблинами (низкая защита). Т.е. сложность Лабиринта сейчас определяется в большой степени таким фактором, как везение.
Что предлагаю
Не уходить от нынешней системы, но ввести некие рамки, позволяющие снизить её (системы) негативные эффекты.
Примерный механизм реализации
1. Каждому месту присваивается некое числовое значение в зависимости от цвета гоблина, которого можно будет поставить на это место (сила места). Вводится так же модификатор, учитывающийся при учёте суммарной силы нескольких мест, объединённых в одну группу.
Зелёный - 2
Синий - 3
Фиолетовый - 5
Оранжевый - 7
Модификатор - 1,3
* Здесь и далее курсивом будут обозначаться примеры.
2. Определяются максимальные и минимальные комбинации мест для каждого типа комнат (коридор, развилка, перекрёсток). Эти комбинации так же "оцифровываются", т.е. высчитываются их численные значения.
Минимальная комбинация для коридора: 1 фиолетовый. Сила: 5.
Максимальная комбинация для коридора: 1 фиолетовый + 5 синих. Сила: 1,3 [модификатор] * ( 5 [фиолетовый] * 1 [количество] + 3 [синий] * 5 [количество] ) = 1,3 * ( 5 + 15 ) = 26
3. Определяются средние значения силы для комнат каждого типа.
Среднее значение силы для коридора: ( 5 + 26 ) / 2 = 15,5
4. "Оцифровываются" все имеющиеся Лабиринты игроков. Выводится общая сила каждого Лабиринта (сумма сил всех комнат). Так же фиксируется информация о количестве комнат разного типа в каждом Лабиринте.
Лабиринт игрока хХхВасяхХх имеет следующие комнаты:
Коридор: 1 фиолетовый, 1 синий + 3 зелёных. Сила: 5 + 11,7 = 16,7
Коридор: 1 оранжевый. Сила: 7
Перекрёсток: 2 синих + 4 зелёных, 7 зелёных. Сила: 18,2 + 18,2 = 36,4
Общая сила Лабиринта: 16,7 + 7 + 36,4 = 60,1
В Лабиринте имеются: 2 коридора, перекрёсток.
5. Лабиринт каждого игрока сравнивается по силе с эталонным Лабиринтом (сумма средних сил такого же количества комнат таких же типов). Если сила Лабиринта игрока находится в интервале ( эталонный Лабиринт * 0,9 ) - ( эталонный Лабиринт * 1,1 ), то он получает статус "Обычный". Если сила Лабиринта игрока ниже этих значений, то он получает статус "Ослабленный". Если выше - "Усиленный".
Сила Лабиринта игрока хХхВасяхХх: 60,1
Сила эталонного Лабиринта для конфигурации 2 коридора и 1 перекрёсток: 15,5 * 2 + 22 = 53
Интервал эталонного лабиринта: 47,7 - 58,3
Статус Лабиринта игрока хХхВасяхХх: "Усиленный".
6. При строительстве игроком новой комнаты учитывается статус Лабиринта, и в зависимости от него игрок получает комнату с большей силой, со случайной силой или с меньшей силой.
Статус "Ослабленный": Выбор из интервала ( среднее значение силы ) - ( максимальное значение силы ).
Для коридора: 15,5 - 26
Статус "Обычный": Выбор из интервала ( минимальное значение силы ) - ( максимальное значение силы ).
Для коридора: 5 - 26
Статус "Усиленный": Выбор из интервала ( минимальное значение силы ) - ( среднее значение силы ).
Для коридора: 5 - 15,5
7. Значение силы Лабиринта игрока меняется, сравнивается с эталонным Лабиринтом и при необходимости меняется статус.
Игрок хХхВасяхХх построил новый коридор с силой 6.
Сила Лабиринта игрока хХхВасяхХх: 60,1 + 6 = 66,1
Сила эталонного Лабиринта для конфигурации 3 коридора и 1 перекрёсток: 15,5 * 3 + 22 = 68,5
Интервал эталонного лабиринта: 61,65 - 75,35
Новый статус Лабиринта игрока хХхВасяхХх: "Обычный".
В итоге
Игроки получают случайное число, случайное расположение, случайную силу гоблинов, т.е. сохраняется прежняя система. Но при этом сила (теоретическая) Лабиринтов разных игроков становится примерно сопоставима.