Шесть предложений по уменьшению Save/Load

Все об аддоне - обсуждение, баги, FAQ, список изменений и многое другое.
Post Reply
Baskakov_Dmitriy
Level 6 Hero
Level 6 Hero
Posts: 78
Joined: Thu Apr 20, 2017 04:10

Шесть предложений по уменьшению Save/Load

Post by Baskakov_Dmitriy »

В нашей любимой HoMM IV довольно немало зависит от случайностей. Например, в некоторых случаях решение о том, какое существо строить, можно принять в зависимости от типов выпавших ресурсов. В синглплеере в случае, если приходит очень много серы, имеет смысл выбрать Гидр, а если много ртути — Чёрных Драконов. Да, это случайность, но эта случайность приносит в игру интерес.

Но есть случайности, которые делают игру только скучнее. Например, если в вузах выпали бесполезные или одинаковые навыки, а противнику — нет. Если тебе пришли хорошие заклинания, а противнику плохие. У тебя стартовые шахты охраняют Зомби и Скелеты, а у противника — Импы и Призраки. В стартовом бою у твоих Големов резист к магии сработал все разы, когда их пытались замедлить вражеские Джинны, а у противника не сработал ни разу. Твои Орки выкинули максимальный урон, Орки твоего противника несколько раз выкинули минималку, и в результате его стартовый герой сдох, он потерял пару ходов. Или что-то из этого наоборот, уж как повезёт.

Многие из перечисленных случайностей провоцируют довольно неприятного типа баттхёрт, когда понимаешь, что, в общем, действительно мало что можно было сделать, причём порой слишком поздно. Многие из них провоцируют довольно неприятный Save/Load в сингле, и я предлагаю ряд изменений, который должен значительно уменьшить влияние сей грязной тактики на игру.

I. При посещении алтарей дать возможность сознательно выбрать навык, который будет дан (если, конечно, есть из чего выбирать), без S/L

II. При левел-апе — просто сделать сознательный выбор, или хотя бы увеличить заметно количество вариантов (хотя бы до 6), но лучше сделать именно полноценный выбор. Компу прописать конкретный путь апгрейдов, как вариант, несколько путей, или просто выдавать нужные навыки почти нахаляву с течением времени.

III. Изменить механизм работы “вузов” — мест, где герой может за плату получить один из навыков.
Как в оригинале: есть четыре рандомных навыка из списка, если герой не может их выучить, предлагается более базовый.
Как предлагается: дать возможность два раза повысить каждый из навыков, которым учат в вузе, на выбранную игроком следующую ступень. То есть, например, в Семинарии герой-рыцарь 1 уровня сможет (в первую итерацию) прокачать Тактику 2 (основной навык) или Защиту 2, или овладеть Лидерством 1/Атакой 1. Но он сможет выбрать только два повышения именно Тактики. В то же время, он также может овладеть гарантированно Магией Жизни 1 и Целительством 1 (в две итерации). Магии Жизни он уже учиться в этом вузе не сможет, но зато сможет в другом, например, если захватит ещё один город-Обитель и выстроит Семинарию там.

Очень важен сознательный выбор, какой именно навык появится. S/L в данном случае уходит полностью. Уже становится и не так важно, в какой момент герой использует вуз.

