Ответы в темах
-
АвторСообщения
-
KallistoУчастник
Даже если будет много продолжений хорошая оценочная функция поможет проге не заблудится в них.
В большинстве случаев, наверное, так. В случае если в процессе перебора возможно двинуть простые сильнейшей стороны или поставить новую дамку, то этим ходам естественно будет приоритет. Но если в течении 10-15 ходов идет борьба дамками «туда-сюда», то сложно сказать как оценочная функция поможет — иногда для выигрыша нужно дамки увести с большака чтоб разместить их черт знает где (и это единственный путь к кратчайшему выигрышу) .
Чаще всего необходимо максимально ухудшить расположение шашек противника, при этом не особо ухудшив расположение своих.
Т.е. тут оценочная функция должна помогать.Если есть класс позиций, где нужно проводить какие-то специфические маневры, то можно использовать специальную оценочную функцию в которой оценки подобраны так, чтобы прога могла продвигаться вперед.
Но я не считаю, что ради того , что может случится в ~0.01% партий стоит напрягаться.
KallistoУчастникПо-моему здесь явно переоценивают результаты маленьких турниров. Их не стоит принимать слишком всерьез.
В шахматах большинство уже поняло, что к результатам турниров где каждая прога сыграла по 500 (!!!) партий стоит относится осторожно.
Всерьез результаты можно воспринимать когда количество партий приближается к 1000. Но и тут следует учитывать погрешность, пусть и достаточно малую.Для пары же десятков партий погрешность очень велика. И составить представление о силе игры крайне сложно.
Конечно, если счет 19 — 1. То тут уже можно быть уверенным.
Но! 15 — 5 и тут уже вероятность, что вторая прога сильнее достаточно велика. И если хочется знать правду нужно проводить больше партий.KallistoУчастникЯ готов поделится своими «секретами». Но не всеми
Каллисто использует для представления доски массив из 45 элеметов.
А также два массива для белых и черных шашек (т.н. Piece Lists).Еще вопросы?
KallistoУчастникВсе, наверное, понимают, что быстрый генератор ходов позволит произвести перебор на максимальную глубину.
Все понимают что это не так 😆
На глубину перебора может влиять только очень медленный генератор (сделать такой не так просто).Считается, что если шахматный генератор будет выдавать все ходы мгновенно (!!!), то скорость программы возрастет максимум на 10%.
Это не более 5 очков рейтинга Эло. Что бы заметить такое усиление нужно проводить матч из более чем 10000 партий.Я не думаю, что в шашках ситуация значительно отличается.
Вообще, существует два основных подхода в реализации генераторов:
— доска представлена в виде массива
— доска представляется битовыми полями (битбордами BitBoard)У каждого подхода свои преимущества и недостатки. Причем, это относится не только к генератору ходов, но и к оценочной функции.
Современные сильнейшие проги используют оба подхода.
Каллисто — массив.
Тундра — битовые поля.Если кому-нибудь интересно могу рассказать об этих подходах более подробно.
KallistoУчастникЯ немного начал соображать относительно безранговых баз.
Кажется выиграть они НЕ помогут, так как в них НЕ указано
как следует играть. Однако они помогут НЕ проиграть, т.к.
программа перед тем как сходить может посмотреть,
а не проигрывающая ли позиция получается? И если ничейная,
то ходит. А вот выиграть не сможет, особенно, если
к выигрышу ведет несколько ходов, программа заблудится.
Т.о. надо в проигрышной позиции как это ни абсурдно
звучит, НЕ затруднять задачу программе, оставляя ей
единственное продолжение на выигрыш, а наоборот предоставить
несколько продолжений, где она и заблудится.
Поправьте меня если я не прав.
С уважением, Квадрат.В принципе, все правильно.
Но! Такие выигрышные позы, где прога не в состоянии выиграть самостоятельно в практических партиях встречаются очень редко. Так что это никак не отражается на силе игры.
Даже если будет много продолжений хорошая оценочная функция поможет проге не заблудится в них.Т.е. я считаю что использование безранговых баз вполне оправдано.
KallistoУчастник«Не знаю, какое лучше поставить время — 5 или 10 минут на партию? Будут ли результативные партии при контроле 10 минут? Полчаса уже точно ставить бессмысленно. Да и не потяну я столько.»
Дамира, к сожалению, пока понимает только контроль N секунд на ход.
Контроль «время на партию» легко приделать, если есть «врем на один ход».
Перед каждым ходом оставшееся время до конца партии делится на 20. Это и будет время на один ход.Вообще, контроль «врем на один ход» я считаю крайне вычурным.
KallistoУчастникМеня заинтересовала эта идея.
Я готов программировать движок. Но есть некоторые проблемы:
До сих пор я програмировал только на С/С++ (и немного Pascal).
Нет опыта программирования сетевых приложений. Но если кто-нибудь может посоветовать хорошую книгу по теме, то я готов начинать программировать движок.
Я даже готов работать за бесплатно. Для меня эта задача интересна сама по себе (т.к. я еще ничего такого не делал). За деньги было бы, конечно, приятнееЗнаю одного человека, который сделал игровой сервер для игры в точки. Может быть он поможет идеями.
Я даже готов все делать один. Но вряд ли у меня получится нарисовать красивую графику. Но, как-нибудь я смогу нарисовать.
Вообще внешняя сторона дела меня интересует гораздо меньше. Так что, будет лучше если найдется дизайнер.Пока я могу сделать:
— шашечный движок позволяющий играть в различные виды шашек
— почитать о сетевом программировании
— разобраться с поддержкой многоязыкового интерфейса (знаю людей, которые это уже делали).Потом можно приступать к написанию игрового сервера.
KallistoУчастникno text
-
АвторСообщения