Как стать автором
Обновить

Комментарии 13

Отрадно видеть всё больше статей по AI для настольных игр на Хабре, но боюсь, что этим пунктом:
отсутствие состояния (то есть, алгоритм руководствуется только данными на текущий момент времени, проще говоря, ничего не запоминает (например, не «считает» вышедшие из игры карты).
вы обрубили себе все руки. На мой взгляд, суть качественного AI для «Дурака» на 90% состоит именно в подсчёте вышедших из игры карт.
Как мне кажется, это начальное допущение, чтобы на первых порах не переусложнять алгоритм
Да нет, в статье описана вполне адекватная эвристика, но есть повод двигаться дальше. Конечно, речь идёт не о подсматривании карт на руках игроков, а именно о подсчёте вышедших из игры. Собственно, я писал об этом.
Вот самое интересное, что играет-то довольно неплохо (опытным путем проверено, хотя и субъективная оценка) и безо всякого подсчета. Конечно, с подсчетом будет явно лучше, но цель конкретно статьи — показать что-то вроде простого примера псевдо-AI (во многих играх этого и достаточно, они ведь в первую очередь рассчитаны на казуальных пользователей, а не на заядлых геймеров).
Статья окончилась, едва начавшись…
Дурак — не покер. Если рассматривать классический подкидной дурак, иногда 4 шестёрки в конце могут быть на порядок круче двух тузов, и чего-то одномастного.

Самый верный алгоритм ИИ — это анализ вышедших карт из игры, и относительно этого выстраивать стратегию, с оценочными рисками. А уровень карт, особенно по очкам — не совсем удачный путь. Я попробую сыграть в вашу версию игры, и если со свой стратегией я её обыграю, значит это не орректный подход.
Пожалуйста, добавьте в игру сортировку карт по масти, и так чтобы козыри лежали слева. Играть просто невозможно.
Простым алгоритмом отслеживания того, что было в игре, какие карты ушли с лёгкостью обыграл соперника.
Имхо, наибольший интерес представляет дуэльный дурак, так как он позволяет наиболее точно оттачивать алгоритм.

Так же, обратите внимание на правила: можно ли отбивать в случайном порядке, или в порядке выкладывания? Моё мнение, что можно только в порядке выкладывания. Это достаточно большая разница в правилах.
Сортировка карт (по масти или по достоинству, по возрастанию или по убыванию) в игре есть, включается в настройках. Или что Вы имели в виду?

Вообще да, от порядка многое зависит. Пока реализовано только в порядке выкладывания.

К предыдущему: Согласен, что 4 шестерки могут быть круче, почему и сделаны все эти поправки и штрафы. Оценка _только_ по рангу самих карт бессмысленна.
Сортировка карт (по масти или по достоинству, по возрастанию или по убыванию) в игре есть, включается в настройках. Или что Вы имели в виду?


Видимо я пропустил, т.к. мне казалось, что это не опция, а само-собой разумеещеся должно быть.

Вообще, я много времени вынашивал алгоритм игры в дурака. У меня есть алгоритм моей игры, с которым я выигрываю у людей в 80% случаев. Основан на запомнинании карт и бережному отношению к козырям (я никогда не отбиываюсь козырями, без лишней нужды). Главная цель — накопить козырей. Т.е. конечно, если в начале игры у вас только шестёрка козырная на руках и всякая мелочь, нужно её слить любой ценой, чтобы обновить карты.

И стараюсь запоминать карты, вышедшие из игры. В принципе, взрослый здоровый человек вполне может запомнить все 36 карт. Поскольку я играю не часто, то как правило отслеживаю все «картинки» в обороте и все козыри (их девять штук).
Я б лучше какуюнть альфаго пытался адаптировать для дурака. Было бы круто
Альфаго в чистом виде не получится (как и Альфазеро и т.п.), потому что дурак, в отличие от шахмат и го — все-таки игра с неполной информацией. Но вообще — довольно интересная тема, в том числе и для исследования.
Давным-давно я такую игру писал для PSP. Вот она.
А алгоритм использовал вот какой:
Ляхов Александр Фёдорович
Тришин Илья Михайлович

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


Играло у меня не супер, но всё-таки играло. :)
В своё время тоже самое пытался реализовать 10-15 лет назад, потом периодически на тестировал разные алгоритмы.Например у меня компьютер игра 100, 1000 или больше случайных партий сам с собой (неизвестные карты игрока выставлялись по рандому). При игре случайных партий оценка делалась исходя их достоинства карт. Соотвественно где больше игрок выиграл, так и надо ходить. Если счёт примерно равный, надо ходить с картой меньшего достоинства(впрочем, это может и нереализовал).

Ещё я на дураке же отрабатывал примитивный алгоритм самообучения, где параметры типа UNBALANCED_HAND_PENALTY у автора статьи, но там что-то пошло не так.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации