Есть одна игра, и эта игра Chess Evolved Online.http://www.kongregate.com/games/TheGrandestine/chess-evolved-onlineМеня некоторое время мучит желание написать для нее бота, который будет способен предсказывать хотя бы несколько ходов вперед и выбирать оптимальный.Однако, есть две проблемы.1. В игре 92 фигуры, не считая 7 специальных. Каждая из стандартных фигур имеет четыре вариации. Две трети фигур обладают всякими специальными свойствами, от которых даже у живого игрока может начать болеть голова. Как-то:- Магические фигуры, такие как пиромант, лич, дриада и пингвин, не меняют своей позиции после атаки.- Пикинера можно атаковать большинством классических шахматных фигур, но если сделать это конем, то конь самоуничтожится. И это надо учитывать для всех фигур с неблокируемыми атаками как у коня. - Базовый зачарованный доспех ходит и атакует как король, но может заблокировать одну атаку с соседней клетки. Иными словами, если доспех оказывается рядом с королем, это практически всегда означает мат. На пикче улучшенный доспех.- Гаст может перемещаться на клетки, где были потеряны другие фигуры игрока. Еще он способен меняться местами с дружественными фигурами - что, например, позволяет слону поменять цветность и иногда создает странные вилки. Кроме того, гаст спокойно берет доспех, но исчезает после атаки на пикинера.- Минотавр после успешной атаки на чемпиона меняется местами с королем оппонента.- Наемник меняет цвет после атаки.И дальше в том же духе. Неужели все это придется симулировать и вбивать свойства каждой отдельной фигуры вручную? Ведь это получается даже не симуляция игры, а прямое переписывание ее целиком.2. Сложность просчетов. Допустим, бот знает, что делает каждая фигура и к каким последствиям приводит каждое его действие. Можно попытаться просчитать ходы перебором. Но проблема в том, что при переборе количество возможных ходов растет экспоненциально. Если считать, что у каждого игрока есть возможность совершить 50 ходов (на первом скриншоте 59 у белого и 47 у черного, так что это недалеко от истины), то уже после первого хода может быть 2500 вариантов событий, а после второго - 6250000, и всех их надо сравнивать друг с другом. На просчет даже двух ходов могут уйти минуты, и проблема в том, что в игре есть таймеры, которые не дают такой возможности. Правда, меня не покидает ощущение, что есть способ как-то отсекать совсем бестолковые ходы на каждой итерации, но невозможность предсказать ходы на достаточно долгий промежуток игры лишает всю затею смысла.
>>875647 (OP)> МинотаврШТА?! Что за ебаные телепортации? Наркомания какая-то, чесслово.Спасибо за тред, не слышал раньше про эти сео, интересно.
>>875659http://chess-evolved-online.wikia.com/wiki/MinotaurДа, это действительно очень контринтуитивная фигура. Когда я только начинал играть, я новайсом завалил какого-то мастера исключительно из-за миносвапа.>Что за ебаные телепортации?Неблокируемое перемещение. Как у коня, только без атаки.
>>875647 (OP)>от которых даже у живого игрока может начать болеть головаКак игра узнаёт о свойствах фигуры? Можно распознавание изображений какое-нибудь запустить, но мне ботовод по секрету сказал, что это крайне не эффективно. Лучше разбирать основы. Реверсить, например. Или из трафика эту информацию извлекать.>Неужели все это придется симулировать и вбивать свойства каждой отдельной фигуры вручнуюДа. А если в игре что-то изменят или добавят, придётся оперативно вносить правки.>не симуляция игры, а прямое переписывание ее целикомТак и есть. Ты же хочешь, чтобы компьютер играл за тебя. Нужно вбивать правила игры.>Сложность просчетовПеребором, каждому обсчитываемому ходу должно присваиваться что-то типа веса или очков, чтобы можно было выбрать лучший. Ты же не ИИ пишешь, нужно что-то упрощенное.>а после второго - 6250000Лучший ход на два хода вперёд - разве плохо? Времени на обсчёт должно хватить.>есть способ как-то отсекать совсем бестолковые ходы на каждой итерацииА исходников Deep Blue не утекало?
>>875647 (OP)https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D1%85%D0%BC%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80Ты почитай, оказывается всё уже изобретено.>Появилось много программ с открытыми кодами, в частности Crafty, Fruit и GNU Chess>Лучшие коммерческие и бесплатные программы, например, Shredder, Fritz или Komodo уже превысили уровень людей-чемпионов>Движок с открытым кодом Stockfish находится на высоких местах в таких компьютерных рейтинг-листахОсталось внести необходимые изменения и готов ИИ для твоего бота.
>>875676Ты оп-пост пробовал читать, нет?>>875664Контринтуитивная и в плане, ээ, сеттинга, или как это назвать... вообще не вижу связи между минотавром и телепортацией.Смотри, у тебя тут практически старкрафт получается, а там боты играют с полной информацией. Я сомневаюсь, что получится добиться хорошего результата без этого. Нейроночки тебе обучать не на чем. Мне кажется, что самым логичным будет попробовать найти какую-нибудь конкретную стратегию (мне сложно судить, какой именно она должна быть, так как я в эти сео не играл) и от нее отталкиваться. То есть не генерализованного бота писать, а такого, который всегда будет пытаться телепортнуть минотавра или что-то еще в таком духе.
>>875647 (OP)>Неужели все это придется симулировать и вбивать свойства каждой отдельной фигуры вручную? Ведь это получается даже не симуляция игры, а прямое переписывание ее целиком.Кек, да это как раз самое легкое в этой задаче. Сиди себе вбивай, не думая, да баги правь. А вот то что там ветвление дикое, это реально большая проблема.Тебе придется сужать поиск всевозможными эвристиками, отсекая как можно больше заведомо плохих ходов. Тут все сильно зависит от особенностей конкретной игры. Тебе надо сначала самому научиться прилично играть, чтобы понимать что хорошо, а что плохо.