Объявления

Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Недели и Месяцы

Обсуждаем, делимся впечатлениями, новой информацией
offlineАватара пользователя
DeathLust  
Подмастерье
Подмастерье
 
Сообщения: 140
Зарегистрирован: 29 ноя 2012, 15:19
Пол: Не указан
Поблагодарили: 62 раз.

Re: Недели и Месяцы

Сообщение DeathLust » 07 май 2015, 15:22

AlexSpl писал(а):

Хорошее наблюдение. Грейженые монстры при наступлении месяца их даунгрейдов не удваиваются.

Правильное наблюдение заключается в том, что недели/месяцы существ воздействуют только на прирост именно указанных существ, никак не затрагивая их апдаунгрейды.
Вернуться к началу

offlineАватара пользователя
DeathLust  
Подмастерье
Подмастерье
 
Сообщения: 140
Зарегистрирован: 29 ноя 2012, 15:19
Пол: Не указан
Поблагодарили: 62 раз.

Re: Недели и Месяцы

Сообщение DeathLust » 07 май 2015, 15:49

Интересный и животрепещущий вопрос в тему: в какой момент выбирается тип наступающей недели?
Играл турнир. Строю на 7 день Чемпионов. Наступает неделя Кавалеристов. Соответственно откатываю постройку улучшенного жилища, и всё равно наступает неделя Кавалеристов.
Отсюда возникает ряд предположений:
1. Рэндом детерминированный и зависящий не от того, что я менял перед окончанием хода.
2. Будущая неделя выбирается при ещё при переходе хода на 6 день.
3. Будущая неделя выбирается при наступлении текущей недели.
4. Вся цепочка недель может быть вычислена, исходя из некоторого начального значения сида при старте карты.

А как на самом деле? И, если возможно что-то спрогнозировать (варианты 2-4), то хорошо бы это добавить в Оракул :smile2:
Вернуться к началу

offlineАватара пользователя
DeathLust  
Подмастерье
Подмастерье
 
Сообщения: 140
Зарегистрирован: 29 ноя 2012, 15:19
Пол: Не указан
Поблагодарили: 62 раз.

Re: Недели и Месяцы

Сообщение DeathLust » 07 май 2015, 16:07

DeathLust писал(а):

Играл турнир. Строю на 7 день Чемпионов. Наступает неделя Кавалеристов. Соответственно откатываю постройку улучшенного жилища, и всё равно наступает неделя Кавалеристов.

Хотя это могло быть, конечно, проявление зацикливания рэндома при повышении уровня у компьютерного героя.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5538
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Недели и Месяцы

Сообщение AlexSpl » 07 май 2015, 16:15

Цитата:
Интересный и животрепещущий вопрос в тему: в какой момент выбирается тип наступающей недели?

После хода последнего из игроков в 7-й день недели.

Цитата:
Отсюда возникает ряд предположений:
1. Рэндом детерминированный и зависящий не от того, что я менял перед окончанием хода.
2. Будущая неделя выбирается при ещё при переходе хода на 6 день.
3. Будущая неделя выбирается при наступлении текущей недели.
4. Вся цепочка недель может быть вычислена, исходя из некоторого начального значения сида при старте карты.

Предсказать всю цепочку недель и месяцев в подавляющем большинстве случаев нельзя. Какая неделя или месяц наступит, зависит от последнего действия игрока, которое требует броска игральной кости. Повторение возникает в том случае, если такое действие оказалось повышением уровня какого-нибудь героя. Если ни один из героев не повышает уровень в 7-й день, то, как правило, можно сгенерировать какую угодно неделю или месяц.
Вернуться к началу

offlineQwerty  
Подмастерье
Подмастерье
 
Сообщения: 198
Зарегистрирован: 20 янв 2012, 12:04
Пол: Не указан
Награды: 3
Наградной знак (3)
Поблагодарили: 67 раз.

Re: Недели и Месяцы

Сообщение Qwerty » 16 июн 2015, 07:10

