MOCHET [7] 
30.09.2018 04:27
 0просмотров 8 0

Beyond simple card scoring. Part 3: Something or Nothing



Как представить себе игру в аркомаг? - Представьте себе, что вы любите экстрим - вы сидите верхом на велоспеде, у вас отказали тормоза и вы мчитесь по ужасно крутой каменнистой дороге вниз с большой горы. Попадаёте вы в морг или благополучно спуститесь вниз зависит конечно и от вашего скилла, но в данном случае всё же довольно сильно от самой дороги - как лежат камни и булыжники.



Something or Nothing

Почему "что-то или ничего" (something or nothing)? Когда я рассматривал различные идеи на создание ИИ для карт постоянно упирался в точку, где нужно рассчитывать какие-то вероятности - вероятность, что выйдет эта или иная карта, или не выйдет, вероятность,  что противник украдёт у меня ресурсы или разрушит шахту и так далее. При чём самое главное не какая именно вероятность 1% или 25% или 50%, а 0% или больше 0%. Проблема, что мы знаем крайне мало - мы лишь можем быть уверенны в тех картах, которые вышли и сидят в кулдауне, остальное покрыто туманом. Поэтому если есть например вероятность, что противник сможет победить через 3 хода и у него хватит на это ресурсов, то не важно какая именно вероятность, а важно именно, что она есть и больше нуля.




Доминирование и критичные точки

Что такое доминирование в картах? - Это значит, когда мы владеем критичной точкой у противника.

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

С преимуществом в ресурсах и предприятиях сложнее. Вообще насчёт ресурсов вопрос такой: Что лучше 1 монастырь и 40 маны или 5 монастырей и 0 маны? Чтобы догнать такое количество маны как в первом варианте, потребует довольно много ходов - через 8 ходов будет 40 маны во втором варианте, но в первом будет уже 48, т.е. сравняемся через 10 ходов. Точного ответа нет - можно сказать как и всегда "зависит от ситуации", но так это крайне не конкретно и в разработке ИИ никак не поможет, то будем поконкретнее и скажем, что зависит от башни (т.е. от того как планируем победить, в принципе и от победы через ресурсы тоже можно отталкиваться).



Тактика ИИ

Сильный эффект рандома мешает надолго вперёд планировать ходы. Эффективно можно планировать на 1...4 хода вперёд и то отталкиваясь на основании карт на руках. Поэтому о стратегии не может быть и речи, а скорее а тактике. Конечно можно оставлять определённые карты у себя на руках для дальнейших планов, но как я уже писал эффект рандома крайне сильный, поэтому придётся действовать здесь и сейчас (случайная выдача карт в начале - нет муллигана (возможность поменять карты) как в HearthStone, потом карты во время игры приходят случайно, нет своей колоды у каждого из игроков, поэтому если кому-либо пришла сильная карта, то ему крайне повезло).

Далее проблема в том, что слишком мало карт из категории "играем снова", а те которые есть крайне слабые и их эффекты можно практически нивеллировать на фоне более сильных карт наподобие карты "Глаз Дракона". Однако интересные и полезные комбинации всё же есть с ними.

Из этого следует, что требуется такой ИИ, который сможет продумывать максимально 1...4 хода вперёд. Более глубокие планировки не имеют смысла из-за рандома, а также и из-за малого количества карт на руках - резерв 6-7 карт. При большем количестве карт не имеет смысла просчитывать ходы дальше, т.к. поисковое дерево становится слишком глубоким и будет слишком много различных комбинаций - ИИ будет медленный.




Проблема комбинаций

Например у нас есть карта "Глаз Дракона" (стоимость: 21 маны, даёт +20 к башне). Теперь представим себе, что есть 3 одинаковые карты, которые стоят по 7 маны, и которые дают +7 к башне - в сумме будет примерно как "Глаз Дракона", назовём их карты A, B, C.

Карта "Глаз Дракона" занимает у нас 1 место на руках и появляется "целиком".

