[Ответить в тред] Ответить в тред

15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!
30/09/16 - BREAKING NEWS ШОК АБУ ПРОДАЛСЯ МЭЙЛУ (на самом деле нет)



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 21 | 2 | 7
Назад Вниз Каталог Обновить

Аи в карточных играх. Аноним 15/09/16 Чтв 01:53:30  300343  
(95Кб, 799x500)
(1075Кб, 2876x1616)
Сел я тут писать миниигрулю по типу пвп пасьянса. Вообще правила почти полностью спизжены с карточной игры Ордонанс. Игрулю слепил меньше чем за час, и решил, что не плохо бы сделать бота. Уже второй день шатаю матстат и охуеваю от происходящего. Не думал, что написать аи для простенькой карточной игры окажется так сложно. Так что реквестирую литературу по этой теме.
Аноним 15/09/16 Чтв 02:28:22  300344
(85Кб, 600x445)
>>300343 (OP)
Если кому-то тоже интересно поломать голову, то вот правила: http://www.gamewar.ru/ordonans/game.htm

Бота кстати писал исходя из такой логики:
На руке у бота 4 карты, положить карту он может в один из 5 стеков. Получается нужно выбрать один из 20 вариантов(меньше, если какие-то стеки уже собраны), руководствуясь качеством этого варианта. За качество варианта взял функцию sum(f1^2+f2^2+...+fn^2), где n-количество стеков (5), а fi - разница между крутостью i-го стека игрока и крутостью i-го стека бота. Крутость стека высчитывал так:
высчитывается четырехмерный массив(по количеству типов войск), где каждый элемент это сумма всех войск соотвествующего типа + матожидание кол-ва оставшихся войск, например если в стеке стоят карточки с двумя первыми войсками, то это значение будет 2+30.5.
Вот полный пример:
в стеке лежат карты 1010 и 1110, получившийся массив будет выглядеть так:
[1+1+3
0.5, 0+1+30.5, 1+1+30.5, 0+0+3*0.5] = [3.5, 2.5, 3.5, 1.5].
Из этого массива находится та самая крутость стека по правилам игры (см. раздел "Войско и контроль над территориями"). И все бы хорошо, но когда я поиграл с ботом, то оказалось, что он не совсем туп, но все же не очень хороший игрок. Позже до меня дошло, что функция крутости стека не линейная и мое колдунство с матожиданием идет нахуй.

Если кто-то прочитал эту шизофазию и даже что-то понял, был бы рад услышать ваше мнение.
Аноним 15/09/16 Чтв 02:53:02  300348
Если для карточной игры есть алгоритм, который играет лучше человека за разумное время - на помойку такую игру. Т.к. уже через неделю после релиза будут godmode-боты.
Основной прием - сделать непросчитываемый геймплей, но дать АИ больше ресурсов. Или позволить ему читерить - знать карты оппонента, сид колоды.
Аноним 15/09/16 Чтв 03:16:51  300349
>>300348
Я пришел к выводу, что тут такой алгоритм нельзя написать. Если решать в лоб без всякой статистики, перебором, то на первом ходу придется совершать проход по дереву с >320^20 ветвями. Но все же хочется сделать бота, который приемлемо играл бы по правилам. Пока есть хитрый план построить для нелинейной функции крутости стека линейную регрессию, прогнать ее на тесте Чоу (тест на качество регрессии) и если результаты норм, применять ее к сделанной модели. Идеально такой бот не будет играть, но статистически должен быть не плох.
Аноним 15/09/16 Чтв 03:26:32  300350
>>300349
Главное, чтобы он играл хуже человека. Но тогда он иногда будет делать очень тупые ходы, т.к. эвристика не сможет учесть сложные стратегии.
Я долго думал, как поступить, и решил дать своему ИИ больше армии и сильнее скиллы.
Аноним 15/09/16 Чтв 05:21:41  300356
>>300350
Ну и нахуй такой баланс? Это как играть в шахматы, где у оппонента в 2 раза больше фигур и рубят они все фигуры в радиусе 1 клетки. Но при это двигает он их основываясь на игральных костях и лунном календаре.