Саша, огромное спасибо за материал, очень интересно.
Когда я несколько лет назад исследовал эту тему, пытался помимо прироста рассчитать алгоритм выкупа компьютером юнитов.
Напомнило мне это известные задачи про оптимальные наборы монетами нужной суммы. Вроде как смутно припоминаю, что что-то то ли в интегральном то ли в дифференциальном исчислении когда-то проходил, но был 1988 год и в голове было много всего помимо этого ...
В общем, я так и не сформулировал алгоритм выкупа.
Могу сказать отправные точки:
1. Компьютер крайне редко скупает гигантов.
2. Компьютер скупает титанов в последнюю очередь, причём зачастую у него есть деньги на частичную (может это и ключевой момент) их скупку.
3. Компьютер скупает чёрных драконов в последнюю очередь.
4. Компьютер скупает крестьян в последнюю очередь.
5. Компьютер довольно редко скупает зелёных и красных драконов.
6. Возможно (ничем не подтверждено реально), тип поведения компьютера влияет на процессы скупки.
7. Есть гипотеза, что компьютер хочет по возможности скупать отряды целиком (возможно, это связано с особенностью прироста юнитов в замках компа).

Думаю, этот вопрос интересовал и тебя. Напиши, что думаешь ...
Вернуться к началу

offlineQwerty  
Подмастерье
Подмастерье
 
Сообщения: 198
Зарегистрирован: 20 янв 2012, 12:04
Пол: Не указан
Награды: 3
Наградной знак (3)
Поблагодарили: 67 раз.

Re: Недели и Месяцы

Сообщение Qwerty » 01 июл 2015, 08:17

Пришёл к выводу, что материал по неделям и месяцам является самым интересным как минимум за последние 2 года. Прочитал его 5 (Пять) раз.
Вернуться к началу

offlineАватара пользователя
Владимир  
Эксперт
Эксперт
 