Теперь о картах A, B, C:
  1. Во-первых мы не может сыграть ими всеми за один ход (если они все были бы с дополнительным эффектом "играем снова", то было бы примерно как "Глаз Дракона").
  2. Во-вторых это три отдельные карты, которые могут занимать либо 3 места на руках с самого начала, либо будут приходить постепенно, т.е. придут может вообще только две из трёх.
  3. В-третьих так как нет доп. эффекта "играем снова" у них, то между нашими ходами будет ходить противник и может например украсть ману или разрушить монастыри, но это в принципе может и случится и с самой картой "Глаз Дракона".

Что я хочу этим примером сказать? - Нельзя сказать, что "Глаз Дракона" равен картам A, B, C в сумме - уже чисто из-за причин (1) и (2) описанных выше. Это говорит о том, что карты с сильным эффектом в принципе ценнее чем много мелких карт с мелкими эффектами.

Из этого следует:
  • Много мелких не могут 1:1 заменить одну большую карту
  • Мелкие должны быть выгоднее в плане соотношения силы эффекта и стоимости, чем большие карты, чтобы компенсировать проблемы описанные выше

Из этого следует далее, что если нет крупных карт, но есть мелкие, то следует использовать только самые выгодные карты в плане соотношения силы эффекта и стоимости. Такие выгодные карты можно посчитать через метод наименьших квадратов (least squares), после этого считаем разницу между настоящей ценой карты и теоретической (рассчитанной через этот метод), пусть это будет разница d.

Три карты A, B, C заменяли одну карту, т.е. d должен быть у каждой в три раза лучше чем у карта "Глаз Дракона". Но с умножением будут проблемы при нулевой разанице (карта полностью соответствует своей цене), поэтому лучше не умножать, а сказать, что нужен d_x = d + 1 (где x = A,B,C), т.е. на единицу лучше чем у карты "Глаз Дракона".

Примечание: Это не выведенно через какие-то формулы, а просто примерные рассчёты.




Карты на руках

Насчёт карт на руках следует отметить одну важную вещь - важно количество играемых карт. В принципе было бы не плохо, чтобы можно было играть любой картой на руках в этом ходу, т.е. хватало ресурсов на все карты на руках. Однако такой подход не дальновиден, т.к. сейчас у нас хватает ресурсов, а мы ходим какок-то картой или же противник ворует ресурсы и у нас заканчиваются ресурсы и становится практически нечем играть. В так случае можно разбить стоимость всех карт от самой дешёвой до самой дорогой на интерваллы и чтобы в каждом интервалле была карта у нас на руках.

Поэтому здесь нужен концепт похожий на концепт в игре HearthStone: mana curve. Однако не нужно относится к этому концепту буквально. В случае аркомага нужна не кривая, а нужно равномерное распределение стоимостей карт на руках, т.е. начиная от дешёвых и заканчивая дорогими. При таком подходе становится очевидно преимущество 7-ой карты в таверне.

Очевидная проблема при этом заключается в том, что у нас не один цвет у всех карт, а целых три. Это всё усложняет. Если у нас 6 карт на руках, то для каждого цвета остаётся по 2 слота.
Дополнительная проблема заключается в случайной выдаче карт - неизвестно какого цвета и какой стоимости попадёт следующая карта на руки. Карты мы можем примерно регулировать через сброс или игру лишних например с помощью карт "играем снова" или "сбросить карту, играем снова".
Регуляция стоимости и количества карт определённого цвета происходит в данном случае в зависимости от ситуации на столе - много маны, мало руды - нужны синие, много отрядов, мало маны - нужны зелёные.

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

Однако желания загадовать не получится. Что делать, если ресурсов мало? - Нужно копить. Вообще что значит "мало ресурсов"? Это значит, что время ожидания того момента, когда будет хватать на карту, т.е. количество ходов будет слишком большое. Насколько большое? - 1...4 хода планировки имеет смысл, значит максимальное время ожидания 4 хода. В этом случае конечно можно спорить, но мне лично кажется, что копить более 4 отдельных ходов не совсем правильно.

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



Итоги

В принципе теперь есть всё, чтобы собрать алгоритм планировки ходов и оценки карт.

Возможность комментировать доступна после регистрации