Комментарии 17
Ждал больше вариантов.
каким образом мы будем представлять доску (т.е. позицию в шахматной игре)
Не нужно только приравнивать геометрию и топологию доски (клеток) и позицию!
3D шахматы на VICE News в 2017: https://www.youtube.com/watch?v=PqoD1Xkmwro.
Боюсь, Вы неправильно поняли концепцию bitboard. При этом подходе расположение фигур в стандартных шахматах представлено 12 64-битными числами: одно для всех белых пешек, одно для всех чёрных пешек, одно для всех белых коней и т.д. Это позволяет добится высокого паралеллизма, например находить все ходы слонов и ладей или все сдвоенные пешки за один проход, без циклов и ветвлений. У вас описывается явно другой способ. Кроме того, bitboard подход очень плохо масштабируется для досок произвольного размера.
Да, пожалуй так и есть, "bitboard" это термин только для строго специфического представления доски (такого, какой вы описали), а не вообще для каждого "сжатого" представления доски. Концепция понятна, в моей реализации намеренно делается упор в "человекочитаемый" код с циклами и ветвлениями за счет потери в скорости.
Кроме того, bitboard подход очень плохо масштабируется для досок произвольного размера.
Да, описанный подход совсем не будет работать для любой доски кроме 8x8 (которой повезло "влезть" в один int64).
Я поставил "стоимость" манна в 150 баллов (как полторы пешки).
Ошибка в оценке стоимости минимум в два раза. Удобно сравнивать эту фигуру с конем: обе фигуры — прыгуны (leapers), атакуют в общем случае 8 полей, причем близко к краю доски конь в этом аспекте проигрывает. Кроме того, в эндшпиле манн будет заметно сильнее коня: эффективней борется с пешками, лучше помогает проводить свои (манн + проходная пешка «обыгрывает» любую фигуру, в том числе ферзя), еще манн — матующая фигура (Кр+М против голого короля — выигрыш).
А можно попробовать мой вариант ?
Давным давно у меня в голове вертелась идея шахмат с неполной информацией. На доске видны только те клетки, на которые могут добраться твои фигуры. Все остальное скрыто "туманом войны". То есть в начале партии и черные и белые видят поле только до середины, не видя противника.
Или вышеприведенные алгоритмы не сработают для игры с неполной информацией ?
Такие? https://glukkazan.github.io/checkmate/dark-chess.htm
Да, в чистом виде минимаксные алгоритмы для таких игр не работают. Вероятно можно что-то придумать, но пока не придумал (и это наверняка будет вычислительно сложно). По ссылке выше, бот видит все фигуры.
Они самые. Приятно что не только мне в голову эта идея пришла)
Правда если бот всех видит, а ты нет - это априори не честно ...
Что делать, честного варианта пока не придумал. Кстати, вот здесь зелёным помечено то к чему удалось прикрутить модифицированный шахматный движок GarboChess (картинка кликабельная): https://glukkazan.github.io/chess.svg
Зашел попробовать, первую партию слил очень быстро. Начал искать варианты, но со второй партии стал ощущать, что бот, похоже, видит всю доску. Слишком "дерзкие" атаки. Еще очень сильно сбивает, когда "туман войны" появляется в твоих рядах. Головой я помню расположение, и знаю, что там ничего нет (во всяком случае в начале игры). Но очень сильно сбивает. В общем после еще ряда попыток устал, пошел дочитывать комментарий, и аж отлегло. Бот таки видит всю доску, и это многое объясняет. Много думал над разработкой бота для старкрфта, так вот там если самому простому боту включить "мапхак" - то он с легкостью выносит противников, которые гораздо сильнее его (впрочем, с людьми это работает ровно так же).
Ну шахматисты вас заругают за не самую верную корневую предпосылку: фиксированную ценность фигур. Конь и слон не будут равноценны в миттельшпиле и эндшпиле. К тому же стремление к средневзвешенной выгоде по очкам лишает шахматы комбинационного шарма (при недостаточной для подготовки ловушек глубине поиска).
Тем не менее, мне очень понравилось, к тому же мне и в голову не приходило, что в мире напридумывали настолько много видов шахмат. Забавно, наверное, сразу же ставить всю доску под бой слонами и ферзем откуда-то со стороны минус бесконечности)
очень интересно было почитать. А что если не объявлять силы, а просто объявлять кто как ходит, то тогда какой будет результат?
Тогда алгоритм не сможет оценить ценность фигур и будет разменивать их как попало. Получится игра с почти что случайными ходами. К сожалению, по одним возможным ходам сложновато оценить ценность фигуры.
Делаться должно скорее наоборот - на основе анализа разных партий можно определить стоимость фигур. На Habr есть статья на эту тему - https://habr.com/ru/post/254753/. Но там только для "классических" шахмат.
Добрый день. Спасибо за статью. Скажите, а вы взялись бы писать шахматные алгоритмы? И возможен ли разговор на эту тему?
Ну и мне показалось, что несколько недооценена была стоимость ракет — на ходу 20 чёрные могли спокойно вынести вместо слона вторую белую ракету и обезопасить себя. Не уверен, с чем это связано.
Скажите, а шахматы на цилиндрической (склеены 2 края) или торообразной (края склеены попарно) доске этот движок потянет?
Гексагональные шахматы?
А шахматы для троих игроков?
Программирование необычных шахмат