Сообщения: 1031
Зарегистрирован: 30 окт 2012, 18:37
Пол: Не указан
Награды: 3
Высшая медаль (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (1)
Поблагодарили: 614 раз.

Re: Недели и Месяцы

Сообщение Владимир » 07 авг 2015, 06:02

Попытка систематизировать всё то, что собрал и описал AlexSPl, ну и немножко я.
Считаю, что эта информация должна попасть в один новый раздел справочника. Порядок подачи материала и поясняющий текст согласуем, пока просто соберу всё вместе.

Отряды нейтральных существ-охранников при начале игры на карте имеют численность, указанную в таблице.
 
Peasants40-80
Sprites25-45
Centaurs, Halflings, Skeletons20-50
Goblins25-40
Rogues20-40
Wolves20-35
Archers, Rangers, Pikemen, Veteran pikemen20-30
Orcs, Orc chiefs, Gargoyles, Boars, Zombies, Mutant zombies, Elves15-30
Grand elves12-28
Air elementals, Earth elementals, Fire elementals, Water elementals13-25
Dwarves, Griffins, Nomads, Swordsmen, Master swordsmen, Ogres12-25
Iron golems, Mummies, Royal mummies, Druids10-25
Battle dwarves, Steel golems10-22
Medusas12-20
Ogre lords, Greater druids, Ghosts10-20
Cavalries10-18
Minotaurs, Rocs10-16
Minotaur kings9-16
Champions8-16
Unicorns8-15
Vampires, Vampire lords, Magi8-12
Phoenix7-12
Paladins6-12
Archmagi7-11
Trolls, War troll, Hydras7-10
Liches, Power liches, Crusaders6-10
Genies5-10
Giants5-8
Bone dragons4-8
Cyclopes5-7
Green dragons4-7
Red dragons, Black dragons, Titans3-7


В первый день каждой новой недели численность охранников увеличивается примерно на 1/7. Точная формула
Nnew=N+[N/7]+I, где I=1 с вероятностью P(I=1)=N%7, и I=0 иначе.
Прирост уже имеющихся отрядов охранников не зависит от типа недели/месяца.(??)

Как происходит еженедельный прирост существ в жилищах городов и замков?

Прирост Growth в жилище равен:

Growth = [[(BaseGrowth + Well + Grower) * NeutralTownMod] * CompMod] + WeekBonus, где

BaseGrowth - базовый прирост,
Well - бонус Колодца (Well = 2, если Колодец построен, иначе 0),
Grower - бонус генератора существ 1-го уровня (Grower = 8 для всех жилищ 1-го уровня, в случае если отстроен генератор, иначе 0),
NeutralTownMod = 0.5 для нейтральных городов и замков, иначе равен 1,
CompMod - модификатор прироста для компьютерного игрока (в случае если число существ в жилище равно 0, т.е. комп выкупил всех существ в жилище до наступления новой недели, CompMod = 1.2 на сложности игры "Тяжелая", CompMod = 1.32 на сложности "Эксперт", CompMod = 1.44 на сложности "Невозможная", иначе равен 1),
WeekBonus - бонус недели существ (WeekBonus = 5, если наступила неделя существа в жилище, иначе 0).

Примеры
1. Найти прирост крестьян в нейтральном городе без Колодца и Фермы:
Growth = [[(12 + 0 + 0) * 0.5] * 1] + 0 = (или проще) [12 / 2] = 6

2. Найти прирост крестьян в замке компьютерного игрока с отстроенным Колодцем и Фермой на сложности "Невозможная" и при условии, что комп выкупил всех крестьян до наступления новой недели, которая оказалась неделей крестьян:
Growth = [[(12 + 2 + 8) * 1 ] * 1.44] + 5 = 36

С неделями всё то же самое, что и в Героях 1, поэтому просто продублирую пост из "Интересных фактов" с небольшими изменениями. Т.к. формулу недельного прироста я привёл выше, то не буду тратить время на расчёт табличек с бонусами прироста для компьютерных игроков. Если будет соответствующий раздел в Справочнике, посчитать не составит труда. Итак.

Недели в игре Герои Меча и Магии 2
Относится к 2-4 неделе каждого месяца, верно?

1. Недели, когда ничего не происходит

Сообщение:
"Астрологи объявляют неделю [название недели].

Население всех жилищ возросло."

Вероятность: 75%
Всего существует 15 недель, когда ничего не происходит:
Белки, Кролика, Суслика, Барсука, Крысы, Орла, Горностая, Ворона, Мангуста, Собаки, Муравьеда, Ящерицы, Черепахи, Дикобраза, Кондора.
Они наступают с одинаковой вероятностью 1/20.

Эффект: нет.

2. Недели, когда прирост определённых монстров увеличивается

Сообщение:
"Астрологи объявляют, что этой неделе покровительствует сила [название существа в родительном падеже мн. ч.].

Популяция [название существа в родительном падеже мн. ч.] +5.

Население всех жилищ возросло."

Вероятность: 25%
Любая из таких недель наступает с одинаковой вероятностью 1/228 (25% * 1/57 по числу замковых существ).

Эффект:
Прирост существ в жилищах, за исключением внешних, увеличивается на 5.


Месяцы в игре Герои Меча и Магии 2

1. Месяцы, когда ничего не происходит

Сообщение:
"Астрологи объявляют месяц [название месяца].

Население всех жилищ возросло."

Вероятность: 50%.
Всего существует 10 месяцев, когда ничего не происходит:
Кузнечика, Муравья, Стрекозы, Паука, Бабочки, Шмеля, Цикады, Земляного червя, Шершня, Жука.
Они наступают с одинаковой вероятностью 1/20.
Эффект: нет.


2. Месяцы, когда популяция определённых монстров удваивается

Сообщение:
"Астрологи объявляют, что этому месяцу покровительствует сила [название существа в родительном падеже мн. ч.].

Популяция [название существа в родительном падеже мн. ч.] удваивается!

Население всех жилищ возросло."

Вероятность: 40%.
Популяция удваивается только для следующих монстров:
Крестьянин, Тролль, Гном, Рух, Огр, Друид, Вампир, Волк, Кентавр, Горгулья, Единорог, Лич.

Любой из этих месяцев наступает с одинаковой вероятностью 1/30.
Эффект:
1. Количество существ в жилищах, за исключением внешних, удваивается. Прирост существ во внешних жилищах происходит обычным образом.
Число существ, чья популяция удваивается, рассчитывается следующим образом:
– сначала происходит обычный прирост существ в жилище;
– затем количество существ в жилище удваивается;
Пример:
Вопрос:
На конец месяца имеем 54 крестьянина. В замке построены Колодец и Ферма. Сколько крестьян будет доступно для найма в жилище, если наступает месяц "крестьян"?
Ответ: (54 + 12 (базовый прирост) + 2 (Колодец) + 8 (Ферма)) * 2 = 152 (крестьянина).

2. На карте случайным образом появляются новые отряды нейтралов, чья популяция удваивается (см. ниже).

Вероятность появления нового отряда нейтралов зависит от общего числа клеток на карте, на которых они могут появиться (например, понятно, что они не могут появиться на воде или на занятой клетке). Вероятность появления новых нейтралов для каждой такой клетки равна 1/361. Вероятность, что новый отряд нейтралов окажется лояльным равна 20/101.

Численность новых нейтралов, появляющихся на карте при наступлении месяца

Численность нейтралов в новом отряде есть сумма двух случайных чисел из следующих диапазонов (совпадают с числом существ в отрядах при начале игры):
Код: Выделить всё
1.  Крестьяне       40 – 80
2.  Тролли          7 – 10
3.  Гномы           12 – 25
4.  Рухи            10 – 16
5.  Огры            12 – 25
6.  Друиды          10 – 25
7.  Вампиры         8 – 12
8.  Волки           20 – 35
9.  Кентавры        20 – 50
10. Горгульи        15 – 30
11. Единороги       8 – 15
12. Личи            6 – 10

Например, численность единорогов в новом отряде при наступлении одноимённого месяца будет равна [8 - 15] + [8 - 15] = [16 - 30].


3. Месяц чумы

Сообщение:
"Астрологи объявляют месяц ЧУМЫ!

Население всех жилищ уменьшилось вдвое."

Вероятность: 10%.

Эффект:
1. Прироста существ в замках и городах не происходит.
2. Количество существ во всех жилищах, за исключением внешних, уменьшается вдвое.

На самом деле, прирост сначала происходит как обычно:

Growth = [(BaseGrowth + Well + Grower) * CompMod]

В месяц чумы, от этого числа отнимается прирост, но уже без бонуса для компа! Для игрока-человека CompMod = 1, и всё выглядит так, как будто прироста нет, а число существ в жилищах уполовинилось: (BaseGrowth + Well + Grower) - (BaseGrowth + Well + Grower) = 0. Для компа эта разность не равна 0: (BaseGrowth + Well + Grower) * CompMod - (BaseGrowth + Well + Grower) > 0.
Это значит, что в пустые жилища компьютерного игрока немного новых существ придут даже в месяц чумы!

Давайте рассмотрим следующий реальный случай. Играем на сложности "Невозможная" (CompMod = 1.44). В замке компа отстроены гоблины и волки, Колодец (+2) и Мусорная куча (+8). Все волки выкуплены, а вот 1 гоблина комп оставил. Что происходит, когда наступает месяц чумы?

1. Находим прирост гоблинов. Так как гоблины выкуплены не полностью, то CompMod = 1 и прирост Growth = 10 + 2 + 8 = 20. Итого гоблинов: 1 (невыкупленный) + 20 (прирост) = 21. При наступлении месяца чумы прирост вычитается: 21 - 20 = 1 (т.е. идёт "откат" прироста), и оставшееся количество существ делится нацело на 2: [1 / 2] = 0. В итоге у компа гоблинов нет.

2. Находим прирост волков. Так как волки полностью выкуплены, то CompMod = 1.44 и прирост Growth = [(5 + 2) * 1.44] = 10 (волков). При наступлении месяца чумы прирост вычитается, но уже без модификатора CompMod, т.е. остаётся 10 - 7 = 3 волка, которые и уполовиниваются: [3 / 2] = 1!

В итоге у компа не остаётся ни одного гоблина, зато появляется новый волк :)

