Текущий архив: 2011.11.13;
Скачать: CL | DM;
Вниз
Вариации шахмат. Какие не перечислены? Найти похожие ветки
← →
xayam © (2011-02-10 21:57) [40]
> Чем там дело закончилось с доменом?
как бы всё в сети написано http://www.nic.ru/whois/?domain=xn--80aa9azamq0a.xn--p1ai :)
← →
Mystic © (2011-02-11 14:37) [41]
> до фига фигур чего-то в этих такт.шахматах, а доска обычная.
> ..
Ну фигуры бросаются из резерва. Поскольку ценность фигуры в резерве обычно выше, то обычно в игре их не так уж и много :)
← →
xayam © (2011-02-11 15:16) [42]
> то обычно в игре их не так уж и много
ну да понятно. Просто есть идея постараться унифицировать все вариации. Насколько я понял все вариации можно свести к таким "переменным":
1) Начальная расстановка
2) Размер/тип доски
3) Типы фигур
4) Правила
5) ???
← →
Mystic © (2011-02-11 20:29) [43]
> Просто есть идея постараться унифицировать все вариации.
Мне не очень нравится такая идея. Лучше либа, которая упростит конкретную реализацию. А так вариантов много, все описать очень сложно. Ну и потом настройка конкретного варианта может по сложности занять времени даже больше, чем написание с нуля :)
← →
xayam © (2011-02-11 20:52) [44]
> Лучше либа, которая упростит конкретную реализацию. А так
> вариантов много, все описать очень сложно
без унификации может быть очень много проблем, как со скриптами, так и со структурой базы. В частности будет сложнее организовать общий поиск по всей базе, поскольку отсутствие унификации означает, что будет много таблиц, по которым нужно производить поиск, так как игр тоже видимо много больше чем два десятка, судя по сайту на который ты давал ссылку...
← →
xayam © (2011-02-27 10:52) [45]
> Mystic [43]
Хотя возможно мы оба правы: можно скомбинировать оба принципа, сгруппировав разные вариации и унифицировать не всё, а только в пределах группы...
← →
Mystic © (2011-02-27 11:30) [46]Непонятно, что сложного со структурой базы. Большой класс игр можно описать так: есть FEN --- строковая строка, которая описывает позицию. Есть некоторый PGN --- текст, который описывает всю игру. Есть очередь хода, время каждого из участников и результат. Еще есть что за игра. И для базы этого достаточно, так можно описать все игры, такие как сеги, сянци, го, шахматы. Но вот шведки уже не опишешь, так участвуют четыре игрока и уже надо четыре времени.
← →
xayam © (2011-02-27 12:08) [47]Ты предлагаешь хранить в базе все позиции в формате FEN, а партию в PGN ?
Это очень затратно. Как по памяти так и для поиска, если позиций много.
Вообще хотелось бы по возможности избавиться от строкового типа.
Большей частью пытаюсь сделать целый тип, а строковый для комментариев и т.д.
Хотя экспорт в текстовый FEN или PGN возможен из внутреннего представления.
← →
xayam © (2011-02-27 13:55) [48]
> (27.02.11 10:52) [45]
> (27.02.11 11:30) [46]
> (27.02.11 12:08) [47]
12:08 - 11:30 = 11:30 - 10:52 = 38 минут
:)
← →
xayam © (2011-02-27 14:01) [49]Или так:
27.02.11 10:52 = 27 + 2 + 11 + 10 + 52 = 102 = 1 + 2 = 3
27.02.11 11:30 = 27 + 2 + 11 + 11 + 30 = 81 = 8 + 1 = 9
27.02.11 12:08 = 27 + 2 + 11 + 12 + 8 = 60 = 6
Всё делится нацело на 3 :)
← →
xayam © (2011-02-27 18:11) [50]
> Mystic
mu.webest.net/prog/chess/
mu.webest.net/prog/chess/pieces3/bn.png
Такую вот интересную "ошибку" нашёл...
Знаешь что в списке ImproveNet есть шаблон вида */bn.* ???
Соответственно все ссылки с таким шаблоном при установленном Outpost"е с включённым (по умолчанию включено) ImproveNet
НЕ работают.
А я думал раньше почему черных коней не видно: на chess.com такая же фигня :)
← →
xayam © (2011-02-27 18:16) [51]хотя может быть про "по умолчанию" соврал но если включено то блокируется
← →
Mystic © (2011-02-28 12:30) [52]Во-первых, я не знаю, что такое ImproveNet.
Во-вторых, мне кажется, что ты немного путаешь задачи игрового сервера и задачу дебютной базы. На всех игровых серверах ситуация вполне типичная: есть экспорт партий в PGN. После чего ты добавляешь их в локальную базу и там уже делаешь поиск. Это всех устраивает, хотя бы потому, что на игровом сервере есть только партии, которые игрались на этом игровом сервере и нет других. Это очень удобно
Конечно, если тебе не жалко места, можно хранить FEN после каждого сделанного хода. Получим для какой-нить мегабазы (5 миллионов партий) 5M * 80 (среднее число полуходов в партии) * 25 (размер FEN-а) = 10 000M = 10G. Но это представление никак не поможет тебе, например, в поиске партий по пешечной структуре и соотношению материала. Опять же, весь этот поиск выполняется обычно локально.
Ну а целый тип вряд ли будет экономным. 64 клетки в массиве это 64 байта, тот же несжатый FEN. По сути строка. Если смотреть битовые маски, то получается одна занимает 8-байт, всего их надо 2xQRBNP = 10 (80 байт, еще больше даже без учета короля).
Остается придумывать что-то совсем нетривиальное, а зачем? Непонятно мне это :)
В любом случае по PGN получить набор FEN это тривиальная задача, причем, имхо, не первоочередная. Для начала вполне сойдет FEN + PGN. Нужна будет база + поиск, всегда можно добавить FEN на каждый ход в партии.
← →
MsGuns © (2011-02-28 18:17) [53]http://funnygifts.ru/originalnyj-podarok-alkogolnye-shaxmaty/
http://fomuvi.ru/flash-igry/nastolnye/originalnye-shaxmaty-cirondo.html
http://rndnet.ru/part-photop/originalnye-shahmaty
← →
Mystic © (2011-02-28 18:53) [54]Под алкогольные шахматы лучше соответствует:
http://pit.dirty.ru/dirty/1/2008/10/14/26540-122926-a931f12fe45a8efa674704ef3003ce4e.jpg
Больше тут:
http://www.pr.uz/prikol/2711
← →
xayam © (2011-02-28 23:39) [55]
> что-то совсем нетривиальное, а зачем?
<бредогенератор=on>
Вопрос всех вопросов.
Каждый отвечает на него сам.
У меня есть один ответ на всех.
Но у каждого есть свой и кого-то другого (в том числе и мой) не нужен.
Поэтому тебе достаточно своего, каким бы он ни был :)
<бредогенератор=off>
> я не знаю, что такое ImproveNet
не заморачивайся
> целый тип вряд ли будет экономным. 64 клетки в массиве это
> 64 байта, тот же несжатый FEN. По сути строка. Если смотреть
> битовые маски, то получается одна занимает 8-байт, всего
> их надо 2xQRBNP = 10 (80 байт, еще больше даже без учета
> короля).
Кстати вообще не предлагал хранить все позиции каждой партии.
Вроде достаточно начальной расстановки и изменения от неё.
← →
Mystic © (2011-03-01 15:19) [56]
> Кстати вообще не предлагал хранить все позиции каждой партии.
> Вроде достаточно начальной расстановки и изменения от неё.
Для поиска это неудобно (все равно надо все хода делать). Для того, чтобы воспроизвести партию достаточно на клиенте распарсить PGN. Для троекратного повторения позиции и какого-нить суперко надо все равно хранить все позиции, но достаточно только для текущих партии. Для пули это может быть оперативка, иначе большая нагрузка будет.
← →
xayam © (2011-03-02 01:57) [57]да, надо думать, а времени всё нет... Вообще если хранить иерархически связанные позиции (FEN или 64 байт целыми), то получится что позиция, встречающаяся несколько раз в разных партиях, будет сохранена только один раз (особенно много таких позиций вначале игры), что уменьшит расходы памяти по сравнения с принципом "без иерархии". К тому же поиск структуры определенного расположения пешек и т.д. явно упростится, так как, имея единый формат сохранения позиции вида "1-е поле_2-е поле_3-е поле_4-е поле_...", можно будет легко найти конкретную пешку с известной фиксированной координатой в этой строке для любого поля. Может бред сказал, но что-то тут есть... таксономия вроде опять :)
← →
TUser © (2011-03-02 07:53) [58]Придумал тут мысль: вики-шахматы. Участники проекта играют с компьютером, при этом могут указывать на его ошибки и вводить ему свои правила (в каком-то специальном формате, типа если на доске вот так, то ходи вот эдак). Система, соответствено, обучается. Есть такое?
← →
Гость (2011-03-02 08:19) [59]>> TUser © (02.03.11 07:53) [58]
на сколько знаю, так и было с первыми программами
Только их не ниже КМС учили(базы наполняли), а отсюда и дальше вывод,
что будет если каждый сможет вводить ход, а уровень учителя окажется невысок?
← →
TUser © (2011-03-02 08:54) [60]
> Только их не ниже КМС учили(базы наполняли), а отсюда и
> дальше вывод,
> что будет если каждый сможет вводить ход, а уровень учителя
> окажется невысок?
Ну и до сих пор, каспарова обыграла ппрограмма, которую какой-то гросс натаскивал. Эффект ламера может быть, с другой стороны массовость может сыграть в противоположную сторону. Ну и разумеется, рейтинги у участников какие-то, кто круче - того голос больше весит.
← →
xayam © (2011-03-02 10:29) [61]
> Mystic
> Для поиска это неудобно
Блин после двух часов выключил комп и тут пришла ещё одна "гениальная" мысль. Зачем делать одну базу и для игры в реалтайме, и для поиска, если эти две функции можно тупо разделить: файлы - для игры, база - для поиска.
Для игры.
Создаем файл и по-простому записываем в конец текущий ход или какие-то служебные команды, по сути файл является логом партии. Причем читать при загрузке весь файл вовсе не обязательно, можно только фиксированный небольшой кусок с конца (или максимум несколько таких кусков)...
Для поиска.
Иерархическая структура с сохраненными позициями в узлах. Памяти сожрёт прилично, но поиск должен быть по скорости приемлимым.
Связка между "Для игры" и "Для поиска".
Раз в сутки запускать крон, который сконвертирует логи партий в базу...
← →
xayam © (2011-03-03 12:23) [62]Кстати есть и другие преимущества такого подхода.
Во-первых, практически логи являются дополнительной резервной копией сыгранных партий.
Во-вторых, нагрузка на БД (и соотв. процессор) должна снизится.
В-третьих, время реакции при игре в режиме реального времени уменьшится, особенно если получится прикрутить html5 (websocket).
Но и тут есть проблемы.
Во-первых, формат логов нужно полностью разработать заранее.
До того как это всё начнёт работать под полной нагрузкой.
"Ошибки проектирования — самые сложные. Чем раньше они обнаружены, тем легче их исправить" (c).
Справедливости ради замечу, что в случае использования БД эта "проблема" тоже есть.
Более того, скорей всего такой формат уже есть, хотя сомневаюсь, что его слишком просто найти.
Поскольку специализированное решение имхо...
И, во-вторых, для отображения найденной партия нужен уникальный (и самое главное постоянный неменяющийся) ID.
По логиге ID всегда храниться/генерируется самой БД.
Но если вся партия будет в логах, то соответственно есть соблазн "затащить" туда и ID.
То есть, ID должно быть и в БД и в логах (при конвертации лог->БД ID будет использоваться как связка).
Отсюда нетрудно определить порядок действий при игре:
1) БД генерирует/сохраняет ID партии и всю заголовочную информацию о ней
2) ID записывается в начало лога партии первой строкой, затем время на игру и время старта и т.д. (вся заголовочная информация).
3) Следующими строками соответственно - ходы и любая служебная информация (очень быстро это должно проделываться через websocket).
4) Каждые сутки по крону проверяются завершенные партии и если такие найдены, то, используя записанные в лог ID, происходит загрузка лог->БД.
Причем структура БД должна быть оптимизирована под поиск (больше всего операций select - от пользователей, insert/update - от крона раз в сутки)...
← →
Гость (2011-03-03 14:06) [63]http://www.imageup.ru/img105/p1588359.jpg.html
задачка
← →
Mystic © (2011-03-03 14:58) [64]> Гость (03.03.11 14:06) [63]
[spoiler]Слабое превращение[/spoiler]
Если у нас пуля, то я пока немного не доверяю HTML5. И всякие файлы логов в этом случае будут лишней нагрузкой: позицию надо держать в памяти, а соединение не рвать. При контроле 1+0 обычно получается ход в секунду с учетом лага. Записывать партию в базу можно после ее окончания (зачем cron?), и тогда уже решать, то ли ее бить на отдельные FEN-ы + PGN, то ли простой PGN.
Опять же, решение по cron-у очень неудобно пользователям: я сыграл (наблюдал) клевую партию, и тут же хочу скачать ее PGN в свою базу. Зачем мне ждать сутки?
← →
Kerk © (2011-03-03 15:02) [65]
> Mystic © (03.03.11 14:58) [64]
А объясни такую штуку. Вот в описаниях шахматных движков регулярно видны вещи типа: "эта версия знает о превращении пешки в слона". А какой смысл? Что дает знание о превращении в слона, чего не дает ферзь? По-моему, превращения достаточно знать два - в ферзя и в коня.
← →
Mystic © (2011-03-03 15:08) [66]Для того, чтобы препятствовать патовым идеям, хорошая иллюстрация это этюд Сааведры (превращение в ладью).
Все слабые превращения есть в таком этюде Королькова:
http://www.chesspro.ru/_images/diags/2008/p2.gif
Выигрыш
← →
Kerk © (2011-03-03 15:12) [67]Да, про паты я и забыл :)
← →
Mystic © (2011-03-03 15:14) [68]Этюд, кстати, забавный.
← →
xayam © (2011-03-03 15:16) [69]
> Опять же, решение по cron-у очень неудобно пользователям:
> я сыграл (наблюдал) клевую партию, и тут же хочу скачать
> ее PGN в свою базу. Зачем мне ждать сутки?
ты не понял. Из логов можно и pgn сделать.
Через сутки имеется ввиду, что партии попадут в индекс для поиска.
Примерная схема http://pics.livejournal.com/xayam/pic/0000ra98
← →
Mystic © (2011-03-03 15:23) [70]Имхо, HTTP не самый лучший протокол для реализации игрового сервера. Если играть пулю, то надо все время держать соединение открытым. А также иметь возможность серверу сообщать клиенту о событиях.
← →
xayam © (2011-03-03 15:27) [71]
> Если играть пулю, то надо все время держать соединение открытым
это как раз и есть websocket, но для него нужна еще серверная поддержка помимо браузера... скоро доделаю и выложу книгу (по теме websocket там глава есть) на рутрекере позже смотри Лабберс html5
← →
Mystic © (2011-03-03 15:29) [72]Если сервер держит соединение открытым, зачем ему логи?
← →
xayam © (2011-03-03 15:33) [73]
> зачем ему логи?
в один небольшой файл проще записать, чем в большую бд, где индексы и т.д. Имхо.
← →
Mystic © (2011-03-03 15:33) [74]Зачем куда-то вообще писать?
← →
Гость (2011-03-03 15:35) [75]>> Mystic © (03.03.11 14:58) [64][spoiler]Слабое превращение[/spoiler]
верно
>> http://www.chesspro.ru/_images/diags/2008/p2.gif
Rd2 "бешенная ладья"
← →
xayam © (2011-03-03 15:35) [76]А зачем читать? :)
← →
Mystic © (2011-03-03 15:38) [77]> Гость (03.03.11 15:35) [75]
А где выигрыш?
1. Rd2 Kc1
дальше?
← →
Mystic © (2011-03-03 15:43) [78]> А зачем читать? :)
Я к тому, что позиция живет на сервере. Проще говоря, естьTPosition = record
...
end;
Сделан ход, тут же модифицируем переменную и посылаем ответ партнеру.
← →
xayam © (2011-03-03 15:51) [79]
> Mystic © (03.03.11 15:43) [78]
я не говорю, что это невозможно, я говорю, что мне это не нужно.
← →
xayam © (2011-03-03 15:55) [80]Кстати если бы здесь не "писали" то архивов dm.net тоже не было бы :)
Сейчас ты конечно скажешь, что ветки хотят читать другие позже, а не только те кто находятся на форуме в реальном времени (чат).
Но почему для шахматных партий не возникает такой же вопрос ? :)
Страницы: 1 2 3 4 вся ветка
Текущий архив: 2011.11.13;
Скачать: CL | DM;
Память: 0.65 MB
Время: 0.014 c