ДАННЫЙ МОДУЛЬ НЕ ВХОДИТ В СОСТАВ ПУБЛИЧНОЙ ВЕРСИИ!
Альянсы теперь могут рекрутировать Наемников и исследовать технологии!
Счет Альянса
------------
Каждый Альянс имеет счет с ресурсами металл/кристалл/дейтерий/ТМ
Ресурсы со счета Альянса могут расходоваться только на нужды Альянса. Вывод
ресурсов со счета Альянса невозможен
Член Альянса может перевести ресурсы на счет Альянса. Сделать это можно на
главной странице Альянса в разделе "Ресурсы Альянса". Там же можно увидеть
состояние счета Альянса и бонусы, предоставляемые Альянсом (см. ниже).
На ряде страниц (в частности - на странице Исследований) в верхнем ресурсбаре
показывается не количество ресурсов на планете игрока, а количество ресурсов
Альянса
Глава Альянса с его счета может исследовать технологии и рекрутировать
Наемников - соответственно пункты "Исследования Альянса" и "Наемники Альянса"
на странице управления
Исследования Альянса
--------------------
При исследовании технологии уровень лаборатории равен количеству игроков в
Альянсе на момент начала исследования.
Активные исследования видны членам Альянса на странице информации
Бонус Альянса
-------------
После достижения минимально необходимого размера Альянса (10 человек по
умолчанию, задается в таблице `config` записью 'ali_bonus_members') каждый член
Альянса получает бонус к своим Наемникам и технологиям
Бонусы от Наемников и Технологий так же действуют при проверки требований к
постройкам/исследованиям. Например: игрок состоит в Альянсе, дающем бонус +2 к
Лазерной технологии, а его собственный уровень технологии равен 4. Эффективный
уровень технологии этого игрока равен 6. Это означает, что находясь в Альянсе
он имеет доступ к исследованию Ионной технологии (требуется ЛТ 5-го уровня) и
может строить Тяжелый Лазер (требуется ЛТ 6-го уровня). Очевидно, если бы он
не находился в Альянсе, эти постройки были бы заблокированы
Стандартный алгоритм расчета
----------------------------
Данный алгоритм включен по умолчанию (переменная ali_bonus_algorithm в таблице
config установлена в 0).
Значение бонуса зависит от количества игроков в Альянсе и вычисляется по
формуле:
Бонус = round(уровень технологии или Наемника / количество игроков),
где round() - операция математического округления.
Примеры:
1. Альянс из 10 человек купил Технологию 4 уровня:
Бонус = round(4/10) = round(0,4) = 0
2. Альянс из 10 человек купил Технологию 7 уровня:
Бонус = round(7/10) = round(0,7) = 1
Почему все работает именно так?
-------------------------------
Выбранная механика бонусов Альянса призван обеспечить достижение сразу
нескольких целей:
1. Исключить злоупотребление фишкой, когда 2-3 игрока формируют Альянс
исключительно для получения бонусов
2. Активизировать межальянсную активность: бонусы от ресусов Альянса можно
получить только начиная с определенного количества участников. Ну и чем
больше игроков в Альянсе, тем больше у него ресурсов
3. Усилить лояльность игроков к Альянсу - при выходе (или выгоне) из Альянса
игрок теряет все бонусы и (самое неприятное) все ресурсы, пожертвованные в
Альянс
4. Исключить появление мегаальянсов: чем больше игроков - тем больше ресурсов
они могут пожертвовать, но тем меньше бонусов получит каждый отдельный
игрок
5. Слабые игроки в сильных Альянсах получают доступ к end-game юнитам (если,
конечно, глава Альянса решит потратить ТМ на соответствующих Наемников) и
бонус в развитии
6. Сильные игроки смогут поднять эффективные уровни Технологий даже в больших
Альянсах. Например, если в Альянсе 15 человек, то исследовать 15 уровень
технологии всем Альянсом будет проще и дешевле, чем каждому игроку отдельно
7. То же самое распространяется и на Наемников. При этом только Альянс дает
возможность получить эффективный уровень Наемников больше максимального
Выбранный метод расчета бонусов позволяет создавать оптимальную среду для
Альянсов. Регулируя минимальное количество участников для получения бонуса
можно косвенно регулировать размер Альянса.
Оптимальный размер Альянса будет равен:
floor(<минимальный размер> * 1,5)
где floor() - операция отбрасывания дробной части
Однако, возможны варианты. В движке реализованы три метода расчета бонуса
Альянса: по количеству членов Альянса (описанный выше, используется по
умолчанию); по минимальному размеру Альянса; по очкам Альянса; по месту Альянса
в статистике.
Расчет по минимальному размеру Альянса
--------------------------------------
Данный алгоритм включается установкой переменной ali_bonus_algorithm в таблице
config в 1.
Значение бонуса вычисляется по формуле:
Бонус = round(<уровень> * <участники> / sqr(<минимальный размер>)),
где
round() - операция математического округления,
sqr() - операция возведения в квадрат
<уровень> - уровень технологии или Наемника,
<участники> - количиство игроков в Альянсе,
<минимальный размер> - минимальный размер Альянса для получения бонуса.
Примеры для параметров по умолчанию:
1. Альянс из 10 человек купил Технологию 4 уровня:
Бонус = round(4 * 10 / 100) = round(0,4) = 0
2. Альянс из 10 человек купил Технологию 17 уровня:
Бонус = round(10 * 10 / 100) = round(1,7) = 2
3. Альянс из 20 человек купил Технологию 17 уровня:
Бонус = floor(17 * 20 / 100) = round(3,4) = 3
При использовании этого метода нужно уделять особое внимание минимальному
размеру Альянса. Небольшой размер (6 и меньше) будет давать ускоренный рост
бонуса в зависимости от количества членов Альянса - и спровоцирует появление
мегаальянсов. С другой стороны, большой размер (13 и выше) сделает практически
бесполезным исследования и рекрутинг Наемников, поскольку прирост бонуса
требует либа создание ГИГАальянса, либо недостижимо высоких уровней
технологий/Наемников.
Этот метод рекомендуется:
1. При стандартных настойках (скорость игры - 1х-3х, мин.размер - 10) - для
небольших и средних серверов.
2. Мин.размер порядка 8 - для быстрых (10х и выше) PvP серверов.
3. Мин.размер порядка 12 - для больших серверов с околостандартной скоростью
игры (1x-3x).
Расчет по очкам Альянса
-----------------------
Данный алгоритм включается установкой переменной ali_bonus_algorithm в таблице
config в 2.
Значение бонуса вычисляется по формуле:
Бонус = round(<уровень> * <очки> / <количество игроков> / <делитель>),
где
round() - операция математического округления,
<уровень> - уровень технологии или Наемника,
<очки> - количество очков Альянса,
<количество игроков> - количество игроков в Альянсе,
<делитель> - задается переменной ali_bonus_divisor в таблице config, по
умолчанию равен 10.000.000
Данный метод следует использовать с осторожностью и перед его использованием
тщательно исследовать статистику сервер для выбора оптимального значения
ali_bonus_divisor. Кроме того, данный метод поощрает "кучкование" топов в одном
Альянсе.
Расчет по месту Альянса в статистике
------------------------------------
Данный алгоритм включается установкой переменной ali_bonus_algorithm в таблице
config в 3.
Значение бонуса вычисляется по достаточно сложной формуле, которую можно
посмотреть в исходном коде. Здесь же я приведу словесное описание.
1. Рейтинг Альянсов разбивается на определенное количество "категорий". Оно
задается переменной ali_bonus_brackets в таблице config и по умолчанию равно
10. Т.е. динамически строится таблица уровней.
2. Определяется, в какую из категорий попал текущий Альянс и в соответствии с
этим ему присваивается "уровень".
3. В зависимости от уровня назначается коэфициент бонуса. Если Альянс находится
в первой категории - ему устанавливается коэфициент 10 (т.е.
ali_bonus_brackets), во второй - 9 и так далее до последней категории, в
которой присваивается коэфициент 1.
4. Полученный коэфициент делится на ali_bonus_brackets_divisor из таблицы
config (50 по умолчанию). Фактически, ali_bonus_brackets_divisor
контролирует как сильно уровень Альянса влияет на бонус от
технологии/Наемника.
5. Бонус Альянса получается умножением результата предыдущих операций на
уровень технологии или Наемника.
Пример 1
Настройки по умолчанию. Альянс занмает 5 место из 80.
1. Размер категории = 80/10 = 8. Т.е. первый уровень - Альянсы с рейтингом от 1
до 9, второй уровень - от 10 до 18 итд.
2. Наш Альянс попал в первую категорию - его уровень равен 1.
3. Его коэфициент бонуса равен 10.
4. Множитель бонуса = 10/50 = 0,2.
5. Таким образом бонус будет равен 20% от уровня технологии/Наемника.
До 2го уровня - бонус будет равен нулю.
С 3го по 7й - бонус равен 1.
С 8го по 12й - бонус равен 2.
И так далее
Пример 2
5 категорий, делитель 50. Альянс занмает 50 место из 80.
1. Размер категории = 80/5 = 16. Таблица уровней: 1-16, 17-32, 33-48, 49-64,
65-80.
2. Альянс попал в 4ю категорию, уровень равен 4.
3. Коэфициент бонуса равен 2.
4. Множитель бонуса = 2/50 = 0,04
5. Таким образом бонус будет равен 4% от уровня технологии/Наемника.
До 12го уровня - бонус будет равен нулю.
С 13го по 37й - бонус равен 1.
С 38го по 62й - бонус равен 2.
И так далее
На последнем примере демонстрируется важность правильного подбора делителя под
количество категорий.