О том, как формируется гарнизон нейтральных городов и замков и как происходит прирост существ в таком гарнизоне

Начальное формирование гарнизона и еженедельное его пополнение происходит почти одинаково.

Если гарнизон нейтрального города/замка не был задан вручную, в него попадут 4 отряда неулучшенных существ 1-4 уровня этого города/замка. Например, для замка Рыцарей это будут Peasants, Archers, Pikemen и Swordsmen. Отряды занимают слоты гарнизона слева направо. Тип существ в отрядах может повторяться, отряды одинаковых существ объединяются в один слот. Например, гарнизон замка может состоять только из одного большого отряда крестьян (все 4 отряда оказались отрядами крестьян и объединились).

Пополнением назовём отряд неулучшенных существ 1-5 уровня этого города/замка, который приходит в гарнизон.
Базовый размер пополнения (BaseGrowth) зависит от уровня существ:

1-й уровень: 8 - 15
2-й уровень: 5 - 7
3-й уровень: 3 - 5
4-й уровень: 1 - 3
5-й уровень: 1

Размер пополнения увеличивается в зависимости от длительности игры, а именно на 1 существо за каждые 20 дней игры. Нетрудно догадаться, что бонус начинает действовать только с 4-й недели (1-4-1 = 22-й игровой день). Если обозначить пополнение гарнизона как Growth, а порядковый номер дня, в который происходит пополнение, - DayNumber, то Growth = BaseGrowth + [DayNumber / 20].

Каждую неделю в гарнизон приходит один или два отряда. Второй отряд придёт с вероятностью 80/101 для замка и 40/101 для города. Оба новых отряда могут состоять из одних и тех же существ. Новые отряды присоединяются к старым.