Смысл в этом цирке рандома? Лучше вообще никаких чем такие.
Аноним 15/09/16 Чтв 05:26:34  300357
>>300350
>больше армии и сильнее скиллы
И сразу игра воспринимается как нечестная. Вот с какого одинаковые по механике скиллы у компа сильнее?
Аноним 15/09/16 Чтв 05:27:52  300358
>>300356
Так а что ты предлагаешь? Тут безвыходная ситуация. АИ играет лучше человека - будет замес ботов, играет хуже - будет эксплуатируем.
Во всех играх либо АИ читерит, либо играет очень плохо.
Аноним 15/09/16 Чтв 05:31:33  300360
>>300357
Так основа - это мультиплеер.
Стоит сказать - все что, я говорю, касается только мультиплеера. Если от фарминга АИ игрок получает игровую валюту, без читинга никак. Просто воспринимается это как босс.
Если же цель сделать синглплеер казуалочку, конечно, можно делать честный АИ с уровнями сложности. Даже если игрок напишет бота, он не будет ни на кого влиять.
Аноним 15/09/16 Чтв 05:40:45  300361
>>300358
Предлагаю не делать АИ вообще, кки - это игра для двух людей. Единственное зачем может быть нужен бот - потренироваться новичкам, а после освоения механики только для гринда голды. Так что боты в кки - зло, бустанутые - еще большее.
Аноним 15/09/16 Чтв 05:43:12  300362
>>300361
В хартстоне АИ очень сильно тупит. Но они все равно добавили компанию. Чисто пофаниться и получить карты. То есть их нельзя фармить.
Аноним 15/09/16 Чтв 05:53:37  300363
>>300362
>получить карты
>нельзя фармить
Убийство мобов ради ништячков - разве не фарм? Ну может конечно фарм подразумевает репетативность, но тут же тоже, чтобы catchthemall не одного бота надо побороть.
Аноним 15/09/16 Чтв 06:02:07  300364
>>300363
Чтобы против них сразиться, нужно купить пропуск за игровую валюту или реальные деньги. Фактически ты покупаешь карты. И больше одного прохождения тебе ничего не даст.
Аноним 15/09/16 Чтв 06:41:01  300367
>>300361
Удваиваю. Таки бота опа наверняка уже хватает для небольшой тренировки, а потом только в мультик или хотсит.
Аноним 15/09/16 Чтв 08:39:05  300372
Все ИИ для пошаговых игр имеют один принцип: перебор и оценка действий.
Аноним 15/09/16 Чтв 09:54:18  300375
>>300367
Дело в том, что эту карточную игру я использую как миниигру в другой сиглплеерной игре. И хотелось бы, чтобы бот давал нормальный отпор. А пока он делает только тех, кто до конца с правилами не разобрался и даунов-аутистов.
Аноним 15/09/16 Чтв 10:56:10  300381
>>300344
Короч, почитал правила и интуитивно кажется, что оптимальнее всего собирать по одному полку из (3?-)4-5 отрядов в каждый стек и докидывать в них мелочь (1-2-3) до батальонов и рот, в надежде что у игрока не выйдет собрать полк выше рангом или два полка скопом, а по мелочи он будет сасай. Можно раскидывать карты даже не глядя на ходы игрока.
И да, первые две карты в стек компа должны всегда быть ведомыми и с отрядом выше рангом чем у игрока.

Вот. А еще можно для каждого стека просто выбирать некоторую условно беспроигрышную комбинацию и ее собирать в меру сил.
Заранее загадывать что первому стеку собираю: полк-4отряда роту-3отряда батальон-2отряда
второму стеку собираю:
полк-5отряда роту-4отряда полк-1отряда
и т.п.
Не знаю насколько это тупо, но очевидно игрок может заметить, что комп его игнорит, лол.

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

ответил шизой на шизу
Аноним 15/09/16 Чтв 13:40:59  300399
>>300344
Не нужны никакие функции оценки игрока.

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

Для победы нужно захватить минимум три земли из пяти.
Самая лучшая стратегия игры: из пяти земель выбрать три "виновых" земли и подбирать туда сильнейшие карты, а в две оставшихся - "фейловых" сбрасывать слабейшие и неподходящие карты.

Могу в пример расчета одного хода, но мне лень.

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

>>300381
Шизик, лол.
Аноним 15/09/16 Чтв 13:58:43  300405
Monte Carlo tree search
Аноним 15/09/16 Чтв 14:26:06  300415
>>300399
Алсо, забыл сказать про веса стеков.
Как ты заметил не все стеки одинаково полезны, самые лучшие веса это общее кол-во отрядов в степени ранг формации.

Один отряд - 5^0
Рота - 5^1
Батальон - 5^2
Полк - 5^4

Такие веса дадут гарантию, что один больший стек всегда перевесит все слабешие в любом кол-ве. Т.е например один батальон всегда вперевесит 4 роты, и карта стекающая до него будет выгоднее чем до 4 рот.
Аноним 15/09/16 Чтв 20:12:21  300460
>>300399
>В этой игре критерий хорошего хода очень прост.
Каждая новая карта должна стекать как можно большее число отрядов на большую глубину.
Бляяяя... Точно. Спасибо.
>>300415
Но такая фигня не учитывает качество отряда, то есть вес стека 2403 будет таким же, как и у 0342 (0+01+15+125+1125 = 155). Если я правильно понял, о чем ты.
Аноним 15/09/16 Чтв 21:10:12  300467
>>300460
>такая фигня не учитывает качество отряда
Таки да, у каждого отряда тоже должен быть вес. И внезапно он не должен быть степеной зависимостью, чтобы не вытеснять меньшие комбинации.
Хватит обычной линейной (например 5-4-3-2-1), но над весами придется поколдовать.

Полная формула оценки хода картой = ценность стеков * ценность задействованых отрядов.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 21 | 2 | 7
Назад Вверх Каталог Обновить

Топ тредов
Избранное