IV. Связано с предыдущим — изменить механику престиж-классов, давая герою бонусы всех классов, до которых может он может дотянуться. Т.е. герой с Тактикой 5/5/5/5, Разведкой 5/5/0/5 и Благородством 2/1/0/0 будет иметь бонус Фельдмаршала (+10% к атаке армии), Гильдмейстера (шанс на оглушение) и Lord Commander (+2 к морали всем союзным армиям). Это может в некотором роде компенсировать недостаток вот этого (https://celestialheavens.com/equilibris ... f=5&t=9380) предложения по бафу низкоуровневых существ, бафнув героев, и сделав более интересным “растекание мыслью по древу”. Условно говоря, как и в реальности, мы получаем довольно интересный выбор — качать одну-две области как следует, получив преимущества высоких рангов, или распределиться и получить преимущества многих престиж-классов. Конкретное количество в зависимости от количества навыков: 1 навык — 0 престиж-классов, 2 навыка — 1 престиж-класс, 3 навыка — 3 престиж-класса, 4 навыка — 6 классов (!), 5 навыков — 10 престиж-классов (!!!). Начиная с 3 и более навыков, если имеются три школы магии, также добавляется класс “Архимаг” — впрочем, его я предлагаю давать только тем героям, у которых есть по три школы магии на Expert или выше.
При этом герою, пожалуй, всё равно стоит присваивать некоторый “официальный” престиж-класс, который будет определять сферу возможных для взятия на левел-апе новых навыков (имеющиеся должна быть возможность прокачать всегда).
Возможно, хорошим решением, если будет возможность брать именно новые навыки, а не качать только имеющиеся, давать престиж-класс только за 3 ранга в навыке, чтобы нельзя было, вложив много золота, мгновенно серьёзно натренировать героя.

Таким образом, особенно в сочетании с предыдущим, не тот выпавший алтарь или навык на левел-апе не приведёт к потере нужного престиж-класса, а герои станут менее бесполезными на фоне бафа существ.

IV. Ввести распределение Гаусса на урон существ, как вариант, сделать “колокол” более “вытянутым” при росте стака, т.е. чем больше существ, тем более предсказуем урон. С одной стороны, избавит старт от досадных неудач, с другой — от необходимости в некоторых случаях делать S/L, чтобы добится нескольких максимальных или близких к максимальным результатов и провести без потерь бой, который на этом моменте сложно провести без потерь. Т.е. количество S/L возрастёт настолько, что вряд ли на него кто-то серьёзно пойдёт, особенно в сингле.

V. Я не знаю, есть ли в используемом программирования функция генерации случайного числа, выдающая кривую Гаусса, но думаю, что есть или её можно найти/написать. Если нет — на современных машинах, полагаю, даже для тысячных стаков вполне сойдёт просто сгенерировать соответствующее количество значений базового урона, просуммировать и далее все манипуляции как обычно, хотя это и не лучший вариант.

Также это сделает менее рандомными более поздние битвы, и сделает заклинания, обходящие рандом (Проклятие/Блесс, частично Рвение/Печаль и Удачу/Неудачу) более важными. Жизнь имеет два заклинания из списка, Порядок может их украсть и отменить, Смерть — наложить Проклатие, Печаль и отменить прочие, природа — наложить Фортуну самостоятельно или через призыв Лепреконов, Рвение — через призыва Сатиров. В пролёте тут только Хаос. Ну, на то он и Хаос, чтобы не иметь возможности обходить рандом. :) Пусть у соседей учится, или страдает.

VI. Реализуемо через карту, но всё же: давать на старте двух героев при старте за любую фракцию: “воина” и “мага”, чтобы не было S/L в этой области. Фракции Might выдавать со старта трёх варваров.
_____________
Save/Load как приём при всём этом нисколько не умирает (что для меня, скорее, досадно), но его теперь предстоит чаще использовать, скорее, в случае ошибки игрока, нежели в случае, когда ему просто не повезло.
#Разбуди_меня_в_3.51//#Единички_живут_один_день//#МореХитов//#F11248
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Re: Шесть предложений по уменьшению Save/Load

Post by CTPAHHuK »

Все предложения, по сути, выезжают за счет стремления рандома к нулю в окрестности выбранной точки. Снова напомню хорошие слова Teacher'а: "не будь в героях случайности, я сел бы играть в шахматы".

В этой теме меня как математика, собственно, заинтересовал вот какой вопрос: твоя нулевая гипотеза о ненормальности распределения в героях 4 чем-то подкреплена?
Baskakov_Dmitriy
Level 6 Hero
Level 6 Hero
Posts: 78
Joined: Thu Apr 20, 2017 04:10

Re: Шесть предложений по уменьшению Save/Load

Post by Baskakov_Dmitriy »

CTPAHHuK wrote: Thu Apr 27, 2017 21:29 Все предложения, по сути, выезжают за счет стремления рандома к нулю в окрестности выбранной точки.
Да, так и есть -- с целью уменьшения S/L.
CTPAHHuK wrote: Thu Apr 27, 2017 21:29 Снова напомню хорошие слова Teacher'а: "не будь в героях случайности, я сел бы играть в шахматы".
Дело в том, что, как я описал, есть случайности, которые делают игру интересной, и к которым интересно адаптироваться, а есть противные, из-за которых хочется только сделать рестарт. Например, я имею Камень Знаний, и решил нанять Лорда, качнуть таким образом до 2 лвл и посадить в замок сидеть, прирост высиживать. А Лорду не выпало при левелапе Благородство 2, выбор между Дипломатией 1, Имуществом 2, Горняком 1. Это неприятно, это запоротый в данном случае герой.