Если 4-й уровень существ может быть в гарнизоне нейтрального города/замка с самого начала, то 5-й уровень существ начинает пополнять ряды защитников гарнизона далеко не сразу. С течением игрового времени вероятность того, что пополнение будет состоять из низкоуровневых отрядов (1-4-й уровень), падает. Соответственно, растёт вероятность высокоуровневого пополнения (5-й уровень). Вероятности равны (Tier - уровень существ):

P[Tier 1] = 5 / (15 + [DayNumber / 10])
P[Tier 2] = 5 / (15 + [DayNumber / 10])
P[Tier 3] = 3 / (15 + [DayNumber / 10])
P[Tier 4] = 2 / (15 + [DayNumber / 10])
P[Tier 5] = [DayNumber / 10] / (15 + [DayNumber / 10])

Так, при формировании гарнизона (1-1-1, DayNumber = 1) и для первого пополнения в начале второй недели (1-2-1, DayNumber = 8) имеем:

P[Tier 1] = 5/15
P[Tier 2] = 5/15
P[Tier 3] = 3/15
P[Tier 4] = 2/15
P[Tier 5] = 0

Первое пополнение 5-го уровня появится не раньше 1-3-1 (DayNumber = 15):

P[Tier 1] = 5/16
P[Tier 2] = 5/16
P[Tier 3] = 3/16
P[Tier 4] = 2/16
P[Tier 5] = 1/16

Как видно, при очень долгой игре гарнизон будет пополняться практически только отрядами 5-го уровня. Недели и месяцы прироста существ на размер гарнизона не влияют.
Предполагаемый порядок: нейтральные охранники, гарнизоны, общая формула прироста в замках, недели, месяцы. Ещё нужно на видное место поместить ссылку на "объекты на карте приключений" (прирост в домиках). Отличия от Героев 1 предлагаю отмечать по ходу, а не писать отдельным списком.
Проверьте, пожалуйста, то, что я написал красным.
Вопросы, предложения?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5538
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Недели и Месяцы

Сообщение AlexSpl » 07 авг 2015, 15:43

Цитата:
Прирост уже имеющихся отрядов охранников не зависит от типа недели/месяца.(??)

Из опыта могу сказать, что не зависит. Я не встречал. Да и картостроителям было бы неудобно. Но всегда можно проверить :smile2:

Цитата:
Относится к 2-4 неделе каждого месяца, верно?

Верно. Наступление нового месяца вытесняет все события, связанные с наступлением новой недели, кроме прироста существ.

Цитата:
В первый день каждой новой недели численность охранников увеличивается примерно на 1/7. Точная формула
Nnew=N+[N/7]+I, где I=1 с вероятностью P(I=1)=N%7, и I=0 иначе.

P(I=1)=N%7 - неверно. По определению 0 <= P <= 1. Остаток же от деления на 7 может принимать значения из диапазона [0; 6]. Правильно так: P[Bonus = 1] = N % 7 / 7. Но игроки, которым синтаксис языка C незнаком, вряд ли догадаются, что символ "%" - это остаток от деления нацело. Поэтому я упростил: P[Bonus = 1] = N % 7 / 7 = (N - 7 * [N/7]) / 7 = N/7 - [N/7] = {N/7}, где {} - дробная часть. Да и потом, N % 7 / 7 плохо хотя бы потому, что первая операция целочисленная, а вторая - нет.

Абзац про особенности прироста у компьютерного игрока в месяц чумы лучше спрятать под спойлер, т.к. технически - это описание бага. Сравнение с Героями 1 можно и не делать, если добавить в соответствующий раздел по Героям 1 аналогичную информацию (прирост существ, гарнизон и т.п.). Но можно добавить под спойлер абзац из данной темы с кратким сравнением недель и месяцев в первой и второй частях Героев, а также событий их сопровождающих.
Вернуться к началу

offlineZelya  
Мастер
Мастер
 
Сообщения: 390
Зарегистрирован: 04 янв 2011, 15:16
Пол: Не указан
Поблагодарили: 203 раз.

Re: Недели и Месяцы

Сообщение Zelya » 07 авг 2015, 17:52

AlexSpl писал(а):

Да и потом, N % 7 / 7 плохо хотя бы потому, что первая операция целочисленная, а вторая - нет.

Вторая - тоже вполне себе целочисельная: деление без остатка, она же div. И все-таки, мне кажется, что Сишная формула более понятная хоть кому-то.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5538
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Недели и Месяцы

Сообщение AlexSpl » 07 авг 2015, 18:46

В том-то и дело, что деление - самое что ни на есть обычное :) И, насколько мне известно, C в школе обычно не изучают, а что такое [] и {} должны знать все, кто не прогуливал уроки математики.
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 5