В это же время разные заклинания, выпавшие на 5 лвл, или наличие разных ресурсов по идее должно стимулировать игрока избирать разные тактики.
CTPAHHuK wrote: Thu Apr 27, 2017 21:29 В этой теме меня как математика, собственно, заинтересовал вот какой вопрос: твоя нулевая гипотеза о ненормальности распределения в героях 4 чем-то подкреплена?
Вопрос хороший. Подкреплена тем, что где-то кто-то о ненормальном распределении говорил, мол, выбирается просто случайное число из промежутка, каждое с равной вероятностью, умножается на Атаку, делится на Защиту жертвы -- вуаля, вычислили урон. Таким образом, одна сотня нейтралов с уроном 1-3, Атакой и Защитой по 10, ударит под другой такой же сотне либо на 100, либо на 200, либо на 300 урона, и всё.
#Разбуди_меня_в_3.51//#Единички_живут_один_день//#МореХитов//#F11248
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Re: Шесть предложений по уменьшению Save/Load

Post by CTPAHHuK »

Baskakov_Dmitriy wrote: Fri Apr 28, 2017 02:51
CTPAHHuK wrote: Thu Apr 27, 2017 21:29 В этой теме меня как математика, собственно, заинтересовал вот какой вопрос: твоя нулевая гипотеза о ненормальности распределения в героях 4 чем-то подкреплена?
Вопрос хороший. Подкреплена тем, что где-то кто-то о ненормальном распределении говорил, мол, выбирается просто случайное число из промежутка, каждое с равной вероятностью, умножается на Атаку, делится на Защиту жертвы -- вуаля, вычислили урон. Таким образом, одна сотня нейтралов с уроном 1-3, Атакой и Защитой по 10, ударит под другой такой же сотне либо на 100, либо на 200, либо на 300 урона, и всё.
Надеюсь, ты шутишь. Либо 100, либо 200, либо 300 - такого не бывает. Распределение, естественно, дискретное, но не с таким малым числом возможных значений. Если ты говоришь о равномерном распределении, то оно будет иметь полный спектр натуральных чисел от минимального до максимального. А оно действительно равномерное? Уверен, что генератор СВ не использует формулу Гаусса?
Baskakov_Dmitriy
Level 6 Hero
Level 6 Hero
Posts: 78
Joined: Thu Apr 20, 2017 04:10

Re: Шесть предложений по уменьшению Save/Load

Post by Baskakov_Dmitriy »

CTPAHHuK wrote: Fri Apr 28, 2017 18:14 Распределение, естественно, дискретное, но не с таким малым числом возможных значений.
Ну, так-то да. Сказать я хотел, скорее, что я считал вероятность любого из этих значений равной, и мне это не нравится. А время было позднее, и сказал я что-то совсем другое. :)
CTPAHHuK wrote: Fri Apr 28, 2017 18:14 А оно действительно равномерное? Уверен, что генератор СВ не использует формулу Гаусса?
Если там правда есть распределение Гаусса, хотелось бы эту формулу точно узнать, может быть, немного больше стабилизировать. По тому, что про рандомный урон писали, складывалось впечатление, что её таки нет.

Но это не главное из предложений. :)
#Разбуди_меня_в_3.51//#Единички_живут_один_день//#МореХитов//#F11248
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Re: Шесть предложений по уменьшению Save/Load

Post by CTPAHHuK »

Просто мысли об изменении распределения случайных величин возникали уже давно. Только пока мы не узнаем истинные законы, вложенные при программировании, упоминать об этих мыслях смысла очень мало.
Baskakov_Dmitriy
Level 6 Hero
Level 6 Hero
Posts: 78
Joined: Thu Apr 20, 2017 04:10

Re: Шесть предложений по уменьшению Save/Load

Post by Baskakov_Dmitriy »

CTPAHHuK wrote: Sat Apr 29, 2017 22:26 Просто мысли об изменении распределения случайных величин возникали уже давно. Только пока мы не узнаем истинные законы, вложенные при программировании, упоминать об этих мыслях смысла очень мало.
Я бы потестил.

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

Но, ещё раз, это не главное предложение, главное -- сознательный выбор навыков при левел-апе, посещении алтарей и вузов. К картостроителям -- выдавать двух героев, а не одного случайного.
#Разбуди_меня_в_3.51//#Единички_живут_один_день//#МореХитов//#F11248
Post Reply